PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Verständnisfrage] Warum .exe unter Linux nicht direkt ausführen?



xare
07.07.02, 13:49
Hallo!

Wenn ich ein Programm kompiliere, das keine dynamischen Bibliotheken benutzt, dann macht doch der Compiler einfach Maschinenbefehle für den jeweiligen Prozessor daraus, oder?

Meine Frage ist nun, warum kann ich unter Linux kompilierte Programme (z.B. "HelloWorld", also reine Konsolenprogs) dann nicht auch unter Windows ausführen und umgekehrt. Wo liegt konkret der Unterschied zwischen den Binärdateien?

MfG Xare

aycaramba
07.07.02, 13:58
Du kannst auch ein für Windows kompiliertes Program nicht unter DOS ausführen.
Linux und Windows sind nunmal nicht binärkompatibel. Die Erklärung ist zwar recht laienhaft, aber vielleicht findet sich hier ja noch jemand, der/die das genauer erläutern kann.

Gruss

Marc

hunter
07.07.02, 14:02
Der C Compiler spukt nur Linuxkompatible Programme aus.

Aber es gibt das hier: http://www.pro-linux.de/news/2002/4449.html Damit kann man dann einfache Programme unter Linux schrieben und compalieren und sie dann unter Windows laufen lassen.

Belkira
07.07.02, 14:03
Der Unterschied liegt in der unterschiedlichen Schnittstelle (API) zwischen Programm und Betriebssystemfunktionen. Da nimmst nur an, es würden keine Bibliotheken gelinkt. Tatsächlich werden aber Funktionen der Standardbibliotheken (z.B. C, C++, Mathematik, Standard Ein-/Ausgabe etc) verwendet, um ein einfaches "Hello World!" ausgeben zu können.

Zudem unterscheidet sich natürlich das EXE Format vom ELF Format.

xare
07.07.02, 14:18
thx für die Antworten.

@Belkira: Das wars, was ich eigentlich wissen wollte, konnte eigentlich auch selber draufkommen. :)

@all: Es geht mir ja gar nicht darum, irgendwie solche Programme zu schreiben, wollte das einfach nur mal verstanden haben.

Damit "closed" :D