我正在做一个opengl程序,找到了一个做我想要的例子,但当我尝试编译它时,使用
gcc -o picksquare picksquare.c -lglut
我明白了:
/tmp/cchE9Z0Y.o: In function `pickSquares':
picksquare.c:(.text+0x41d): undefined reference to `gluPickMatrix'
picksquare.c:(.text+0x442): undefined reference to `gluOrtho2D'
/tmp/cchE9Z0Y.o: In function `reshape':
picksquare.c:(.text+0x508): undefined reference to `gluOrtho2D'
collect2: ld returned 1 exit status
代码示例在这里: http://www.opengl.org/resources/code/samples/redbook/picksquare.c
Thanx为你的答案人,但用-lglu调用说它找不到glu,用-lGL调用给出了相同的未定义引用。这是什么东西?有谁知道吗?
答案 0 :(得分:2)
试试这个:
gcc filename_here -lglut -lGLU
这应该可以正常工作。上面句子中的最后一个单词是 lGLU (狮子不是一个而是l)。
答案 1 :(得分:1)
因为您正在调用GLU库中的函数(与GLUT不同),而不是链接到它。
将-lglu
添加到命令行。
请注意,失败的功能有glu
作为前缀,而不是glut
。
如果添加-lglu会给您一个新错误,这可能意味着您的开发系统没有安装GLU库。它是一个独立于OpenGL的optionalal库,所以只是因为你已经为OpenGL安装了开发支持,所以不能保证你也有它用于GLU。
答案 2 :(得分:0)
看起来您没有安装必要的库或,您需要将LD_LIBRARY_PATH指向正确的位置以获取libglut.so。
答案 3 :(得分:0)
AFAIK,gluOrtho2D
&合。你必须链接libGL,这意味着你必须在命令行上添加一个-lGL
开关。
答案 4 :(得分:0)
好的,发现问题,我没有将glu库添加到gcc编译器,addind'-lGLU'解决了这个问题。 Thanx反正人啊!!