Gnu
Linux 中是否可以配置特定“可執行格式”的載入程序?
這個問題是編譯器如何在記憶體中佈局程式碼的延續,該問題 發佈在堆棧溢出中。
ld
關於Linux 中可用的 (GNU) 實用程序,我幾乎沒有問題。每當一個程序在 shell 中執行時,比如說
./a.out
,shell 都會使用ld
來載入由 代表的程序a.out
。
- shell 怎麼知道它必須
ld
用來載入a.out
. 它是否掃描a.out
以檢查它是否為 ELF 格式,如果是,則使用ld
?它當然不能使用文件副檔名,因為沒有以某種格式命名執行檔的規則。- 實用程序可以
ld
載入以除 ELF 之外的任何其他可執行格式表示的程序嗎?- 假設我想出了自己的可執行格式,比如“xyz”,然後我編寫了自己的載入程序
abc
來處理這些執行檔。那麼,是否有任何shell命令可以配置:“使用載入程序載入abc
以特定可執行格式“xyz”編譯的程序?
- 外殼不知道,核心知道。請參閱Linux 上存在哪些類型的執行檔?以及連結的文章以獲取詳細資訊。核心載入器載入二進製文件,如果需要,它的解釋器(
ld.so
用於動態二進製文件)。- 的每個實現
ld.so
都是特定於格式的。- 是的,可以通過向核心添加二進制載入程序,或者使用
binfmt_misc
. 看看Mono 有多神奇?詳情。