我一直想知道。我知道編譯器會將您編寫的代碼轉換為二進制文件,但是鏈接程序會做什么?他們一直是我的謎。我大致了解什么是“鏈接”。這是將對庫和框架的引用添加到二進制文件中的時候。除此之外,我什么都不懂。對我來說,它“有效”。我也了解動態鏈接的基礎知識,但沒有什么太深的。有人可以解釋一下這些條款嗎?
3 回答

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
在像“ C”這樣的語言中,傳統上,各個代碼模塊被單獨編譯為目標代碼的blob,除了在模塊外部進行的所有引用(即對庫或其他模塊)具有引用之外,還可以在各個方面執行尚未解決(即,它們是空白,正在等待有人來進行所有連接)。
鏈接器所做的是一起查看所有模塊,查看每個模塊需要連接到外部本身的內容,并查看它正在導出的所有內容。然后修復所有問題,并生成最終的可執行文件,然后可以運行該可執行文件。
在動態鏈接還在進行的地方,鏈接器的輸出仍然無法運行-仍然有一些對外部庫的引用尚未解析,并且它們在加載應用程序時由OS解析。甚至在運行過程中更晚)。
- 3 回答
- 0 關注
- 468 瀏覽
添加回答
舉報
0/150
提交
取消