1

在 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

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

4

1 回答 1

3

运行时系统和开发系统之间存在差异。链接器正在寻找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 开发包。

于 2012-06-17T19:27:20.990 回答