如何在 freebsd 上安装 i386/x86 共享库?

如何在 freebsd 上安装 i386/x86 共享库?

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.

如果有人能解释如何解决这个问题/如何获取库,那就太好了。

答案1

您没有透露有关您的系统的任何信息,因此我只会做出最有可能的猜测。您运行的是 64 位系统,尚未安装任何 32 位库。最简单的方法是从安装程序中添加它们:

 bsdinstall

...然后选择lib32.您可以随时运行安装程序(不仅仅是第一次安装)。就是这样。

它的作用是lib32.txz从类似的地方获取 tarballhttp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.1-RELEASE/并将其解压到/usr/lib32.请记住获取正确的版本(使用 进行检查uname -a)。如果您愿意,也可以手动执行此操作。也许您已经在/usr/freebsd-distDVD 中找到了它。

如果您手动执行此操作,那么您可能需要告知ldconfig您有新的库。或者,如果您将它们放置在不寻常的位置,则需要更正路径。

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

...或者...

ldconfig -v -m -R /usr/lib32

LD配置(8)

您很少说明为什么尝试在 64 位系统上运行 32 位二进制文​​件。如果是因为它实际上是在旧版本上制作的,那么您可能想要兼容包之一:杂项/compat8x,杂项/compat9x,杂项/兼容10x,杂项/compat11x

只是为了确定:您知道您通常会在最新的系统上以 amd64 (i386-64) 为目标吗?i386只有 32 位,我们已经转向 64 位。这对您来说可能是微不足道的,但由于问题缺乏上下文,我只是想确保我们没有试图解决错误的问题。

相关内容