在2周前使用相同命令编译的程序中对glutInit的未定义引用

时间:2014-06-17 11:23:24

标签: c++ opengl ubuntu compilation glut

我的ubuntu装置最近死了,我现在正在重建所有东西。

我有一个我最近编译的文件并使用相同的评论。这是一个简单的基于opengl-glut的程序。

它使用以下行编译:

g++ -lGL -lGLU -lglut -I . *.cp

这给出了以下错误代码:

main.cpp:(.text+0x2de): undefined reference to `glGetDoublev'
/tmp/cc9vO929.o: In function `tbVisuTransform()':
main.cpp:(.text+0x2fd): undefined reference to `glMultMatrixd'
/tmp/cc9vO929.o: In function `tbMotionFunc(int, int)':
main.cpp:(.text+0x4f5): undefined reference to `glLoadIdentity'
main.cpp:(.text+0x523): undefined reference to `glRotatef'
main.cpp:(.text+0x52d): undefined reference to `glMultMatrixd'
main.cpp:(.text+0x53c): undefined reference to `glGetDoublev'
main.cpp:(.text+0x649): undefined reference to `glLoadIdentity'
main.cpp:(.text+0x665): undefined reference to `glRotatef'
main.cpp:(.text+0x66f): undefined reference to `glMultMatrixd'
main.cpp:(.text+0x67e): undefined reference to `glGetDoublev'
main.cpp:(.text+0x724): undefined reference to `glutPostRedisplay'
/tmp/cc9vO929.o: In function `tbRotate(double, double, double, double)':
main.cpp:(.text+0x78c): undefined reference to `glLoadIdentity'
main.cpp:(.text+0x7b5): undefined reference to `glRotatef'
main.cpp:(.text+0x7bf): undefined reference to `glMultMatrixd'
main.cpp:(.text+0x7ce): undefined reference to `glGetDoublev'

这种情况持续了很长一段时间。 我已经安装了构建必需和freeglut。 sudo apt-get install build-essential sudo apt-get install freeglut3 freeglut3-dev

有人有任何想法吗?

我已经尝试过他们在这里说的话: Error with GLUT compile in ubuntu

请注意,如果重要的话,我将从ubuntu 12.04升级到14.04。

1 个答案:

答案 0 :(得分:1)

基于thisthis链接,Ubuntu更改了Oneiric中的默认链接策略(Ubuntu 11.10)。

由于Oneiric及更高版本默认使用--as-needed标志,因此库的顺序在Ubuntu中很重要。