在Ubuntu 12.04 64位上为x86和x64架构构建OpenGL应用程序

时间:2014-03-29 20:52:57

标签: opengl linker ubuntu-12.04 glut 32-bit

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

1 个答案:

答案 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