GCC链接器不';当使用-L/-L时,在64位系统上找不到32位库?
在64位系统中,如果我尝试编译GCC链接器不';当使用-L/-L时,在64位系统上找不到32位库?,gcc,32bit-64bit,ld,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/
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开发包。我无法在我的64位系统上安装libfreetype6 dev:i386,因为它有缺陷的依赖项将迫使apt get删除gcc和其他重要的开发包。好的,然后您可以尝试使用kludge修复程序。如果这对支票有效,你可能没问题。当然,您正在配置的包很可能需要来自FreeType库的头文件,除非它只是依赖于FreeType的预编译包。无论如何,尝试一下kludge(我展示的ln-s
命令)是值得的。最糟糕的情况是,这还不够。但是,如果您继续遇到FreeType库的问题,那么为自己构建它并不困难。有趣的是,我本周正试图在64位机器上构建一些32位软件,我不得不修复几个库,每个库都有自己的符号链接,如前所述。