实验问题:运行最简单”hello world!”,出现can’t find -lGL的问题
实验阵地: ubuntu14.04+qt5.2
问题分析:
出现该类问题的原因有2个:
(1)没有安装libGL;
(2)libGL没有正确链接。
问题解答:
(1)如果是问题1,这个好办。只要安装libGL即可。这个在其他博客中也都有提到, 如https://blog.sina.com.cn/s/blog_500bd63c0102uzmt.html
只需终端执行
1 | $ sudo apt-get install build-essential |
安装libGL即可。(libGL是openGL的库)
(2)如果是问题2,就稍微难办一点。
首先,我们利用命令
1 | $ /sbin/ldconfig -v | grep GL |
查看所有有关GL的链接库的链接关系。
如果是问题2,则会有这样的打印信息
1 | /sbin/ldconfig.real: Cannot stat /usr/lib/x86_64-linux-gnu/mesa/libGL.so: No such file or directory |
表示”无法获取libGL的链接信息:没有该文件或目录”。我们进入/usr/lib/x86_64-linux-gnu/mesa/
1 | $ cd /usr/lib/x86_64-linux-gnu/mesa/ |
确实能找到libGL.so。但因为不存在与之相关的硬链接,而导致libGL.so失效。
这时候,应该怎么办呢?
a)首先我们进一步确认一下libGL.so是否失效。(毕竟之后涉及到在/usr/lib/x86_64-linux-gnu文件夹下删除,一不小心删错了,可是要命的)
1 | $ ls -l libGL.so |
查看libGL的硬链接,如果libGL存在硬链接的话,会出现类似信息:
1 | lrwxrwxrwx 1 root root 13 12月 4 20:42 libGL.so -> ../libGL.so.1 |
如果出现
1 | 0 libGL.so |
或其他错误信息,则说明这个libGL.so已经失效。
b)之后,搜索是否存在libGL.so的硬链接。(一般如果第一步,安装已经做过的话,是肯定存在的)
1 | $ cd |
打印信息
1 | /usr/lib/x86_64-linux-gnu/mesa/libGL.so |
我们发现在/usr/lib/x86_64-linux-gnu/文件夹下存在硬链接libGL.so.1.0.0
接下来,我们的问题就只剩下如何让/usr/lib/x86_64-linux-gnu/mesa/libGL.so关联上/usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
由于在/usr/lib/x86_64-linux-gnu/中libGL.so.1是libGL.so.1.0.0的软链接,所以我们只要将/usr/lib/x86_64-linux-gnu/mesa/libGL.so关联上/usr/lib/x86_64-linux-gnu/libGL.so.1即可
执行以下操作:
1 | $ cd /usr/lib/x86_64-linux-gnu/mesa/ |
重新运行
1 | ls -l libGL.so |
这时应该会有打印信息
1 | lrwxrwxrwx 1 root root 13 12月 4 20:42 libGL.so -> ../libGL.so.1 |
再次运行
1 | $/sbin/ldconfig -v | grep GL |
1 | /sbin/ldconfig.real: Cannot stat /usr/lib/x86_64-linux-gnu/mesa/libGL.so: No such file or directory |
上述错误会消失。
重新编译qt,编译成功!