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
。您可以随时运行安装程序(不仅仅是首次安装)。而已。
它的作用是lib32.txz
从http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.1-RELEASE/之类的地方获取压缩包,并将其解压缩到/usr/lib32
。记住要获取正确的版本(与确认uname -a
)。如果愿意,也可以手动执行此操作。也许您已经在/usr/freebsd-dist
DVD中或DVD上获得了它。
如果您手动进行操作,则可能需要告知ldconfig
您有新的库。或者,如果将它们放置在不寻常的位置,则需要更正路径。
ldconfig -32 /usr/lib32/ /usr/local/lib32/compat/
...或者...
ldconfig -v -m -R /usr/lib32
您几乎没有说出为什么要在64位系统上运行32位二进制文件。如果是因为它实际上是在旧版本上制作的,则您可能需要以下兼容软件包之一:misc / compat8x,misc / compat9x,misc / compat10x,misc / compat11x
只是要确保:您知道您通常会在最新系统上将amd64(i386-64)作为目标吗?i386
只有32位,而我们已经移至64位。这对您来说可能是微不足道的,但是由于问题中缺少上下文,我只想确保我们没有尝试解决错误的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句