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 位库。最简单的方法是从安装程序中简单地添加它们:
...并选择
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(8)
您很少说明为什么要在 64 位系统上运行 32 位二进制文件。如果是因为它实际上是在旧版本上制作的,那么您可能需要以下兼容性包之一:misc/compat8x、misc/compat9x、misc/compat10x、misc/compat11x
只是为了确定:您知道您通常会在最近的系统上针对 amd64 (i386-64) 吗?
i386
只有 32 位,我们已经转向 64 位。这对您来说可能是微不足道的,但由于问题中缺乏上下文,我只想确保我们没有试图解决错误的问题。