2014-04-26 57 views
0

我有一個opengl庫(過剩)的問題。 安裝此2:OpenGl庫不工作

sudo apt-get install freeglut3 freeglut3-dev 
sudo apt-get install binutils-gold 

,當我寫:

g++ -lGL -lglut test1.cpp -o test 

我有這樣的錯誤:

/usr/bin/ld: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-  gnu/libGL.so: No such file or directory 
/tmp/cc0332Hc.o:test1.cpp:function draw(): error: undefined reference to 'glClearColor' 
/tmp/cc0332Hc.o:test1.cpp:function draw(): error: undefined reference to 'glClear' 
/tmp/cc0332Hc.o:test1.cpp:function draw(): error: undefined reference to 'glFlush' 
collect2: ld returned 1 exit status 0 

我用初等O的最後一個版本和gcc編譯器

回答

0

GLUT是 「中的」 OpenGL庫。恰恰相反。它只是用於openGL的一些實用程序庫。

看起來你沒有安裝OpenGL實現,它們通常是圖形驅動程序或操作系統本身的一部分。在Linux上,有來自NVIDIA和AMD的專有驅動程序,以及在Mesa3D項目中開發的開源驅動程序。哪一個最適合你取決於你正在使用的GPU。

+0

許多發行版的軟件包是「libgl1-mesa-dev」或GPU驅動程序 – PeterT

+0

嗨感謝您的幫助,即時工作安裝,所以我有我的圖形卡ATI raden高清5500的隱性驅動程序,我需要卸載此安裝Mesa? –

+0

專有的ATI驅動程序確實包含了一個opengl實現。不需要切換到mesa然後(雖然檯面也應該有一些開源的GPU驅動程序)。是的,你可以安裝一個或另一個。 – derhass

0

命令行中指定的庫鏈接順序很重要。在這種情況下,libglut.so對libGL.so有依賴性,所以命令行應該有-lglut BEFORE -lGL。像這樣:

g++ test1.cpp -lglut -lGL -o test 
+0

好點,但我認爲ld不會報告「[...]/libGL.so:沒有這樣的文件或目錄」,如果它只是錯誤的順序。 – derhass

+0

Ty的幫助! :d。但是我有與你的命令行相同的錯誤。 g ++ test1.cpp -lglut -lGL -o test /usr/bin/ld:error:無法打開/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64- linux-gnu/libGL.so:沒有這樣的文件或目錄 /tmp/ccSowmNR.o:test1.cpp:function draw():error:undefined reference to'glClearColor' /tmp/ccSowmNR.o:test1.cpp:函數draw():error:undefined reference to'glClear' /tmp/ccSowmNR.o:test1.cpp:function draw():error:未定義引用'glFlush' collect2:ld返回1退出狀態 –

+0

對不起 - 我原來並沒有看到錯誤消息的第一行的結尾。在那種情況下,我相信@derhass正朝着正確的方向前進。 –