# Linux C Programmierung Einstieg



## Grisu (24. Oktober 2002)

Hallo.
Folgendes:
Was würdet ihr mir empfehlen, wie ich mich in Linux Programmierung in C "einarbeiten" kann. Gibts irgendwelche besonders guten Bücher, Tuts etc.????
Thx Grisu


----------



## TeCe (24. Oktober 2002)

googlegooglegoo


----------



## Christian Fein (24. Oktober 2002)

Was willst du programmieren?

GUI Applikationen?
dann GTK oder Qt? oder auch CLX

System Applicationen?

Linux ist etwas komplexer in dem bereich als Windows.

Also KDE Programme / Gnome ? 
musst dich schon entscheiden und nochmal fragen x


----------



## Dario Linsky (24. Oktober 2002)

wenn du mit c anfangen willst, dann sollte ein einsteigerbuch eigentlich reichen. du musst ja nicht gleich grafische oberflächen für kde programmieren, auf der konsole ist das teilweise schon komplex genug.
die meisten guten bücher über c-programmierung gehen auch detailliert auf linux ein. c ist ja schliesslich in einer unix-umgebung entstanden und linux ist (fast) komplett in c geschrieben.
also gehören c und linux genauso zusammen, wie windows und bluescreens (blöder vergleich, ich weiss ). zu dem thema sollte man wirklich ausreichend informationen finden.


----------



## EaStErDoM (20. Juni 2005)

Hallo!

Ich will mich nun auch daran machen C++Programme auf Linux zu entwickkeln. Da ich mich mit wxPython schon einmal in eine Sackgasse manövriert habe, möcht ich diesmal vorher die dämlichen Fragen stellen die ich beim letzten Mal nicht gestellt habe - und es bereut habe:

1.) GTK und QT sind riesig, mit immens vielen Abhängigkeiten - ich nehme an, das das notwendig ist um Windows ähnliche grafische Oberflächen zu schaffen, dennoch: gibt es schlankere Alternativen, die den beiden Giganten KDE und GNOME das Wasser reichen können (ich meine nicht tkinter - das sieht furchtbar aus   )? Ich hätte gerne das das auf jedem Linux mit X läuft und nicht an KDE oder Gnome gebunden ist, es zahlt sich zum Beispiel aus meiner Sicht für jemanden der erpichter KDE verfechter ist und alle Gnome-Komponenten entfernt hat nicht aus für ein 5MB Programm von mir, die ganze GTK Umgebung zu installieren.

2.) Ich will natürlich das jemand der mein Programm verwendet dann so wenig wie möglich dazuinstalieren muss, wenn ich denke wieviele Möglichkeiten es schon unter Python gibt um GTK widgets zu verwenden, hoffe ich, jemand kann mir hier sagen was die großen Distros alle möglichst gemeinsam, drauf haben, das ihre C++ Apps mit GTK laufen, denn GTK werd ich nehmen wenn ihr mir keine Alternative nennen könnt.
Zusatzfrage:
gtkmm <-- das krieg ich bei google als erstes Suchergebnis, haben aber weder debian noch mandriva standardmäßig drauf. Womit sprech ich unter C++ also GTK an? Wäre as mit C simpler?

3.) Natürlich bitte ich um Verweise zu Tutorien, howtos, wikis - ich hoffe da sehr auf etwas auf Deutsch, damit bin ich schneller, aber sonst Englisch muss halt oft sein in dem Gebiet, ich weiß. Womöglich gibts da schon Leitfäden für Einstieger und so, wenn man googelt landet man bei so vielen verschiedenen Varianten - schon bei Python - und C++ ist wie ich das sehe immens größer, ich erwarte da noch mehr sackgassen daher dieser komische Post^^.

mfg


----------



## deepthroat (20. Juni 2005)

Also wenn ich deine Beschreibung und Anforderungen so höre, klingt das ziemlich nach dem FOX Toolkit oder FLTK. 

Sieht beides einigermaßen gut aus, ist schlank, man kann Programme damit ohne weitere Probleme statisch kompilieren (soweit ich weiß) so das der Endbenutzer nichts mehr extra installieren muss und es läuft nicht nur unter Linux sondern auch auf zig anderen Plattformen, darunter auch MS Windows.

Zu C++ mit GTK+. Da würd ich dir dann doch gtkmm empfehlen, das ist eigentlich ziemlich gut obwohl ich mit den letzten Versionen noch nicht gearbeitet habe. Alternativ könntest du auch Xfce oder VDK  verwenden. Zu VDK gibt's übrigens auch noch eine Entwicklungsumgebung a la Borland Delphi die sich VDKBuilder nennt.

Ansonsten wäre es auch ohne weiteres möglich GTK+ direkt mit C++ zu verwenden, also ohne zusätzlichen Wrapper.


----------



## EaStErDoM (20. Juni 2005)

Die Screenshots vom Fox gefallen mir, werds mal gleich damit versuchen.

Danke, kennst du selbst dich damit aus?


----------



## deepthroat (20. Juni 2005)

Nee, kenne mich damit nicht aus. Ich benutze nur ab und zu xfe (X File Explorer) welcher mit FOX geschrieben ist.


----------



## EaStErDoM (20. Juni 2005)

Dann hoffe ich du kannst mir bei dieser Fehlermeldung weiterhelfen, denn wenn nicht explizit da steht was nicht funktioniert, fang ich damit nichts an: (Endresultat von make), bei configure hat er auch ein paar Warnungen angezeigt das er irgendwelche .h dateien von X zwar findet aber nciht kompilieren kann, was ich sehr merkwürdig finde weil die Distro (Mandrake 10.2) mit X keine Probleme hat.


```
FXGLCone.cpp: In member function `virtual void FX::FXGLCone::drawshape(FX::FXGLViewer*)':
FXGLCone.cpp:111: error: `GLUquadric' undeclared (first use this function)
FXGLCone.cpp:111: error: (Each undeclared identifier is reported only once for each function it appears in.)
FXGLCone.cpp:111: error: `quad' undeclared (first use this function)
FXGLCone.cpp:111: error: `gluNewQuadric' undeclared (first use this function)
FXGLCone.cpp:112: error: `GLU_FILL' undeclared (first use this function)
FXGLCone.cpp:112: error: `gluQuadricDrawStyle' undeclared (first use this function)
FXGLCone.cpp:119: error: `gluCylinder' undeclared (first use this function)
FXGLCone.cpp:120: error: `GLU_INSIDE' undeclared (first use this function)
FXGLCone.cpp:120: error: `gluQuadricOrientation' undeclared (first use this function)
FXGLCone.cpp:121: error: `gluDisk' undeclared (first use this function)
FXGLCone.cpp:122: error: `gluDeleteQuadric' undeclared (first use this function)
make[1]: *** [FXGLCone.lo] Fehler 1
make[1]: Leaving directory `/home/easterdom/Desktop/fox-1.5.4/src'
make: *** [all-recursive] Fehler 1
```


----------



## TeCe (21. Juni 2005)

Öhm..ich kann mich ja irren...aber fehlen dir zufällig die openGL-Bibliotheken?
Ich code eigentlich nur unter MS-Systemen. Aber der scheint ja ausschliesslich nur an den GL-Funktionen was zu meckern zu haben.
Eine weitere gute, zukunftsorientierte Lösung für deine Fragestellung ist ganz sicher das Mono-Projekt.
Das bietet dir die ganzen libraries um .NET-Basierten code zu schreiben und dazu kommt noch das TAO-Framework, über das du schicke managed OpenGL-Anwendungen schreiben kannst. Hab vor kurzem versucht mir mono auf mein Debian-System zu installieren - aber leider keine schicke IDE gefunden bzw. das im Paket enthaltene monodevelop zu starten.
Weiss nicht ob das was für dich ist...besonders im Hinblick auf C/C++.


----------



## deepthroat (21. Juni 2005)

Ja, du scheinst wirklich kein OpenGL/Mesa installiert zu haben bzw. hast die Header Dateien in einem Nicht-Standard-Verzeichnis installiert.

Wenn du kein OpenGL brauchst, kannst du das auch abschalten, indem du 
	
	
	



```
./configure --disable-opengl
```
  zum konfigurieren verwendest.


----------



## EaStErDoM (21. Juni 2005)

OpenGL is das zum zeichnen oder? Glaub nicht das ich das jetzt am Anfang schon brauch.


----------



## Java/CppProgrammer (21. Juni 2005)

Das ist genau das was du suchst: 

http://www.pronix.de


----------



## deepthroat (21. Juni 2005)

EaStErDoM hat gesagt.:
			
		

> OpenGL is das zum zeichnen oder? Glaub nicht das ich das jetzt am Anfang schon brauch.


Ja, das ist für 3D Grafik-Anwendungen. Normal braucht man das erstmal nicht.


----------



## TeCe (21. Juni 2005)

Ich glaube wir schweifen immer weiter ab 
Also du hattest nicht vor mit openGL(3D-Krams) zu programmieren, aber möchtest gerne mit grafischen Oberflächen(GUI) arbeiten.
Tja...dann solltest du entweder bei Fox bleiben und gucken wie du unnötige Referenzen aus deinen Projekten kriegst oder aber nimmst meinen Tip und versuchst dein Glück mit Mono, dass zwar(glaube ich) zusätliche Bibliotheken braucht, dafür aber nahezu Platformunabhängig ist.


----------



## EaStErDoM (21. Juni 2005)

=> Die Pronix Seite gefällt mir gut. Werd mich am Wochenende damit auseinandersetzen.

=>Mono klingt für mich nach sowas wie Python wo der Benutzer die Umgebung dafür installiert haben muss damits was bringt. -- Werd ich noch genauer ansehen.

=> Oi, von Programmen mit 3D Grafik-Funktionen bin ich noch kilometerweit entfernt^^

Werd mich gleich am Abend da ran setzen, herzlichen Dank an alle.

Hab jetzt ./configure --disable-opengl gemacht, es kommt aber immernoch derselber Fehlerblock. Beim config sagt er übrigens nach soclche sachen:


```
configure: WARNING: X11/extensions/XShm.h: present but cannot be compiled
configure: WARNING: X11/extensions/XShm.h:     check for missing prerequisite headers?
configure: WARNING: X11/extensions/XShm.h: see the Autoconf documentation
configure: WARNING: X11/extensions/XShm.h:     section "Present But Cannot Be Compiled"
configure: WARNING: X11/extensions/XShm.h: proceeding with the preprocessor's result
configure: WARNING: X11/extensions/XShm.h: in the future, the compiler will take precedence
configure: WARNING:     ## ------------------------------------------ ##
configure: WARNING:     ## Report this to the AC_PACKAGE_NAME lists.  ##
configure: WARNING:     ## ------------------------------------------ ##

checking X11/Xcursor/Xcursor.h usability... no
checking X11/Xcursor/Xcursor.h presence... yes
configure: WARNING: X11/Xcursor/Xcursor.h: present but cannot be compiled
configure: WARNING: X11/Xcursor/Xcursor.h:     check for missing prerequisite headers?
configure: WARNING: X11/Xcursor/Xcursor.h: see the Autoconf documentation
configure: WARNING: X11/Xcursor/Xcursor.h:     section "Present But Cannot Be Compiled"
configure: WARNING: X11/Xcursor/Xcursor.h: proceeding with the preprocessor's result
configure: WARNING: X11/Xcursor/Xcursor.h: in the future, the compiler will take precedence
configure: WARNING:     ## ------------------------------------------ ##
configure: WARNING:     ## Report this to the AC_PACKAGE_NAME lists.  ##
configure: WARNING:     ## ------------------------------------------ ##
checking for X11/Xcursor/Xcursor.h... yes

checking X11/extensions/Xrandr.h usability... no
checking X11/extensions/Xrandr.h presence... yes
configure: WARNING: X11/extensions/Xrandr.h: present but cannot be compiled
configure: WARNING: X11/extensions/Xrandr.h:     check for missing prerequisite headers?
configure: WARNING: X11/extensions/Xrandr.h: see the Autoconf documentation
configure: WARNING: X11/extensions/Xrandr.h:     section "Present But Cannot Be Compiled"
configure: WARNING: X11/extensions/Xrandr.h: proceeding with the preprocessor's result
configure: WARNING: X11/extensions/Xrandr.h: in the future, the compiler will take precedence
configure: WARNING:     ## ------------------------------------------ ##
configure: WARNING:     ## Report this to the AC_PACKAGE_NAME lists.  ##
configure: WARNING:     ## ------------------------------------------ ##
```


----------



## deepthroat (21. Juni 2005)

Die Meldungen von configure haben erstmal so nix zu sagen. Aber warum nimmste denn eigentlich die unfertige Development-Version von FOX   ... da können solche Dinge eben mal passieren und wenn man sich nicht auskennt, kriegt man Probleme. Die neueste (fertige) Version von FOX ist die 1.4.16 welche am 11. Juni rausgekommen ist.

Ich hab mir gerade mal die 1.5.4 gezogen und in der INSTALL (die man übrigens immer lesen sollte wenn man ein Tarball kompilieren will) steht, das wenn man ohne OpenGL-Unterstützung kompilieren will, beim Konfigurieren nun 
	
	
	



```
./configure --with-opengl=no
```
 verwenden muss (im Gegensatz zu der Aussage auf der Homepage (http://www.fox-toolkit.org/install.html), wo noch das steht was ich vorher geschrieben hab). Das gilt übrigens auch für die Version 1.4.16.


----------



## EaStErDoM (21. Juni 2005)

Ja, so wars eine Fehlerfreie Installation (bis auf die drei im config halt).

Naja, ich kompilier ja eher selten, werd das nächste Mal brav die install lesen^^ das devel hab ich jetzt erst überrissen wo du das erwähnt hast, hab irgendwie mit nem Trichterblick einfach nur die neueste Version gesucht und nicht weiter nach gedacht - was ich sonst aber eigentlich nicht tue - um di zu beruign^^.

Dann mach ich mich mal an die Fox Doku, dankeschön^^.


----------



## EaStErDoM (22. Juni 2005)

Das blöde an diesem Fox ist halt das es nur die Tutorien der Community gibt. Sonst find ich nix, und dieses simple window tutorial lässt schon mal nicht erkennen wohin in die Main.app die letzten paar Zeilen sollen. Weiß nicht wo ich da einsteigen soll wenn ich nirgendwo mal die simple Struktur zu sehen kriege.


----------



## deepthroat (22. Juni 2005)

Schau dir doch einfach mal die Beispielprogramme im fox-1.x.x/test Verzeichnis an. hello.cpp ist wohl das einfachste davon. Vielleicht kannst du ja eins von denen nehmen und für deine Zwecke erweitern?! Dann gibt es ja auch noch die etwas umfangreicheren Beispiele wie z.B. den Calculator. Ansonsten muß ich dir wohl recht geben, die Dokumentation ist etwas mager.


----------



## EaStErDoM (22. Juni 2005)

Das mit dem test Verzeichnis war ein echt heißer Tipp! Da sind voll viele beispiele drin, Dankö^^.


----------

