Was ist eine Objektdatei?
Eine Objektdatei ist eine Computerdatei, die von einem Programm namens Compiler erstellt wird und Daten sowie Anweisungen enthält. Compiler übersetzen den Quellcode der Programmiersprache in eine maschinenlesbare Zwischenform, die als Objektcode bezeichnet wird. Kleinere Programme können in einer einzelnen Objektdatei kompiliert werden, während größere Programme normalerweise in mehrere Dateien mit verwandten Funktionen kompiliert werden. Diese einzelnen Objektdateien werden durch einen Linker verbunden und betriebssystemspezifische Informationen werden hinzugefügt, um ein ausführbares Programm zu bilden.
In der Regel wird eine Objektdatei mit der Dateierweiterung ".obj" gekennzeichnet. Es gibt jedoch verschiedene Formate für diese Dateien. Am gebräuchlichsten sind das Intel® OMF (Relocatable Object Module Format) und das COFF (Common Object File Format) von Windows® und UNIX® System V. In vielen INIX®-Systemen wurde das ELF (Executable and Linkable Format) eingeführt COFF ersetzen.
Unabhängig vom Format enthält eine Objektdatei normalerweise drei Arten von Informationen, mit denen sie mit anderen Programmmodulen interagieren kann. Prozeduren und Daten, die für externe Verweise offen sind, werden Namen zugewiesen, mit denen sie aus anderen Modulen aufgerufen werden können. Ebenso werden Verweise auf Informationen außerhalb des Moduls vermerkt, jedoch nicht benannt. Wenn die Dateien verknüpft werden, wird den unbenannten Referenzen der Name zugewiesen, den sie in dem Modul erhalten, in dem sie ursprünglich definiert wurden. Lokale Namen werden für Anweisungen und Daten verwendet, auf die nur innerhalb eines Moduls verwiesen wird.
Nicht der gesamte verknüpfbare Code wird als Objektdatei gespeichert. Bibliotheken sind Sammlungen vorkompilierter Routinen, die als Objektcode gespeichert werden. Sie werden ähnlich wie Objektdateien erstellt und eignen sich zum Speichern von häufig aufgerufenen Prozeduren. Wenn ein Linker in anderen Objektdateien keine Referenz findet, sucht er automatisch in einer Bibliotheksdatei danach. Die meisten Implementierungen einer Programmiersprache werden mit einer Standardfunktionsbibliothek geliefert.
Durch die dynamische Verknüpfung kann eine Objektdatei von mehreren ausführenden Programmen gleichzeitig verwendet werden. Anstatt den Objektcode beim Verknüpfen an ein Programm zu binden, wird er beim Laden des Programms oder zur Laufzeit abgerufen, wenn auf eine Prozedur verwiesen wird. In der Windows®-Umgebung werden diese als dynamische Linkbibliotheken bezeichnet und mit der Erweiterung ".dll" versehen. Unix-ähnliche Systeme bezeichnen diesen Dateityp häufig als Dynamic Shared Object (DSO). Diese Art von Objektdatei kann auch zur Verwendung mit einem bestimmten Programm implementiert werden und ist Teil der Installation dieses Programms.