appleman hat geschrieben:
Am liebsten programmiere ich in C. (Ich denke das ist unter Linux kein Problem, oder?)
Nein. Auch wenn die Wahl C sicherlich strittig ist, imho gibt es für moderne GUI-Anwendung bessere, da objektorientierte Sprachen. Ich bitte auch darum, dass Argument, dass die GLib existiert, nicht vorzubringen. Die GLib ist hat eine abenteuerliche API und produziert ziemlich unlesbaren Code.
appleman hat geschrieben:
Die Grundprinzipien von C sind mir eingetlich recht gut bekannt, vor allem vom AVR programmieren und natürlich der WinAPI.
Wissen um Microcontroller und die WinAPI sind unter Linux nur bedingt bis überhaupt nicht verwertbar, folglich also irrelevant für die Betrachtung deiner Fähigkeiten. Das bedeutet, dass WinAPI-Wissen unter Linux gar nichts bringt, schon allein, weil die Rückgabe über an Funktionen übergebene Speicherbereiche unter Linux weniger weit verbreitet ist als bei der WinAPI, die dieses mehr als seltsame Prinzip ja offenbar zu der Weisheit letzter Schluss erkoren hat.
appleman hat geschrieben:
Von den verschiedenen Bibliotheken habe ich aber keine Ahnung.
Dafür gibt es Dokumentation.
appleman hat geschrieben:
Wie darf ich das verstehen? Kann man ein Programm das für GNOME entwickelt wurde unter KDE nicht ausführen, oder nicht kompilieren?
Weder das eine noch das andere, sofern du unter KDE nicht auch die benötigten Gnome-Bibliotheken installierst. Ganz konkret: Eine Bibliothek, die zum Drucken auf die libgnomeprint zurückgreift, wird unter KDE weder zu compilieren sein, noch wird sie in kompiliertem Zustand laufen. Erst wenn du libgnomeprint installierst, kannst du diese Anwendung übersetzen und ausführen.
appleman hat geschrieben:
Was heißt jetzt genau Bibliothek?
Du behauptest von dir, du kennst die Grundprinzipien von C und stellst dann diese Frage? Wenn jemand von Grundprinzipien spricht, dann erwarte ich eine zumindest rudimentäre Kenntnis von Bibliotheken inklusive der verschiedenen Arten des Linkens. Sorry, aber die Grundprinzipien von sind nicht Schleifen, sofern wir nicht ganz, ganz, ganz unten anfangen. Da gehört schon ein bisschen mehr dazu. Immerhin kann man C ohne zumindest rudimentäre Kenntnis von Bibliotheken kaum programmieren.
appleman hat geschrieben:
Werden die direkt in den Quellcode eingebunden und mitkompiliert (so wie bei AVR)
Beim statischen Linken schon. Das ist aber unter Linux aus verschiedenen Gründen unüblich, u.a. wegen fehlender Abhängigkeitsverwaltung, geringerer Sicherheit und höherem Speicherverbrauch. Wikipedia hilft dir da sicher mit detaillierterer Erläuterungen.
appleman hat geschrieben:
oder sind alle Funktionen schon lauffähig und werden bloß nich eingebunden (so wie bei der WinAPI)?
Aus dieser Beschreibung werde ich nicht wirklich schlau. Deswegen erkläre ich dir jetzt einfach mal das konträre Prinzip des dynamischen Linkens, welches sowohl unter Linux als auch im Bezug auf die WinAPI gebräuchlich ist: Dabei werden die Bibliotheken in der ausführbaren Datei nur mit Namen referenziert. Der eigentliche Code liegt in DLL (Windows) oder SO-Dateien (Unix/Linux) separat auf der Platte. Beim Start der Anwendung sorgt nun der sogenannte Linker dafür, dass die benötigten Bibliotheken dynamisch in den Speicher geladen werden, und die Speicheradressen im Programm entsprechend umgebogen werden. Dadurch können sich unter anderem mehrere Programme den gleichen Code teilen, außerdem ermöglicht das Sicherheitsupdates, ohne die Anwendung selbst erneut kompilieren zu müssen.
appleman hat geschrieben:
Da ubuntu ja GNOME verwendet bietet es sich also an Gtk zu benutzen, sehe ich das richtig?
Ja. Allerdings ist C nicht die geeignete Sprache für GUI-Anwendungen. Obwohl du dich eventuell in Gtk wohlfühlen wirst, wenn du die WinAPI gewöhnt bist. Die APIs sind ähnlich abstrus.