OpenGL库不工作

Posted

技术标签:

【中文标题】OpenGL库不工作【英文标题】:OpenGl library dont work 【发布时间】:2014-04-26 16:51:23 【问题描述】:

我的 opengl 库(过剩)有问题。 我安装了这个 2:

sudo apt-get install freeglut3 freeglut3-dev
sudo apt-get install binutils-gold

当我写的时候:

g++ -lGL -lglut test1.cpp -o test

我有这个错误:

/usr/bin/ld: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-        gnu/libGL.so: No such file or directory
/tmp/cc0332Hc.o:test1.cpp:function draw(): error: undefined reference to 'glClearColor'
/tmp/cc0332Hc.o:test1.cpp:function draw(): error: undefined reference to 'glClear'
/tmp/cc0332Hc.o:test1.cpp:function draw(): error: undefined reference to 'glFlush' 
 collect2: ld returned 1 exit status 0

我使用最后一个版本的 Elementary Os 和 gcc 编译器

【问题讨论】:

【参考方案1】:

GLUT 不是“那个”OpenGL 库。恰恰相反。它只是一些用于 openGL 的实用程序库。

您似乎没有安装 OpenGL 实现,这通常是图形驱动程序或操作系统本身的一部分。在 Linux 上,有来自 NVIDIA 和 AMD 的专有驱动程序,以及在 Mesa3D 项目中开发的开源驱动程序。哪一个最适合您取决于您​​使用的 GPU。

【讨论】:

对于许多发行版,软件包要么是“libgl1-mesa-dev”要么是 GPU 驱动程序 嗨,谢谢你的帮助,我正在安装,所以我有我的显卡 ATI raden hd 5500 的私有驱动程序,我需要卸载它来安装 Mesa? 专有的 ATI 驱动程序确实包含一个 opengl 实现。那时不需要切换到台面(尽管台面也应该有一些用于该 GPU 的开源驱动程序)。是的,您可以安装其中一个或另一个。 谢谢你,你帮了我很多:D,对不起我的英语不好【参考方案2】:

命令行上指定的库链接顺序很重要。在这种情况下,libglut.so 依赖于 libGL.so,因此命令行应该在 -lGL 之前添加 -lglut。像这样:

g++ test1.cpp -lglut -lGL -o test

【讨论】:

好点,但我认为如果只是错误的顺序,ld 不会报告“[...]/libGL.so: No such file or directory”。 请帮忙! :D。但是我的命令行也有同样的错误。 g++ test1.cpp -lglut -lGL -o test /usr/bin/ld: 错误: 无法打开 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux- gnu/libGL.so: 没有这样的文件或目录 /tmp/ccSowmNR.o:test1.cpp:function draw(): error: undefined reference to 'glClearColor' /tmp/ccSowmNR.o:test1.cpp:function draw() : 错误:未定义对“glClear”/tmp/ccSowmNR.o:test1.cpp:function draw() 的引用:错误:未定义对“glFlush”collect2 的引用:ld 返回 1 个退出状态 对不起——我最初没有看到错误信息第一行的结尾。在这种情况下,我相信@derhass 正朝着正确的方向前进。

以上是关于OpenGL库不工作的主要内容,如果未能解决你的问题,请参考以下文章

openGL按鼠标中键实现放大缩小

OpenGL工作流程

着色器在 Opengl Shader Builder 上工作,但不在我的 OpenGL 应用程序中

OpenGL:深度缓冲向后工作,是不是按缠绕顺序?

OpenGL:glRotatef 不工作?

OpenGL 的缓冲区是如何工作的?