Linuxpfad: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Einstieg in die Linux programmierung: Die gröbsten sprachpatzer entfernt)
(Den Namen von Linus Torvalds falsch zu schreiben grenzt ja schon an Ketzerei ;))
 
(6 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Linuxpfad=
+
=Einführung=
 +
Zuerst sollte man den Begriff Linux näher erläutern, denn dieser wird doch häufig falsch genutzt.
 +
Mit Linux ist der Kernel von Linus Torvalds gemeint und nicht eine Distribution.
  
==Einführung==
+
 
Zuerst sollte man den Begriff Linux näher erläutern, denn dieser wird doch häufig falsch genutzt.
+
==Was ist der Unterschied zwischen einer Distribution und dem Linux-Kernel?==
Mit Linux ist die Kernel von Linus Torwald gemeint und nicht eine Distribution.
+
 
Was ist der Unterschied zwischen einer Distribution und der Linux Kernel ?
+
Der Linux-Kernel ist das Herzstück, er enthält alle Treiber und Module für das Ansprechen und Verwalten der Hardware.
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 dieser z.B. Scheduler für CPU und Festplatte, Speichermanager und sogar Dateisysteme wie ext2.
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 ... .
 
Eine Distribution ist z.B. RedHat Server, Fedora, Ubuntu, BSD, Gentoo, myOS, SLAX ... .
Diese bieten auf den Kernel aufbauende und vorgefertigte(teilweise vorkompiliert, vorkonfiguriert,gepatcht) Pakete.
+
Diese bieten auf den Kernel aufbauende und vorgefertigte (teilweise vorkompiliert, vorkonfiguriert, gepatchte) 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.
+
Die Distributionen unterscheiden sich in vielerlei Hinsicht, einige wollen minimalistisch sein, andere wollen Windows von Microsoft nachahmen 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.
+
Hinter Distributionen stecken oft Communities, einzelne Leute 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.
+
Diese Distributionen verwenden in der Regel unterschiedliche Packetmanagmentsysteme(apt, emerge,...), unterschiedliche Bibliotheken und Desktop Systeme (xfc, gnome, kde, ...).
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,...).
+
== Exkursion: Welche Distribution für wenn? ==
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.  
+
Für viele Distributionen ist die wichtigste Regel nur Opensource-Pakete zu enthalten um den Geist von Opensource zu wahren. Andere wie z.B. Ubuntu halten es mit dieser Regel nicht so genau und liefern Binärtreiber von z.B. Nvidia oder ATI mit. Diese sind bei den anderen Distributionen nicht dabei und müssen von Hand installiert werden.
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 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 das System an ihre Wünsche anzupassen.
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,... .
Diese setzen dann je nach bedarf auf Distribution wie Fedora, Gentoo, Debian,... .
+
 
Genug Worte über Distributionen, Kernel und Paketen, wer noch mehr wissen will, der kann man in [http://karmarama.developer-alliance.org/?site=artikel diesem] Link schauen und sich über die Suchmachine des Vertrauens weiter schlau machen.
+
Genug Worte über Distributionen, Kernel und Paketen, wer noch mehr wissen will, der kann [http://karmarama.developer-alliance.org/?site=artikel diesem] Link folgen und sich über die Suchmaschine des Vertrauens weiter schlau machen.
 +
 
 +
=Einstieg in die Linuxprogrammierung=
 +
An dieser Stelle wird erwartet, dass die Distribution der Wahl sowie den entsprechenden Grafikkartentreiber installiert ist. Wenn letzterer nicht installiert ist, läuft OpenGL automatisch unter Mesa.
 +
Mesa ist ein Software Renderer, der eine volle OpenGL 3.0 Unterstützung auf der CPU realisiert.
 +
 
 +
Wenn man OpenGL programmiert, dann lädt man die Funktionen aus der OpenGL32.dll (Windows) oder aus der libGL.so (Linux). Diese sind jedoch nur Wrapper, die auf die entsprechenden Funktionen in Mesa oder aus dem Hardwaretreiber (z.B. nvogl32.dll, /usr/lib/ati/libGL.so) zeigt.
 +
Wenn wir unter Linux programmieren, dann werden wir immer wieder auf den Buchstaben X oder auf X11 stossen. X steht hier für den Desktop Manager, das X-Window-System. 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.
 +
 
 +
{{Hinweis|Siehe [[GLX]]}}
  
==Einstieg in die Linux programmierung==
 
Als Erstes braucht man eine Distribution, einige wurden oben schon genannt.
 
Man sollten den Grafikkartentreiber vom jeweiligen 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 OpenGL 2.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. X steht hier für den Desktop Manager, das X-Window-System.
 
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 sind:
 
Die wichtigsten X11 Befehle sind:
 
*[[glXChooseVisual]]
 
*[[glXChooseVisual]]
Zeile 37: Zeile 39:
 
*[[glXMakeCurrent]]
 
*[[glXMakeCurrent]]
 
*[[glXSwapBuffers]]
 
*[[glXSwapBuffers]]
<br>
+
 
 +
 
 
*[[XCreateSimpleWindow]]
 
*[[XCreateSimpleWindow]]
 
*[[XDestroyWindow]]
 
*[[XDestroyWindow]]
Zeile 60: Zeile 63:
 
*[[XGetAtomName]]
 
*[[XGetAtomName]]
 
*[[XSync]]
 
*[[XSync]]
<br>
+
 
 +
 
 +
 
 
*[[XF86VidModeSwitchToMode]]
 
*[[XF86VidModeSwitchToMode]]
 
*[[XF86VidModeSetViewPort]]
 
*[[XF86VidModeSetViewPort]]
Zeile 66: Zeile 71:
  
 
Zum Start mit OpenGL unter X11 braucht man gerademal einen Bruchteil der aufgelisteten Funktionen.
 
Zum Start mit OpenGL unter X11 braucht man gerademal einen Bruchteil der aufgelisteten Funktionen.
Wenn man einen eigenen Cursor oder garkeinen Cursor haben will, die Auflösung verändern möchte, Fenster positionieren, auf einen der Displays verschieben oder die Überschrift und Ausmaße des Fenster ändern will, dann hat man bereits alle Funktionen.
+
Wenn man einen eigenen Cursor oder gar keinen Cursor haben will, die Auflösung verändern möchte, Fenster positionieren, auf einen der Displays verschieben oder die Überschrift und Ausmaße des Fenster ändern will, dann hat man bereits alle Funktionen.
Die Befehle befinden sich in den Units x,glx,xlib,xutil und xf86vmode, welche alle mit Freepascal ausgeliefert werden.
+
Die Befehle befinden sich in den Units x, glx, xlib, xutil und xf86vmode, welche alle mit Freepascal ausgeliefert werden. Delphi selber läuft nur unter Windows, Kylix (der Linuxcompiler von Borland) wurde eingestellt und ist veraltet. Somit ist für plattformunabhängige Entwicklung darauf zu achten, dass der Code auch mit den Freepascal-Compiler (im Delphimodus) kompiliert. Für die C/C++ler gelten folgende Header: includes <X11/Xlib.h>,<GL/glx.h> und <X11/extensions/xf86vmode.h>.
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>.<br>
+
 
<br>
+
Lazarus bietet für die plattformübergreifende Verwendung von OpenGL eine Komponente "TOpenGLContext" an, die sich um die Initialisierung eines OpenGL-Kontexts kümmert.
Nützliche Links:
+
 
 +
=Nützliche Links=
 
*[http://www.xfree86.org/current/manindex3.html Manual für C/C++]
 
*[http://www.xfree86.org/current/manindex3.html Manual für C/C++]
 
*[http://www.freepascal.org/docs-html/packages/opengl/glx/index-6.html glX für FPC]
 
*[http://www.freepascal.org/docs-html/packages/opengl/glx/index-6.html glX für FPC]
Zeile 76: Zeile 82:
 
*[https://svn.linuxprofessionals.org/filedetails.php?repname=karmarama&path=%2Ftrunk%2Fsrc%2Flinux%2Fkar_x11.cpp kar_x11.cpp]
 
*[https://svn.linuxprofessionals.org/filedetails.php?repname=karmarama&path=%2Ftrunk%2Fsrc%2Flinux%2Fkar_x11.cpp kar_x11.cpp]
 
*[https://svn.linuxprofessionals.org/filedetails.php?repname=karmarama&path=%2Ftrunk%2Finclude%2Flinux%2Fkar_x11.hpp kar_x11.hpp]
 
*[https://svn.linuxprofessionals.org/filedetails.php?repname=karmarama&path=%2Ftrunk%2Finclude%2Flinux%2Fkar_x11.hpp kar_x11.hpp]
 +
 +
[[Kategorie:Trampelpfad]]

Aktuelle Version vom 5. März 2011, 14:00 Uhr

Einführung

Zuerst sollte man den Begriff Linux näher erläutern, denn dieser wird doch häufig falsch genutzt. Mit Linux ist der Kernel von Linus Torvalds gemeint und nicht eine Distribution.


Was ist der Unterschied zwischen einer Distribution und dem Linux-Kernel?

Der Linux-Kernel ist das Herzstück, er enthält alle Treiber und Module für das Ansprechen und Verwalten der Hardware. So enthält dieser z.B. Scheduler für CPU und Festplatte, Speichermanager 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 vorgefertigte (teilweise vorkompiliert, vorkonfiguriert, gepatchte) Pakete. Die Distributionen unterscheiden sich in vielerlei Hinsicht, einige wollen minimalistisch sein, andere wollen Windows von Microsoft nachahmen und andere wiederum bieten Serverlösungen an. Hinter Distributionen stecken oft Communities, einzelne Leute oder im Falle von RedHat Server und Fedora größere Firmen. Diese Distributionen verwenden in der Regel unterschiedliche Packetmanagmentsysteme(apt, emerge,...), unterschiedliche Bibliotheken und Desktop Systeme (xfc, gnome, kde, ...).

Exkursion: Welche Distribution für wenn?

Für viele Distributionen ist die wichtigste Regel nur Opensource-Pakete zu enthalten um den Geist von Opensource zu wahren. Andere wie z.B. Ubuntu halten es mit dieser Regel nicht so genau und liefern Binärtreiber von z.B. Nvidia oder ATI mit. 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 das System an ihre Wünsche anzupassen. Diese setzen dann je nach Bedarf auf Distribution wie Fedora, Gentoo, Debian,... .

Genug Worte über Distributionen, Kernel und Paketen, wer noch mehr wissen will, der kann diesem Link folgen und sich über die Suchmaschine des Vertrauens weiter schlau machen.

Einstieg in die Linuxprogrammierung

An dieser Stelle wird erwartet, dass die Distribution der Wahl sowie den entsprechenden Grafikkartentreiber installiert ist. Wenn letzterer nicht installiert ist, läuft OpenGL automatisch unter Mesa. Mesa ist ein Software Renderer, der eine volle OpenGL 3.0 Unterstützung auf der CPU realisiert.

Wenn man OpenGL programmiert, dann lädt man die Funktionen aus der OpenGL32.dll (Windows) oder aus der libGL.so (Linux). Diese sind jedoch nur Wrapper, die auf die entsprechenden Funktionen in Mesa oder aus dem Hardwaretreiber (z.B. nvogl32.dll, /usr/lib/ati/libGL.so) zeigt. Wenn wir unter Linux programmieren, dann werden wir immer wieder auf den Buchstaben X oder auf X11 stossen. X steht hier für den Desktop Manager, das X-Window-System. 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.

Info DGL.png Siehe GLX

Die wichtigsten X11 Befehle sind:



Zum Start mit OpenGL unter X11 braucht man gerademal einen Bruchteil der aufgelisteten Funktionen. Wenn man einen eigenen Cursor oder gar keinen Cursor haben will, die Auflösung verändern möchte, Fenster positionieren, auf einen der Displays verschieben oder die Überschrift und Ausmaße des Fenster ändern will, dann hat man bereits alle Funktionen. Die Befehle befinden sich in den Units x, glx, xlib, xutil und xf86vmode, welche alle mit Freepascal ausgeliefert werden. Delphi selber läuft nur unter Windows, Kylix (der Linuxcompiler von Borland) wurde eingestellt und ist veraltet. Somit ist für plattformunabhängige Entwicklung darauf zu achten, dass der Code auch mit den Freepascal-Compiler (im Delphimodus) kompiliert. Für die C/C++ler gelten folgende Header: includes <X11/Xlib.h>,<GL/glx.h> und <X11/extensions/xf86vmode.h>.

Lazarus bietet für die plattformübergreifende Verwendung von OpenGL eine Komponente "TOpenGLContext" an, die sich um die Initialisierung eines OpenGL-Kontexts kümmert.

Nützliche Links