Gnu

Linux 中是否可以配置特定“可執行格式”的載入程序?

  • May 4, 2019

這個問題是編譯器如何在記憶體中佈局程式碼的延續,該問題 發佈在堆棧溢出中。

ld關於Linux 中可用的 (GNU) 實用程序,我幾乎沒有問題。

每當一個程序在 shell 中執行時,比如說./a.out,shell 都會使用ld來載入由 代表的程序a.out

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

引用自:https://unix.stackexchange.com/questions/517098