PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie spielen Linker und Compiler zusammen?


ethrandil
2005-05-10, 18:23:04
Ja, hallo

was mich immer von C++ abgehalten hat war die Tatsache, dass die Bibliotheken alle so verstreut waren und mir mein tolles C++-Buch nicht erklärt hat, was der Linker macht außer "aus den Objekt-dateien ein Lauffähiges Programm".

Könntet ihr mir das ein bisschen detaillierter erklären?
Was sind Objekt-Dateien was sind lib-dateien? (also Technisch. Im Groben weiß ichs)

mfg - Eth

Coda
2005-05-10, 19:13:54
Naja die Objekte und Libraries enthalten halt die Funktionen und globalen Variablen einer Übersetzungseinheit und der Linker fügt dann alles zusammen.

Da ist wirklich nichts besonderes dran. Java macht das auch, nur erst beim Ausführen.

stabilo_boss13
2005-05-10, 19:16:29
Wie technisch möchtest du es denn?

Der Compiler übersetzt die Hochsprache, also hier C++, in Maschinensprache. Aus dem Sourcecode wird so eine binäre Datei, die die Endung .obj trägt. Hat man mehrere Obj-Dateien, die auch noch wiederverwendbar sind, dann werden diese oft, mit Hilfe des Programms lib, in Bibliotheken zusammengefasst und tragen die Endung .lib.

Der Linker fügt die einzelnen, in Maschinensprache vorliegenden Dateien (obj+lib) zusammen und ergänzt diese um den Startcode der jeweiligen Plattform.

Es gibt verschiedene Arten von Möglichkeiten, Bibliotheken einzubinden. Oft kann man das beim Start des Linkers über Parameter angeben. So besteht z.B. die Möglichkeit, nur die Teile einer Bilbliothek einzubinden, die von den Obj-Dateien auch aufgerufen werden. Auch kann man Bibliotheken statisch oder dynamisch linken. Statisch bedeutet, dass sich die Bibliothek nachher in der ausführbaren Datei befindet. Dynamisch dagegen heisst, dass nur Verweise auf die Bibliothek gelinkt werden. Ein typisches Beispiel für dynamische Libs sind unter Windows die .dll-Dateien, die von fast allen Windowsprogrammen über API aufgerufen werden.