Wo wird ein C Programm zu einem Linuxprogramm oder einem Windowsprogramm?

Emess

Emess

Turmspringer
Wo enscheidet es sich ob es ein Linuxprogramm oder ein Windowsprogramm wird.
C bzw c++ ist doch C bzw C++. Und ich denke mir so: Der Code müsste doch der gleiche sein.
Jetzt nur nicht denken, dass ich was programmieren wollte oder gar Ahnung davon hätte.
Es geht mir nur um das begreifen. :think: :oldman
 
Eine Anwendung besteht ja nicht nur für sich, sondern greift auf bestimmte Ressourcen zu, z.B. Bibliotheken. Diese Unterscheiden sich je nach Betriebssystem. Sofern dies nicht so ist, ist eine code tatsächlich unter beiden Systemen lauffähig (simpler Perl-code wäre ein Beispiel [sofern Perl auf dem Win-System installiert ist]).
 
Eine Anwendung besteht ja nicht nur für sich, sondern greift auf bestimmte Ressourcen zu, z.B. Bibliotheken. Diese Unterscheiden sich je nach Betriebssystem. Sofern dies nicht so ist, ist eine code tatsächlich unter beiden Systemen lauffähig (simpler Perl-code wäre ein Beispiel [sofern Perl auf dem Win-System installiert ist]).

Sprich dll's bzw lib's.
Doch wie wird es ein Windows- bzw. Linuxprogramm. Oder wo trennt sich der Weizen vom Spreu?
 
Meistens entscheidet sich das wohl bereits bei der Programmierung, spätestens aber (im Falle von c / c++) bei der Kompilierung.
 
Beim Compiler. Normalerweise stellt der Compiler eine Binaerdatei her, die lauffaehig unter dem Betriebssystem ist, unter dem der Compiler aufgerufren wird. Es gibt auch Cross-Compiler, die dann unter Linux eine Binaerdatei fuer Windows oder ein anderes Betriebssystem erstellen, doch dazu muss zum einen der Cross-Compiler installiert sein und zum anderen er mit entsprechenden Optionen aufgerufen werden.
 
Das regelt der Compiler. Je nach dem was für ein Binary erstellt wird, ist es für das entsprechende Betriebssystem lauffähig:

Binary Formate:
Linux: ELF (Executable and Linkable Format)
Window: PE (Portable Executable)
 
Damit der Sourcecode sowohl für windows, als auch für windows kompilierbar ist brauchst du schon von haus aus cross-plattform kompatible bibliotheken. Dann kannst du dich drauf einstellen, das du etwa 2x so viel arbeit mit debuggen und nennen wirs windowseigenheiten aufbringen kannst und dann kannst du ein Programm für beide Plattformen kompilieren.

Zb kannst du unter ziemlich jedem posix system benutzer konfigurationen ablegen, wenn du die systemvariable "HOME" ausliest und dort ein Verzeichnis ".programmname" anlegst. Unter windows musst du (kann auch nicht stimmen ist schon lang her) "SETTINGS_DIR" auslesen und dann mit der varable "CUR_USER" zusammenwursten zu "USER_SETTINGS/CUR_USER/" und sowas nimmt dir keine cross plattform bibliothek ab.
 
so wie ich das jetzt verstehe liegt es in der Hand des Compilers d.h. man braucht unterschiedliche Compiler, oder?
 

Ähnliche Themen

C Programm Klausur Noten Spiegel einlesen und Farb Balkendiagramm sim draw ausgeben

es kommen abwechselnd neuere Distributionen...

SELinux und IPTV

Linkerproblem mit MXE

Bashscript aus Debian6 läuft nicht auf Debian7

Zurück
Oben