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库不工作的主要内容,如果未能解决你的问题,请参考以下文章