【发布时间】:2011-03-05 23:59:34
【问题描述】:
我正在尝试进入 opengl 编程,但未能编译我的第一个非常非常简单的程序。链接过程每次都失败。我在 stackoverflow 上找到了this answer,并且已经安装了所有软件包并告诉 g++ 要链接哪些库。
这是我的示例程序:
#include <GL/glut.h>
#include <GL/gl.h>
int main(int argc, char **argv) {
glutInit(&argc, argv);
return 0;
}
编译导致链接器出现以下错误:
$ g++ -Wall -lglut -lGL -lGLU opengl.cpp
/tmp/cc1UAFPU.o: In function `main':
opengl.cpp:(.text+0x3b): undefined reference to `glutInit'
collect2: ld returned 1 exit status
有人对这个问题有任何想法吗?一定有什么我错过了,但我就是看不到什么。非常感谢任何解决此问题的提示!
【问题讨论】:
-
可能是有序的——要么重新排序库,要么将它们放在 opengl.cpp 之后
-
它适用于我的 Debian 测试、g++-4.4、freeglut3-2.6
-
@knittl:您好,您是否尝试过“项目->构建选项->链接器设置-->添加”,然后转到 /usr/lib 并添加“libGLU.so 和 libglut .a"
-
@george:我没有使用任何 IDE ...
-
@knittl:因为当链接器处理一个库时,它只拉入满足未定义引用的部分。如果它首先处理的是一个库,那么还没有任何引用,并且它不会使用该库。然后它看到下一个库,它仍然没有任何引用,也不会使用它。不仅库需要遵循对象,而且库也需要按照正确的顺序排列。 (注意:一些链接器是多通道的,并为您确定顺序)