【问题标题】:Build OpenGL application for both x86 and x64 architectures on Ubuntu 12.04 64-bit在 Ubuntu 12.04 64 位上为 x86 和 x64 架构构建 OpenGL 应用程序
【发布时间】:2014-03-29 20:52:57
【问题描述】:

我使用的是 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 

现在,我的问题是:在哪里以及如何获得 GL 和 glut 的 32 位版本,以及在构建 32 位时如何链接它们二进制,如果可能的话?

更新: 我安装了 freeglut 的 :i386 变体,但现在两种架构都出现以下链接错误:

/usr/bin/ld: error: cannot find -lGL
/usr/bin/ld: error: cannot find -lglut

【问题讨论】:

  • 另外,我看到安装 i386 变体会删除 amd64 一个,反之亦然。

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


【解决方案1】:

使用multiarch 包选项应该可以。使用魔法命令:

dpkg --add-architecture <arch>

如果仍然有问题,last solution 将是一个带有debootstrap 的小型 32 位 chroot

/usr/sbin/debootstrap --arch i386 jessie \
     /mnt/yournewsmall32bitenv http://ftp.us.debian.org/debian

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 2018-04-06
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多