2011-12-18 10 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' 

Come potete vedere, ho passato i parametri richiesti al gcc. Perché non funziona? Linux Mint 12.GCC - ld non collega opengl

risposta

16

E 'davvero una FAQ (ed è stata chiesta e ha risposto molte volte qui). L'ordine degli argomenti è importante quando si collega. Le biblioteche dovrebbero andare per ultime (e nel buon ordine). È necessario eseguire

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

NB: non avendo familiarità con l'eccesso, non sono del tutto sicuro dell'ordine delle librerie. Dovresti scoprire quello corretto! –

+1

In caso di sistemi di librerie condivise, non importa, dal momento che la saturazione ha già completato tutte le operazioni di pulizia dei simboli e si sta tentando solo di soddisfare i light.c. –

Problemi correlati