我在Ubuntu 12.04上,我尝试编译和链接x86和x64架构的相同代码。它是一个基于 OpenGL 的简单3D应用程序。事实上,目前它甚至不是3D:
#include <GL/glut.h>
void draw(void)
{
// Background color
glClearColor(0, 1, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
// Draw order
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(50,25);
glutInitWindowSize(500,250);
glutCreateWindow("Green window");
glutDisplayFunc(draw);
glutMainLoop();
}
所以,我现在需要的只是lGL和lglut。我通过freeglut3包安装它们,我想只有64位版本是我得到的。当我为64位版本编译和链接时(使用-m64
)一切正常但是当使用-m32
进行时我得到了这些错误:
/usr/bin/ld: warning: skipping incompatible //usr/lib/x86_64-linux-gnu/libGL.so while searching for GL
/usr/bin/ld: error: cannot find -lGL
/usr/bin/ld: warning: skipping incompatible //usr/lib/x86_64-linux-gnu/libglut.so while searching for glut
/usr/bin/ld: error: cannot find -lglut
现在,我的问题是:在构建32位时,我在哪里以及如何获取32位版本的GL和过剩以及如何链接它们二进制,如果可能的话?
更新 我安装了freeglut的i386变体,但现在我得到了这两种体系结构的链接错误:
/usr/bin/ld: error: cannot find -lGL
/usr/bin/ld: error: cannot find -lglut
答案 0 :(得分:0)
使用multiarch包选项应该成功。用魔法命令:
dpkg --add-architecture <arch>
如果仍有问题,last solution将是一个小型的32位chroot debootstrap
/usr/sbin/debootstrap --arch i386 jessie \
/mnt/yournewsmall32bitenv http://ftp.us.debian.org/debian