我正在尝试构建 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-dev
32 位版本解决了这个问题
这是命令
sudo apt-get install libexpat1-dev:i386
答案2
我找到了一个更好的解决方案:我在 launchpad 上创建了自己的 PPA。您只需完成一次设置密钥并安装所需的附加软件包,然后您就可以依靠 buildbot 在需要 32 位版本时安装 32 位要求。他们通过使用 64 位和 32 位虚拟机解决了这个问题,这样他们就不会遇到多架构冲突或故障。