[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Lib-Frage



Am So, 2003-08-17 um 04.23 schrieb Seth:
> Ich hab da eine Verständnisfrage.
> [...]
> Auf einer Seite die ich hier auch gepostet habe, habe ich gelesen das es 
> Kernel-Code und, uhm, naja, nicht-Kernel-Code gibt. ;)
> 
> Somit wären die Libs wiederum Kernelabhängig.

Ich bin zwar kein Kernel Hacker - programmiere aber von Zeit zu Zeit ein
wenig. Ich versuche es mal so zu erklären wie ich es mit denke. Ein
Compiler macht nichts anderes als Quelltext in Maschinencode umzusetzen.
Die folgende Zeile:

$a = 1;

würde also so aussehen (nur ungefähr meine Assemblerkenntnisse sind
schon sehr eingerostet).

mov DH, Speicheraddresse von $a
mov [DH], 2

Jetzt ist es allerdings so so das es verschiedene Strategien der
Umsetzung von Codekonstrukten gibt. Hierzu sollte man in einem Buch über
Kompilerbau mal nachlesen. Durch diese Verschiedenen Strategien kommen
bei unterschiedlichen Compilern auch unterschiedliche Binärdateien raus.
Bei einem Aufruf von Funktionen gibt es ebenfalls verschiedene
Strategien (wie die Parameter übergeben werden - von links nach rechts,
rechts nach links usw.). 

Aus diesen Gründen ist es wichtig das derselbe Compiler verwendet wird -
da sonst irgendwas inkonsistent sein kann. 

Bei Bibliotheken bzw. Ausführbaren Programmen ist das eine andere Sache
(zumindest theoretisch). Hier sollte der Compiler keine Rolle spielen,
da die Schnittstellen der Kernel vorgibt. Durch das ELF Format ist die
Struktur einer ausführbaren Datei ziemlich strikt vorgeschrieben. Diese
Vorgaben kommen vom Kernel. Deswegen kann man auch keine Microsoft
Windows EXE-Dateien unter Linux ausführen. Erst mit Hilfe von Wine wird
dieses Format verstanden. Hier würde mich allerdings mal interessieren
wie die Registrierung beim Linux Kernel erfolgt (ein apt-get mono reicht
zum Beispiel aus das .NET Dateien ausgeführt werden können  - das kann
ja nicht über ein Kernelmodul gemacht werden).

Ich hoffe ich habe das etwas klären können.

René






Reply to: