Freebsd

在舊版 FreeBSD 中執行靜態執行檔時的奇怪行為

  • May 7, 2020

當我嘗試ldd executable返回時,我確實在 FreeBSD 12 中靜態編譯了一個 cmake 項目not a dynamic executable。我在同一台電腦上嘗試了執行檔,它工作正常。然後我確實將它移植到了我的具有 FreeBSD 12 的 vps 上,它的工作方式與預期的一樣。但是當我將它移植到 FreeBSD 8 時。一些命令正在工作,比如executable --help列印幫助。但是當我嘗試一些涉及網路的功能(網路已配置並且我嘗試了各種程序,如 curl 和 php)時,程序靜默退出,沒有分段錯誤或其他任何情況,並且在執行執行檔後,一些其他文件名executable.core被添加到同一目錄

這是我第一次編譯 FreeBSD 版本,所以我不知道我錯過了什麼

FreeBSD 12 有嚴重的 ABI 更改,稱為“ino64”。IIRC,libc 可以在動態連結時處理它,所以我會先嘗試。如果這不起作用,您唯一的選擇是在 FreeBSD 8 上編譯。

通常,您不應該期望在 X 主要版本上編譯的二進製文件可以在 X-1 版本上工作。但它通過安裝misc/compatXX軟體包以其他方式工作。

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