在64位机器上编译32位:/ usr / bin / ld:找不到-l <somelibs> </somelibs>

时间:2013-09-30 13:44:59

标签: c++ c ubuntu gcc g++

我目前正在尝试在64位Ubuntu 12.04计算机上编译一些代码为32位。如果我使用普通的make命令编译代码,它一切正常。

现在,为了将其编译为32位,我将-m32选项添加到C-&amp; CXXFLAGS。工作正常,直到我发现有关遗失的图书馆的错误,例如-lGL-lGLU-lX11-lXext-lpng。好的,我在-lGL中找到的第一个lib(/usr/lib32/nvidia-304)是我通过-L选项添加的。 其他库都在/usr/lib/i386-linux-gnu中找到,但是通过-L添加这些库并不能解决问题。

我在这里缺少什么?提前谢谢!

这是导致错误的完整gcc命令

gcc myprog.o -m32 (...) -lX11 -lXext -lpng -lm -L/usr/lib/i386-linux-gnu -lGL -L/usr/lib32/nvidia-304 -lpthread -o myprog
/usr/bin/ld: cannot find -lX11
/usr/bin/ld: cannot find -lXext
/usr/bin/ld: cannot find -lpng

另一件事:/usr/lib32/nvidia-304我在libGL.so内找到了libGL.la/usr/lib/i386-linux-gnu我只能找到.so个文件。

1 个答案:

答案 0 :(得分:1)

不确定它是否有帮助,但我前段时间有一个类似的问题,/usr/lib/i386-linux-gnu下缺少某些符号链接。也许你正面临着类似的问题?