Freebsd

如何在 freebsd 上安裝 i386/x86 共享庫?

  • January 21, 2020

GDB 告訴我,用gcc -m32(i386 程序)編譯的程序與我的共享庫(i386:x86-64)不兼容。

輸出gdb

(gdb) r
Starting program: /root/format
warning: `/libexec/ld-elf.so.1': Shared library architecture i386:x86-64 is not compatible with target architecture i386.

如果有人能解釋如何解決這個問題/如何獲取庫,那就太好了。

你沒有告訴任何關於你的系統的事情,所以我只會做出最有可能的猜測。您正在執行 64 位系統並且尚未安裝任何 32 位庫。最簡單的方法是從安裝程序中簡單地添加它們:

bsdinstall

…並選擇lib32. 您可以隨時執行安裝程序(不僅僅是第一次安裝)。就是這樣。

它的作用是從http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.1-RELEASE/lib32.txz之類的地方獲取 tarball並將其解壓縮到. 請記住獲取正確的版本(檢查)。如果您願意,也可以手動執行此操作。也許您已經在 DVD 中或 DVD 上提供了它。/usr/lib32``uname -a``/usr/freebsd-dist

如果您手動執行此操作,則可能需要告知ldconfig您有新庫。或者,如果您將它們放置在不尋常的位置,則需要更正路徑。

ldconfig -32 /usr/lib32/ /usr/local/lib32/compat/

…或者…

ldconfig -v -m -R /usr/lib32

參見ldconfig(8)

您很少說明為什麼要在 64 位系統上執行 32 位二進製文件。如果是因為它實際上是在舊版本上製作的,那麼您可能需要以下兼容性包之一:misc/compat8xmisc/compat9xmisc/compat10xmisc/compat11x

*只是為了確定:*您知道您通常會在最近的系統上針對 amd64 (i386-64) 嗎?i386只有 32 位,我們已經轉向 64 位。這對您來說可能微不足道,但由於問題中缺乏上下文,我只想確保我們沒有試圖解決錯誤的問題。

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