2012-01-17 228 views
1

我使用的是Fedora 16.我已經安裝了freeglut和freeglut-devel軟件包。我試圖朗姆酒一個簡單的OpenGL程序,但我發現了以下錯誤未定義引用符號'gluLookAt'

gcc cube.c -o cube -lglut 
/usr/bin/ld: /tmp/ccSFol4w.o: undefined reference to symbol 'gluLookAt' 
/usr/bin/ld: note: 'gluLookAt' is defined in DSO /usr/lib/libGLU.so.1 so try adding it to the linker command line 
/usr/lib/libGLU.so.1: could not read symbols: Invalid operation 
collect2: ld returned 1 exit status 
+5

來吧。你是否告訴我你google'd'未定義的參考',並沒有提出解決方案?即使StackOverflow本身也有很多條目可以提出這個問題。 – pmr 2012-01-17 09:41:59

+0

爲什麼有人總是如此吝嗇地回答他不感興趣或無法回答的問題?這個問題幫助我解決了一個類似的問題。這個問題和提問者應該受到尊重。 – user2384994 2014-05-10 12:10:18

回答

2

你必須鏈接一些gl庫。

g++ cube.c -o cube -I /usr/lib/libglut.so.3 /usr/lib/libGL.so.1 /usr/lib/libGLU.so.1 -lGL 
2

做什麼它說

gcc cube.c -o cube -lglut -lGLU 
+0

謝謝,但我得到以下錯誤。 /tmp/ccYMzpUF.o:在函數'drawbox'中:cube.c :(.text + 0x1a):對'glBegin'的未定義引用就像這樣它列出了以gl開頭的所有函數.. – 2012-01-17 10:15:47

+1

然後添加-lGL。你真的應該讀一些關於鏈接器的東西。 – stativ 2012-01-17 10:30:15

+0

我收到了同樣的錯誤。未定義的引用glBegin。 – 2012-01-17 10:38:46

2

我覺得你應該諮詢編譯器,連接和庫一些介紹文字,即構建程序時各部分是如何結合在一起的。從本質上講,鏈接器告訴你,有一些鬆散的目標,並且由於它們而無法完成程序的鏈接。添加一個庫發生在帶有庫名的-l開關(在你的情況下是GLU),而不是給它一個庫文件的完整路徑。

0

我在Ubuntu得到了完全相同的問題12.04 LTS,當我寫:

g++ square.cpp -lglut 

但後來我在網絡上發現,一些人也加入-lGL和lGLU所以我做到了,它現在編譯:

g++ square.cpp -lglut -lGL -GLU 
+0

'gut'庫有什麼作用? – genpfault 2013-02-19 20:47:18

+1

對不起,它當然應該是-lglut而不是-lgut。它是一個需要的OpenGL庫,你可以在這裏閱讀更多: http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit – zelgit 2014-02-28 01:50:49

6

編譯:g++ sampleCode.cpp -lglut -lGL -lGLU

運行:./a.out

是你的答案。