2012-01-17 227 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

是你的答案。