Linux
動態連結器是由作業系統自動呼叫還是由 ELF 文件中嵌入的程式碼自動呼叫?
我不確定,動態連結器
/usr/bin/ld
是否由作業系統自動呼叫,在載入 ELF 文件時,還是由嵌入在 ELF 文件中的程式碼呼叫?當我用於
r2
調試 ELF 文件時,它會在要執行的第一條指令處停止,這應該是動態連結器程式碼,但我不知道這段程式碼是否是 ELF 文件的一部分。
核心載入動態載入器(不是
/usr/bin/ld
;查看靜態連結器、動態連結器、載入器和動態載入器的可執行 ELF 文件分別是什麼?)。當您執行 ELF 二進製文件時,核心使用其特定的 ELF 二進制載入程序;對於動態連結的二進製文件,這會查找 ELF 標頭中指定的解釋器,載入該解釋器並指示它執行目標二進製文件。解釋器是動態載入器,它載入任何需要的庫,解析未定義的符號,並跳轉到程序的起始地址。(有關核心中二進制載入的詳細資訊,請參閱Linux 上存在哪些類型的執行檔? )
LWN 有一篇文章詳細介紹了程序如何執行:ELF 二進製文件。