为什么我的程序无法链接?

时间:2010-11-17 14:29:55

标签: gcc linker-errors

我正在做一个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调用给出了相同的未定义引用。这是什么东西?有谁知道吗?

5 个答案:

答案 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反正人啊!!