ubuntu18.06
error: '/usr/lib/x86_64-linux-gnu/libGL.so'
,最终确定是由于系统中缺少libGL.so
cd /usr/lib/x86_64-linux-gnu/
libGL.so
这个文件的,如参考文章3libGL.so
,只有libGL.so.1
和libGL.so.1.0.0
这两个文件,类似于参考文章2libGL
库sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
虽然就算安装了可能也并不能解决问题
libGL.so
,如果查找到了就好办了,把这个libGL.so
复制到/usr/lib/x86_64-linux-gnu/
路径下,命令为sudo cp xxx/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so
但是,这里我整个电脑都没有找到,所以我把libGL.so.1
复制一份为了libGL.so
sudo cp /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so
建立的是什么链接,查看一个库文件的链接方式为:(这是摘自从另一台电脑中获得的正确链接方式)wrx@wrx:/usr/lib/x86_64-linux-gnu$ ls -l libGL.so
lrwxrwxrwx 1 root root 14 5月 10 20:17 libGL.so -> libGL.so.1.0.0
libGL.so
,也知道了正确的链接方式,下面进行链接sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
若提示无法创建符号链接,文件已经存在,就把已经存在的那个文件用sudo rm删掉,我就是备份后直接删掉了
直接删掉不太放心,先sudo cp备份一下
这是因为涉及到这些符号链接文件需要用绝对路径,也就是说,即使你在该目录下,也不要用./libGL.so这种方式,而是要老老实实带上/urs/lib/x86…
手动链接
ls -n /usr/lib/x86_64-linux-gnu/libGL.so
查看其链接状态,一方面可以ls该目录下的所有文件看是否有红名存在。sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so
省去后面的参数就是自动链接,因为这里自动链接到另外一个so文件,且链接完了之后还是红名+链接断开状态,这里是参考的别人的libGL.so.1.0.0
,然后建立的链接,但是使用ls -n
检查发现三者之间的没有互相连接,但是三者之间存在链接ldd pointcloud_mapping
,查看可执行文件的链接库链接情况,发现:libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f127af3d000)
最后链接的还是libGL.so.1
,emmm,迷惑,但是问题至少是这个问题解决了
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
查看其链接状态
ls -n /usr/lib/x86_64-linux-gnu/libGL.so
sudo apt-get install apt-file
sudo apt-file update
这样,就装好了该工具
如果要搜索什么lib,如本文的libGL.so,则输入:
sudo apt-file search libGL.so
返回:
libgl1: /usr/lib/x86_64-linux-gnu/libGL.so.1
libgl1: /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
libglvnd-dev: /usr/lib/x86_64-linux-gnu/libGL.so
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so.1
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so.340.106
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so.340.108
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so.1
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so.340.106
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so.340.108
primus-libs: /usr/lib/x86_64-linux-gnu/primus/libGL.so.1
virtualbox-guest-x11: /usr/lib/virtualbox/additions/libGL.so
virtualbox-guest-x11: /usr/lib/virtualbox/additions/libGL.so.1
virtualbox-guest-x11-hwe: /usr/lib/virtualbox/additions/libGL.so
virtualbox-guest-x11-hwe: /usr/lib/virtualbox/additions/libGL.so.1
可以看到你可能是什么包缺失,然后装上就好,比如这里我当时怀疑是libglvnd-dev没装,装了以后发现还是有上面的问题,其实应该先查该so文件是否存在才对,不要像无头苍蝇。