【发布时间】: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