2016-05-13 22 views
0

假設我有一個C源文件,它不包含任何其他文件的引用。您可能會認爲它只包含 -鏈接器是否用於簡單的C程序?

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

此源文件將轉到鏈接器嗎?在這種情況下鏈接器的任務是什麼?

+1

鏈接器需要爲OS構建可執行映像。 –

+0

您無法運行任何尚未鏈接的內容。但是,您通常不會「看到」鏈接程序正在運行。鏈接器使CPU執行的實際機器指令。編譯器只是爲鏈接器創建中間人代碼。 – xaxxon

+0

[這裏有一些關於鏈接和執行的好信息](http://www.tldp.org/LDP/LG/issue84/hawk.html),另一個來自[wiki](https://en.wikipedia)。組織/維基/入口點) – Mrunmoy

回答

4

它會因爲鏈接器將被調用來形成可運行的可執行文件。無論是一個源文件還是多個源文件,每個翻譯單元都將首先編譯爲目標文件,然後與C的運行時鏈接以形成可執行程序。所以即使你只看到一個源文件,它仍然通過鏈接器鏈接到運行時。

2

鏈接器總是需要的,如果你不使用任何顯式庫。任何程序都需要在他的二進制文件中包含OS基本啓動指令,並且鏈接器將它們添加到您的可執行文件中