2010-08-13 76 views
10

我想在Ubuntu 10.04(我有一個32位系統)下構建一個非常簡單的OpenGL應用程序。g ++鏈接器:/usr/lib/libGL.so.1:無法讀取符號:無效操作

當我試圖編譯文件,我得到錯誤信息:

g++ -L/usr/lib simple.cpp -lglut 
/usr/bin/ld: /tmp/ccoPczAo.o: undefined reference to symbol 'glEnd' 
/usr/bin/ld: note: 'glEnd' is defined in DSO //usr/lib/libGL.so.1 so try adding it to the linker command line 
//usr/lib/libGL.so.1: could not read symbols: Invalid operation 
collect2: ld returned 1 exit status 

有誰知道我做錯了嗎?

+0

不是真的關係到你的問題,但我看到你正在使用glEnd(),因爲GL3它被廢棄了。如果你開始使用OpenGL編程,我建議你從「核心配置文件」開始使用GL3 +。舊的OpenGL不僅速度慢,而且非常有限。 – glampert 2014-03-29 18:26:11

回答

17

您需要在命令行中包含opengl庫以及glut庫/。 嘗試增加-lGL到命令行的末尾

g++ -L/usr/lib simple.cpp -lglut -lGL 
+0

謝謝。它部分解決了我的問題,所以我可以完成剩下的工作(不得不添加'-lGLU')。 – phimuemue 2010-08-13 12:48:32

+9

任何人都可以解釋爲什麼打印 '/usr/lib/libGL.so.1:無法讀取符號:無效的操作? 這看起來像試圖讀取缺少的庫,但失敗。 – 2012-03-21 17:21:45

1

編譯

g++ main.cpp -o main.bin -lGL -lGLU -lglut 

OpenGL primer嘗試以下方法使文件是非常緊湊。 這個幫助我運行我的Hello world OpenGL。 由於OpenGL Primer

CC = g++ 
SRC = main.cpp imageloader.cpp 
LIBS = -lGL -lGLU -lglut 
EXEC = cube.bin 

all: 
     $(CC) $(SRC) -o $(EXEC) $(LIBS) 

clean: 
     rm -rf $(EXEC) *~