【问题标题】:simple openGL program fails to link in ubuntu简单的openGL程序无法在ubuntu中链接
【发布时间】: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:因为当链接器处理一个库时,它只拉入满足未定义引用的部分。如果它首先处理的是一个库,那么还没有任何引用,并且它不会使用该库。然后它看到下一个库,它仍然没有任何引用,也不会使用它。不仅库需要遵循对象,而且库也需要按照正确的顺序排列。 (注意:一些链接器是多通道的,并为您确定顺序)

标签: c++ opengl ubuntu linker


【解决方案1】:

可能是顺序 - 要么重新排序库,要么将它们放在 opengl.cpp 之后

【讨论】:

  • 非常感谢!虽然我不明白为什么当我将库放在文件之前时它不会链接
  • @knittl gcc.gnu.org/onlinedocs/gcc/Link-Options.html 看看'-l' 的解释 - 以'It make a difference' 开头的行
  • 是的,我已经阅读了手册页(在您对我的问题发表评论之后),但不明白这背后的原因。另外,链接器似乎以相反的顺序工作。本 voigt 对我的问题的评论解决了我的困惑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 2014-08-20
相关资源
最近更新 更多