在 Ubuntu 14.04 64 位上使用 libexpat 链接 32 位应用程序失败

在 Ubuntu 14.04 64 位上使用 libexpat 链接 32 位应用程序失败

我正在尝试构建 i386 版本的 fontconfig 包,但 configure 脚本无法找到 expat 库,该库已安装在两种架构中。失败的测试应用程序构建命令:

> gcc-4.8 -m32 -o conftest expat.test.c -lexpat 
/usr/bin/ld: cannot find -lexpat
collect2: error: ld returned 1 exit status
Exit 1
ldd: ./conftest: No such file or directory

但是,当我传递库的完整路径而不是 -lexpat 时,命令会成功:

> gcc-4.8 -m32 -o conftest expat.test.c /lib/i386-linux-gnu/libexpat.so.1 ; ldd conftest
    linux-gate.so.1 =>  (0xf7759000)
    libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf76f8000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7549000)
    /lib/ld-linux.so.2 (0xf775a000)

lib32gcc-4.8-dev 包已安装。

这是否与我必须手动创建 i686-linux-gnu-objcopy 和 ditto-strip 符号链接到 /usr/bin/{objcopy,strip} 并且还缺少 i686-linux-gnu-gcc 命令有关?

答案1

我在 64 位 Linux 上遇到了完全相同的问题。通过安装expat1-dev32 位版本解决了这个问题

这是命令

sudo apt-get install libexpat1-dev:i386

答案2

我找到了一个更好的解决方案:我在 launchpad 上创建了自己的 PPA。您只需完成一次设置密钥并安装所需的附加软件包,然后您就可以依靠 buildbot 在需要 32 位版本时安装 32 位要求。他们通过使用 64 位和 32 位虚拟机解决了这个问题,这样他们就不会遇到多架构冲突或故障。

相关内容