2016-05-13 14 views
0

Angenommen, ich habe eine C-Quelldatei, die keinen Verweis auf eine andere Datei enthält. Sie übernehmen kann es nur enthält -Wird Linker für einfache C-Programme verwendet?

int main(void) { 
    int a=5, b=10; 
} 

Wird diese Quelldatei an den Linker gehen? Was wird in diesem Fall die Aufgabe des Linkers sein?

+1

Der Linker wird benötigt, um ein ausführbares Abbild für das Betriebssystem zu erstellen. –

+0

Sie können nichts ausführen, das nicht verknüpft wurde. Sie "sehen" jedoch häufig nicht, dass der Linker ausgeführt wird. Der Linker führt die tatsächlichen Maschinenbefehle aus, die die CPU ausführt. Compiler machen nur Mittelmann-Code für den Linker. – xaxxon

+0

[Hier sind einige gute Informationen über das Verknüpfen und Ausführen] (http://www.tldp.org/LDP/LG/issue84/hawk.html) und ein weiteres aus [vom Wiki] (https: //en.wikipedia. org/wiki/Einstiegspunkt) – Mrunmoy

Antwort

4

Es wird, weil Linker aufgerufen wird, um die ausführbare ausführbare Datei zu erstellen. Unabhängig davon, ob es sich um eine oder mehrere Quelldateien handelt, wird jede Übersetzungseinheit zuerst in eine Objektdatei kompiliert und dann mit der Laufzeit des C verknüpft, um das ausführbare Programm zu bilden. Selbst wenn Sie nur eine Quelldatei sehen, ist sie immer noch durch den Linker mit der Laufzeit verbunden.

2

Der Linker wird immer benötigt, auch wenn Sie keine explizite Bibliothek verwenden. Jedes Programm benötigt, um in seinem binary die grundlegenden Startanweisungen des Betriebssystems aufzunehmen, und der Linker fügt sie zu Ihrer ausführbaren Datei hinzu

Verwandte Themen