2011-12-18 79 views
7
gcc -lGL -lGLU -lglut light.c 
/tmp/ccfuthSi.o: In function `init': 
light.c:(.text+0x72): undefined reference to `glClearColor' 
light.c:(.text+0x7e): undefined reference to `glShadeModel' 
light.c:(.text+0x99): undefined reference to `glMaterialfv' 
light.c:(.text+0xb4): undefined reference to `glMaterialfv' 
light.c:(.text+0xcf): undefined reference to `glLightfv' 
light.c:(.text+0xdb): undefined reference to `glEnable' 
light.c:(.text+0xe7): undefined reference to `glEnable' 
light.c:(.text+0xf3): undefined reference to `glEnable' 
/tmp/ccfuthSi.o: In function `display': 
light.c:(.text+0x107): undefined reference to `glClear' 
light.c:(.text+0x121): undefined reference to `glutSolidSphere' 
light.c:(.text+0x126): undefined reference to `glFlush' 
/tmp/ccfuthSi.o: In function `reshape': 
light.c:(.text+0x150): undefined reference to `glViewport' 
light.c:(.text+0x15c): undefined reference to `glMatrixMode' 
light.c:(.text+0x161): undefined reference to `glLoadIdentity' 
light.c:(.text+0x1bf): undefined reference to `glOrtho' 
light.c:(.text+0x217): undefined reference to `glOrtho' 
light.c:(.text+0x223): undefined reference to `glMatrixMode' 
light.c:(.text+0x228): undefined reference to `glLoadIdentity' 
/tmp/ccfuthSi.o: In function `main': 
light.c:(.text+0x268): undefined reference to `glutInit' 
light.c:(.text+0x274): undefined reference to `glutInitDisplayMode' 
light.c:(.text+0x288): undefined reference to `glutInitWindowSize' 
light.c:(.text+0x29c): undefined reference to `glutInitWindowPosition' 
light.c:(.text+0x2a9): undefined reference to `glutCreateWindow' 
light.c:(.text+0x2ba): undefined reference to `glutDisplayFunc' 
light.c:(.text+0x2c6): undefined reference to `glutReshapeFunc' 
light.c:(.text+0x2d2): undefined reference to `glutKeyboardFunc' 
light.c:(.text+0x2d7): undefined reference to `glutMainLoop' 

正如你所看到的,我將所需的參數傳遞給gcc。爲什麼它不起作用? Linux Mint 12.GCC-ld不鏈接opengl

回答

16

它確實是一個常見問題解答(並且在這裏已經被詢問和回答了很多次)。爭議順序在鏈接時很重要。圖書館應該走到最後(並且順利)。您應該運行

gcc -Wall -g light.c -lGL -lGLU -lglut -o light 
+0

注意:不熟悉glut,我不完全確定庫的順序。你應該找出正確的! – 2011-12-18 18:04:41

+1

在共享庫系統的情況下,這並不重要,因爲過剩已經完成了所有的符號管理,並且您只是試圖滿足light.c的要求。 – 2011-12-18 19:16:15