【发布时间】:2013-09-30 13:44:58
【问题描述】:
我目前正在尝试在 64 位 Ubuntu 12.04 机器上将一些代码编译为 32 位。如果我用正常的 make 命令编译代码,一切正常。
现在,为了将其编译为 32 位,我在 C- 和 CXXFLAGS 中添加了 -m32 选项。工作正常,直到我收到一些关于缺少库的错误,如-lGL、-lGLU、-lX11、-lXext、-lpng。好的,我在/usr/lib32/nvidia-304 中找到的第一个库(-lGL)是我通过-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 文件。
【问题讨论】:
-
只是为了澄清,
/usr/lib/i386-linux-gnu中有一个libpng.so? -
是的,
./usr/lib/i386-linux-gnu/libpng.so.3存在。 -
嗯,看来@lolando 可能是在正确的轨道上。您需要一个
libpng.so,它可能是指向libpng.so.3的符号链接。您是否以 Ubuntu 支持的官方方式安装了 32 位库? -
嗨,创建像
libpng.so到libpng.so.3这样的符号链接确实有效。我没有系统的 root 访问权限,所以我不知道它是如何安装的。