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

时间:2012-06-17 19:07:12

标签: gcc 32bit-64bit ld

在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?

1 个答案:

答案 0 :(得分: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开发包。