2013-10-21 65 views
1

我只是想在OpenGL编程开始,所以从我的Ubuntu软件仓库安装freeglut3和我已经安装了所有的台面包,以及构建必需品。的OpenGL在Ubuntu Linux - 链接错误:未定义的引用

后来,我复制的openGL wiki
在第一个简单的例子,我试图编译它:gcc triangle.c -o triangle.o;
但是,后来,我读到这里:Linker error : undefined reference to symbol 'glOrtho',我要链接的库与-l。
于是,我试着用gcc triangle.c -lglut -lGL -Wall -o triangle.o

都返回相同的错误:

/tmp/ccKLT4ac.o: In function `main': 
triangle.c:(.text+0x2b): undefined reference to `glutInit' 
triangle.c:(.text+0x37): undefined reference to `glutInitDisplayMode' 
triangle.c:(.text+0x4b): undefined reference to `glutInitWindowSize' 
triangle.c:(.text+0x57): undefined reference to `glutCreateWindow' 
triangle.c:(.text+0x5c): undefined reference to `glewInit' 
triangle.c:(.text+0x73): undefined reference to `glewGetErrorString' 
triangle.c:(.text+0xaa): undefined reference to `glutDisplayFunc' 
triangle.c:(.text+0xaf): undefined reference to `glutMainLoop' 
collect2: error: ld returned 1 exit status 

我试图包括gl.h & glu.h库,尝试了很多不同的cpp示例程序,...和很多组合。所有返回类似的错误。

啊,在/ usr /包括我所有的库:

[email protected]:~$ ls /usr/include/GL 

freeglut_ext.h glext.h  glu_mangle.h glx.h   glxproto.h 
freeglut.h  gl.h   glut.h  glxint.h  glxtokens.h 
freeglut_std.h gl_mangle.h glxew.h  glx_mangle.h internal 
glew.h   glu.h  glxext.h  glxmd.h  wglew.h 
+0

你没有提到安装GLEW包进行编译,也不你的链接器指令包含'-lGLEW'。即使在你解决了过量问题之后,你也会遇到问题,直到你做到这一点。 –

+0

正确!谢谢。 – Akronix

回答

5

尝试将这些库在最后

gcc triangle.c -Wall -o triangle -lglut -lGL 
+0

在这两种情况下,该库位于源代码之后,就动'-Wall'和'-o'出的文件实际上解决这个问题。此外,不应该有编译对象文件为每'* .o'约定'-c'说法? – jozxyqk

相关问题