Funktionsweise von ausführbaren Dateien

28/12/2009 - 11:01 von Dominik Schmidt | Report spam
Hallo,

wie an der Frage sicherlich unschwer zu erkennen, kenne ich mich mit
Linux-Systemen kaum aus.
Ich würde gerne wissen, wie ausführbare Dateien unter Linux
"funktionieren", bzw. wie man sich deren Funktionsweise vorzustellen hat.

Unter Windows werden Dateien bekanntlich anhand ihrer Dateiendung
identifiziert.
Die Dateiendung "exe" (wie "test.exe") ist eine ausführbare Datei bzw.
Programmdatei, die beim Öffnen als Programm geöffnet wird.
Bei anderen Dateitypen, wie z.B. "jpg" (Bild) öffnet Windows das damit
verknüpfte Bildprogramm mit dem Dateipfad des geöffneten Bildes als
Parameter.

Bei UNIX-Systemen gibt es wohl keine Dateiendungen.
Eine ausführbare Datei (wie eine Exe-Datei unter Windows) ist nur dann
ausführbar, wenn man das Execute-Bit setzt (z.B. chmod), sonst hat man
einen unbrauchbaren Binaryhaufen.
Ob es sich bspw. bei einer Bilddatei um ein JPEG-Bild oder ein GIF-Bild
(GIF-Bilder scheinen ja z.B. immer mit der 3 Byte langen ASCII-Zeichenfolge
"GIF" zu beginnen) handelt, wird ermittelt, indem der Anfang vom Dateibody
(möglicherweise in dem Fall also diese ersten 3 Byte) eingelesen wird.
Somit wird diese Information auch benutzt, um beim Öffnen einer Datei (z.B.
mit einem Dateimanager) das verknüpfte Bildprogramm mit dem Bildpfad als
Parameter zu öffnen?

Habe ich das soweit richtig verstanden?

Meine nàchste Frage:
Eine Windows-Exe-Datei ist im Allgemeinen auf allen Windows-Systemen
(zumindest Desktop-Systeme ab 9x) zumindest startfàhig.
Sicherlich wird eine Programmdatei, die für Windows XP geschrieben wurde,
unter Windows 95 wohl abbrechen, bevor man eine Oberflàche sieht, weil z.B.
Abhàngigkeiten fehlen.
Aber im wesentlichen lassen sich doch Programmdateien, die auf einem
Windows 2000 System laufen, auch auf einem Windows 7 System benutzen.

Lange Rede kurzer Sinn: Unter Linux muss man scheinbar die Quelldateien für
jede Distribution neu kompilieren, selbst kompilierte ausführbare Dateien
von bspw. SuSE Linux 11.1 sind unter der Version 11.2 angeblich nicht mehr
lauffàhig.
Ist das richtig?
Warum muss für jede Distribution neu kompiliert werden?
 

Lesen sie die antworten

#1 Dieter Intas
28/12/2009 - 11:48 | Warnen spam
Dominik Schmidt wrote:

Hallo,

wie an der Frage sicherlich unschwer zu erkennen, kenne ich mich mit
Linux-Systemen kaum aus.
Ich würde gerne wissen, wie ausführbare Dateien unter Linux
"funktionieren", bzw. wie man sich deren Funktionsweise vorzustellen hat.



Einfach mal lesen:

http://www.informatikserver.at/self...nux05.html

Auf dieser Seite findest du auch noch weitere Grundlagen.

Unter Windows werden Dateien bekanntlich anhand ihrer Dateiendung
identifiziert.
Die Dateiendung "exe" (wie "test.exe") ist eine ausführbare Datei bzw.
Programmdatei, die beim Öffnen als Programm geöffnet wird.
Bei anderen Dateitypen, wie z.B. "jpg" (Bild) öffnet Windows das damit
verknüpfte Bildprogramm mit dem Dateipfad des geöffneten Bildes als
Parameter.

Bei UNIX-Systemen gibt es wohl keine Dateiendungen.
Eine ausführbare Datei (wie eine Exe-Datei unter Windows) ist nur dann
ausführbar, wenn man das Execute-Bit setzt (z.B. chmod), sonst hat man
einen unbrauchbaren Binaryhaufen.
Ob es sich bspw. bei einer Bilddatei um ein JPEG-Bild oder ein GIF-Bild
(GIF-Bilder scheinen ja z.B. immer mit der 3 Byte langen
ASCII-Zeichenfolge "GIF" zu beginnen) handelt, wird ermittelt, indem der
Anfang vom Dateibody (möglicherweise in dem Fall also diese ersten 3 Byte)
eingelesen wird. Somit wird diese Information auch benutzt, um beim Öffnen
einer Datei (z.B. mit einem Dateimanager) das verknüpfte Bildprogramm mit
dem Bildpfad als Parameter zu öffnen?

Habe ich das soweit richtig verstanden?

Meine nàchste Frage:
Eine Windows-Exe-Datei ist im Allgemeinen auf allen Windows-Systemen
(zumindest Desktop-Systeme ab 9x) zumindest startfàhig.
Sicherlich wird eine Programmdatei, die für Windows XP geschrieben wurde,
unter Windows 95 wohl abbrechen, bevor man eine Oberflàche sieht, weil
z.B. Abhàngigkeiten fehlen.
Aber im wesentlichen lassen sich doch Programmdateien, die auf einem
Windows 2000 System laufen, auch auf einem Windows 7 System benutzen.

Lange Rede kurzer Sinn: Unter Linux muss man scheinbar die Quelldateien
für jede Distribution neu kompilieren, selbst kompilierte ausführbare
Dateien von bspw. SuSE Linux 11.1 sind unter der Version 11.2 angeblich
nicht mehr lauffàhig.
Ist das richtig?
Warum muss für jede Distribution neu kompiliert werden?



Distributionen sind ja dafür da dir das alles zu ersparen - du brauchst
nichts kompilieren. Man kann allerdings den Quellcode installieren und dann
selbst kompilieren. Wenn du Programmieren kannst, dann kannst du dir auch
selbst was basteln.

Ähnliche fragen