库文件libGL.so或libEGL.so无法链接问题-The imported target "Qt5::Gui" references the file
引言
编译出错如下:
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:27 (message):
The imported target "Qt5::Gui" references the file
"/usr/lib/x86_64-linux-gnu/libGL.so"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
"/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake"
but not all the files it references.
Call Stack (most recent call first):
/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:50 (_qt5_Gui_check_file_exists)
/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:74 (_qt5gui_find_extra_libs)
/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:158 (include)
/usr/lib/x86_64-linux-gnu/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake:99 (find_package)
/usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:26 (find_package)
CMakeLists.txt:56 (find_package)
或者
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:27 (message):
The imported target "Qt5::Gui" references the file
"/usr/lib/x86_64-linux-gnu/libEGL.so
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
"/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake"
but not all the files it references.
Call Stack (most recent call first):
/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:50 (_qt5_Gui_check_file_exists)
/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:74 (_qt5gui_find_extra_libs)
/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:158 (include)
/usr/lib/x86_64-linux-gnu/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake:99 (find_package)
/usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:26 (find_package)
CMakeLists.txt:56 (find_package)
找到相应的路径查看该文件的属性,显示链接已断。自己解决时还误把原文件给删除了。
最后折腾了很久现总结解决方案如下:
1、首先查看该文件是否存在
ls /usr/lib/x86_64-linux-gnu | grep -i libegl
如果该文件不存在,什么都不会弹出。
locate libGL
查找本地的其他路径里面的libGL.so文件,然后以管理员权限复制一份过去。(一般情况下是有的,只是我操作不当误删除了)
sudo su #输入密码
cp libGL.so /usr/lib/x86_64-linux-gnu/ #在libGL.so所在文件夹操作,不过无论在哪儿把路径添加正确就行
2、使用命令行进行链接
ls -l /usr/lib/x86_64-linux-gnu/libGL.so #ln -s 源文件 目标文件 省略源文件则链接到共享库(x-sharedlib)
如果出现:ln: 无法创建符号链接"/usr/lib/x86_64-linux-gnu/libGL.so": 文件已存在, 先移除:
sudo rm /usr/lib/x86_64-linux-gnu/libGL.so
当然移除前最好先备份以防万一,不然又得重复第一步操作.最后进行链接.链接也可以链接到类似的版本或者其他文件夹的libGL.so。成功后也可以在文件夹看一下文件的属性是否连接上。
sudo ln /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
记录一下吧。