2013-10-21 76 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

相關問題