Linuxpfad
Linuxpfad
Einführung
Zuerst sollte man den Begriff Linux näher erläutern, denn dieser wird doch häufig falsch genutzt. Mit Linux ist die Kernel von Linus Torwald gemeint und nicht eine Distribution. Was ist der Unterschied zwischen einer Distribution und der Linux Kernel ? Die Linux Kernel ist das Herzstück, sie enthält alle Treiber und Module für das ansprechen und verwalten der Hardware. So enthält diese z.B. Scheduler für CPU und Festplatte, Speichermanger und sogar Dateisysteme wie ext2. Eine Distribution ist z.B. RedHat Server, Fedora, Ubuntu, BSD, Gentoo, myOS, SLAX ... . Diese bieten auf den Kernel aufbauende und fertig vorgefertigte(teilweise vorkompiliert, vorkonfiguriert,gepatcht) Pakete. Die Distributionen unterscheiden sich in vielerlei hinsicht, einige wollen minimalistisch sein, andere wollen Windows von Microsoft nachäffen und andere wiederum bieten Serverlösungen an. Hinter Distributionen stecken oft Communities, einzelne Frickler oder im Falle von RedHat Server und Fedora größere Firmen. Fedora ist eine abspaltung vom ursprünglichem RedHat, welches sich in Fedora(Desktop System) und RedHat Server(Servers System) aufteilte. Fedora ist Offiziel ein eigenes Projekt und hat nichts mit der Firma RedHat zu tun. Diese Distributionen verwenden in der Regel unterschiedliche Packagemanagment Systeme(apt,emerge,...), unterschiedliche Bibliotheken und Desktop Systeme(xfc,gnome,kde,...). Eine der Goldenen Regeln der Distributionen ist "keine Packages, die nicht OpenSource sind" allerdings gibt es da 1-2 Distributionen die sich daran nicht halten und sich gerade deswegen viele zufriedene User erkämpfen konnte. Die rede ist hier von Ubuntu, welches binärtreiber für NV, ATI, WLan sowie einige Video,Bild und Ton Codecs mitliefert. Diese sind bei den anderen Distributionen nicht dabei und müssen von Hand installiert werden. Für Einsteiger ist dies oft schon zuviel erwartet und dann auch das ganze Rechtesystem mit root, usern und einiges mehr, Ubuntu hat in der richtung vieles vereinfacht und kann somit locken. Für erfahrende Linuxer ist Ubuntu mehr schlecht als recht, da diese dann einiges an Arbeit reinstecken müssen, um die Sicherheit und andere dinge wieder auf den Ursprünglichen Stand zurück zubiegen. Diese setzen dann je nach bedarf auf Distribution wie Fedora, Gentoo, Debian,... . Genug Worte über Distributionen, Kernel und Paketen.
Einstieg in die Linux programmierung
Als erstes braucht man eine Distribution, einige wurden oben schon genannt. Man sollten den Grafikkartentreiber von dem Kartenhersteller installiert haben. Mit dem Grafiktreiber haben wir nun die Möglichkeit unsere OpenGL Befehle auf der GPU auszuführen, wenn die Grafikkartentreiber nicht installiet sind, dann läuft alles automatisch in Mesa. Mesa ist ein Software Renderer, der eine volle OpenGL2.1 unterstützung auf der CPU realisiert. Wenn man OpenGL programmiert, dann greift man auf die OpenGL32.dll oder auf die libGL.so file zu, diese wrappen dann die Funktionen auf Mesa(unter Linux) oder auf den Hardwaretreiber vom Grafikhersteller(nvogl32.dll /usr/lib/ati/libGL.so). Wenn wir unter Linux programmieren, dann werden wir immer wieder auf den Buchstaben X oder auf X11 stossen, dieses ist der Desktop Manager. Er stellt uns Fenster, RenderContext, Pixelformat, Maus und andere dinge zur verfügung. In OpenGL gibt es wgl... für Windows basierte und glX... für X11(linux) basierte Befehle. Die wichtigsten X11 Befehle werde ich nun mal auflisten.
- XCreateSimpleWindow
- XDestroyWindow
- XMapWindow
- XCreateBitmapFromData
- XFreeCursor
- XCreatePixmapCursor
- XFreePixmap
- XChangeWindowAttributes
- XInternAtom
- XSetWMProtocols
- XStoreName
- XResizeWindow
- XFlush
- XMoveWindow
- XUndefineCursor
- XOpenDisplay
- XCloseDisplay
- XDefaultScreen
- XPending
- XNextEvent
- XGetAtomName
- XSync
Zum Start mit OpenGL unter X11 braucht man gerademal ein Bruchteil der augelisteten Funktionen.
Wenn man ein eigenen Cursor oder garkein Cursor haben will, die Auflösung veränder möchte, Fenster verschieben, auf einen der Displays positionieren will, Überschrift oder Ausmaße des Fenster ändern will, dann hat man bereit alle Funktionen.
Die Befehle befinden sich in den Units x,glx,xlib,xutil und xf86vmode, welche alle mit Freepascal mit ausgeliefert werden.
Da Delphi nur einen 32bit windows compiler hat, ist für Objekt Pascal entwickler Freepascal die beste Lösung für platformunabhängiges entwickeln. Für die C/C++ler gelten folgende Header includes <X11/Xlib.h>,<GL/glx.h> und <X11/extensions/xf86vmode.h>.
Nützliche Links: