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

Như bạn có thể thấy, tôi chuyển các tham số bắt buộc cho gcc. Tại sao nó không hoạt động? Linux Mint 12.GCC - ld không liên kết opengl

Trả lời

16

Đây thực sự là câu hỏi thường gặp (đã được hỏi và trả lời nhiều lần tại đây). Thứ tự các đối số quan trọng khi liên kết. Thư viện nên đi cuối cùng (và theo thứ tự tốt). Bạn nên chạy

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

NB: Không quen thuộc với glut, tôi không hoàn toàn chắc chắn về thứ tự của thư viện. Bạn nên tìm ra đúng! –

+1

Trong trường hợp hệ thống thư viện được chia sẻ, nó không quan trọng, vì glut đã có tất cả các biểu tượng vệ sinh của nó được thực hiện và bạn chỉ đang cố gắng để đáp ứng light.c's. –

Các vấn đề liên quan