Freebsd
FreeBSD 測試 rtld
由於某些原因,我試圖修改和測試我自己的 rtld 版本(ld-elf.so.1)。每次更改此連結器後,我都需要重新啟動系統,從 CD/DVD 啟動它,在 /libexec/ 中安裝我的版本並再次重新啟動系統。有時它甚至因為分段錯誤而無法執行使用者空間。我在這樣的過程中浪費了很多時間。
我想問一下如何從命令行啟動此連結器,而無需在 /libexec 中重新安裝我的 rtld 並重新啟動系統。是否可以像 Linux /lib/ld-linux.so.2 一樣執行 rtld?
我嘗試執行 ld-elf.so.1 但每次遇到分段錯誤。可能我錯過了 rtld 命令行中的一些參數。有什麼建議如何從命令行執行 rtld?
也許我可以更改我的執行檔的預設解釋器?
編輯:作為我的 rootfs 的文件系統,我使用 UFS。
是否可以像 Linux 一樣執行 rtld
/lib/ld-linux.so.2
?是的,
/libexec/ld-elf.so.1 /path/to/your_binary
在 FreeBSD 上執行得很好,就像在 Linux 上一樣。也許我可以更改我的執行檔的預設解釋器?
是的,您可以在編譯二進製文件時通過
cc -Wl,-dynamic-linker=/path/to/your_interpreter
. 這-Wl,..
是 gcc/clang 直接將參數傳遞給連結器的方式,您可以查看ld(1)
手冊頁以了解其--dynamic-linker
和其他標誌的解釋。我試圖執行
ld-elf.so.1
,但每次遇到分段錯誤。動態連結器/解釋器應該編譯為與位置無關的 (
-pie
) 並且本身不能依賴於共享對象,或者使用另一個解釋器。