使用 -L/-l 时,GCC 链接器在 64 位系统上找不到 32 位库?



在 64 位系统中,如果我尝试使用以下方法编译configure测试,它会失败:

$ gcc -m32 -o conftest -L/usr/lib/i386-linux-gnu/ conftest.c -lfreetype
/usr/bin/ld: cannot find -lfreetype
collect2: ld returned 1 exit status

但如果我这样做,那就是成功的:

$ gcc -m32 -o conftest conftest.c /usr/lib/i386-linux-gnu/libfreetype.so.6

为什么在第一种情况下找不到 32 位 libfreetype.so.6?

运行时和开发系统之间存在差异。 链接器正在查找libfreetype.so但未找到它。 运行时的程序正在寻找libfreetype.so.6并找到了它。

您应该安装 FreeType 开发包。

不过,在付出这么多努力之前,您可以通过首先检查libfreetype.so/usr/lib/i386-linux-gnu中不存在,然后使用 root 权限来验证此假设:

cd /usr/lib/i386-linux-gnu
ln -s libfreetype.so.6 libfreetype.so

,然后重试第一个命令行。

如果有效,则删除刚刚创建的符号链接,然后安装 FreeType 开发包。

最新更新