APIs unter Linux

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
eicon
Beiträge: 76
Registriert: 07.11.2004 11:24:40

APIs unter Linux

Beitrag von eicon » 15.08.2005 18:03:12

Mal absolute Anfängerfragen. :)

Unter Win ist es ja recht übersichtlich, da gibt es eben die WinAPI.
Aber unter Linux gibt es ja versch. GUIs z.B. Qt (beruht KDE darauf od. ?),
Gtk+(+)? (beruht gnome hauptsächlich darauf ?), ich habe schlichtweg keine Ahnung.

Eigentlich ist es dann ja auch fast egal, was man unter Linux für GUIs benutzt, denn gnome-Anwendungen laufen unter KDE ja genauso wie umgekehrt.

Was hat es dann noch mit der Xlib auf sich ? Und wie schreibt man ein grafisches Programm allgemein für Linux ? Ist es egal, weil ja die Programme
sofern die Bibliotheken vorhanden sind sowieso laufen ?

Kann man Qt/Gtk/Xlib Programme auch unter Windows zum laufen bekommen ?

Worin wird dann z.B. Opengl eingebettet ?

Hat jemand eine Buchempfehlung für "LinuxAPI" ?

eicon

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 15.08.2005 18:31:10

gute güte wieviele fragen auf einmal:

Xlib : http://www.the-labs.com/X11/XLib-Manual/

GTK und QT sind Bilblitheken für GUI Programmierung, beide existieren auch in
versionen für Windows. die xlibs stellen die grundlegenden funktionen der xserver
zur verfügung. das hat mit GUI erstmal so nix zu tun.

GTK+ ist die alte Version von GTK, die neuere heisst GTK2
GTK ist entstanden aus dem Gimp Projekt, weil man damals für Gimp ein neues GUI
haben wollte. (heisst korrekter auch "Toolkit") http://www.gtk.org
befor es GTK und QT gab, gab es z.B. Motif (manche window manager nutzen
das noch)

Mozilla nutz auch teilweise GTK aber mit einer art Sprache namens XUL,
um plattformunabhängiger zu sein.
Worin wird dann z.B. Opengl eingebettet ?
ehm, was hat das jetzt damit zu tun? naja, opengl ist eine grafik bibliothek für
ganz bestimmte zwecke (3D). Es gibt Diskussionen OpenGL für den Gnome Desktop zu
benutzen, ich denke mal dann wird das irgendwie in GTK angebunden sein.
(genau genommen ist opengl ein standard, kein API)

mit linux hat das alles übrigens nix zu tun (ausser das es viel auf linux läuft).
das einzige "Linux api" ist wohl eher das hier:
http://kernelnewbies.org/documents/kdoc ... elapi.html
das linux kernel API

hilft das alles etwas weiter?
Zuletzt geändert von startx am 15.08.2005 18:31:38, insgesamt 1-mal geändert.

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 15.08.2005 18:31:29

Hallo,
ich habe das Thema mal nach "Softwareentwicklung" verschoben, ich denke da passt das Thema APIs besser hin.

Zu deiner Frage. Xlib ist quasi die Basis, mit xlib direkt programmiert eigentlich kaum jemand.
Die beiden gängisten Toolkits sind, wie du schon erkannt hast, Qt und Gtk+.
Wenn du Desktopunabhängig programmieren willst, verwenden die meisten wohl Gtk+, du kannst aber auch Qt verwenden. Wichtig ist nur, dass du dann keine KDE oder GNOME libs verwendest, vorallem wenn die Programme später auch unter windows oder MacOS laufen sollen.

OpenGL hat mit dem Toolkit erstmal nichts zu tun. Du kannst OpenGL programme ganz unabhängig davon schreiben, Qt und Gtk+ bieten aber afaik auch ein OpenGL Widget an.
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
eicon
Beiträge: 76
Registriert: 07.11.2004 11:24:40

Beitrag von eicon » 15.08.2005 19:21:04

ehm, was hat das jetzt damit zu tun? naja, opengl ist eine grafik bibliothek für
ganz bestimmte zwecke (3D). Es gibt Diskussionen OpenGL für den Gnome Desktop zu benutzen, ich denke mal dann wird das irgendwie in GTK angebunden sein. (genau genommen ist opengl ein standard, kein API)
Ja, das war halt aus Unwissenheit. ;)

mit linux hat das alles übrigens nix zu tun (ausser das es viel auf linux läuft).
das einzige "Linux api" ist wohl eher das hier:
http://kernelnewbies.org/documents/kdoc ... elapi.html
das linux kernel API

Stimmt eigentlich. Ja ich neige halt immer dazu, alles was einen Linux-Kernel anbietet mit Linux zu bezeichnen, Windowsdenkfehler.
hilft das alles etwas weiter?
Ja, ich hatte ja keine Ahnung.

OpenGL hat mit dem Toolkit erstmal nichts zu tun. Du kannst OpenGL programme ganz unabhängig davon schreiben, Qt und Gtk+ bieten aber afaik auch ein OpenGL Widget an.
Hm, wie läuft das dann in einem OpenGl Programm, wenn ich Systemaufrufe
benötige, über xlib ? Also wenn ich z.B. einen 3D-Objekt bewegen möchte mit Tastatur od. Maus ?

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 16.08.2005 10:22:27

eicon hat geschrieben:Hm, wie läuft das dann in einem OpenGl Programm, wenn ich Systemaufrufe
benötige, über xlib ? Also wenn ich z.B. einen 3D-Objekt bewegen möchte mit Tastatur od. Maus ?
Also die Events kriegst du jeweils über das verwendete GUI-Toolkit rein.
z.B. bei Qts OpenGL-Widget gibts signale für

Code: Alles auswählen

mouseDoubleClickEvent ( QMouseEvent * )
mouseMoveEvent ( QMouseEvent * )
mousePressEvent ( QMouseEvent * )
mouseReleaseEvent ( QMouseEvent * )
die du dann natürlich entsprechend behandeln musst.

Mit XLib direkt musst du zu deinem Glück in 99.95% der Fälle nichts machen.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
eicon
Beiträge: 76
Registriert: 07.11.2004 11:24:40

Beitrag von eicon » 16.08.2005 10:39:00

Ok, klar soweit.

Antworten