3 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
實(shí)際上,可以說鏈接相對簡單。
在最簡單的意義上,它只是將對象文件1捆綁在一起,因?yàn)樗鼈円呀?jīng)包含了各自源中包含的每個(gè)函數(shù)/全局/數(shù)據(jù)的發(fā)出程序集。鏈接器在這里可能非常愚蠢,只需將所有內(nèi)容視為符號(名稱)及其定義(或內(nèi)容)。
顯然,鏈接器需要生成一個(gè)尊重某種格式的文件(一般在Unix上的ELF格式),并將各種類別的代碼/數(shù)據(jù)分成文件的不同部分,但這只是調(diào)度。
我所知道的兩個(gè)并發(fā)癥是:
需要去除重復(fù)符號:一些符號存在于幾個(gè)目標(biāo)文件中,只有一個(gè)符號應(yīng)該在創(chuàng)建的結(jié)果庫/可執(zhí)行文件中; 鏈接器作業(yè)只包含其中一個(gè)定義
鏈接時(shí)優(yōu)化:在這種情況下,目標(biāo)文件不包含發(fā)出的程序集,而是包含中間表示,鏈接器將所有目標(biāo)文件合并在一起,應(yīng)用優(yōu)化傳遞(例如內(nèi)聯(lián)),將其編譯為匯編并最終發(fā)出結(jié)果。
1:編譯不同翻譯單元的結(jié)果(粗略地說,預(yù)處理的源文件)
- 3 回答
- 0 關(guān)注
- 517 瀏覽
添加回答
舉報(bào)