[Share Experiences] can not find -lgl,记一次Qt Creator编译报错问题的解决
Tofloor
poster avatar
sammy-621
deepin
2022-08-16 21:53
Author

某次在终端使用apt 进行软维护时,提示某些软件包不再使用,可以使用autoremove进行清理。当时没多想,就依照提示使用autoremove进行了清理,具体清理了哪些地方的哪些软件包、链接,我也没仔细看。
可能正是由于此次的操作,导至后来在Qt Creator打开以前的项目时,提示:cannot find -lgl
经过一番资料查找,了解到,其实是libGL.so这个文件无法被Qt Creator调用(应该是/usr/lib/ld 直接调用的libGL.so,确切地说,调用/usr/lib/libGL.so),才导致的这个提示。
libGL.so是个什么东西呢?是跟OpenGL有关的库文件。Deepin系统是应该都有的,执行以下命令查找一下:

find /usr/lib/ -name libGL*.so

查到如下结果:

/usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so
/usr/lib/mesa-diverted/x86_64-linux-gnu/libGLESv2.so
/usr/lib/mesa-diverted/x86_64-linux-gnu/libGLESv1_CM.so
/usr/lib/x86_64-linux-gnu/libGL.so

不仅有,还有好几个版本,但在/usr/lib 目录下,确实没有。没有那就动手建一个软链,执行命令如下:

sudo ln -s /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1.7.0 /usr/lib/libGL.so

接下来用Qt Creator打开项目,编译、运行,一切正常,问题得以解决。
如果你也遇到了类似的问题,以上解决思路与过程,希望能帮到你。如果你有更好的解决方案,请在评论区交流。

Reply Favorite View the author
All Replies
诗羔羊
deepin
2022-08-17 01:20
#1

QMake

CONFIG += link_pkgconfig
PKGCONFIG += gl

CMake

find_package(PkgConfig REQUIRED)
pkg_check_modules(GL REQUIRED gl)
include_directories(${GL_INCLUDE_DIRS})
target_link_libraries(${GL_LINK_LIBRARIES})

Reply View the author
Comments
zccrs
2022-08-17 01:29
正解
sammy-621
deepin
2022-08-17 05:24
#2
诗羔羊

QMake

CONFIG += link_pkgconfig
PKGCONFIG += gl

CMake

find_package(PkgConfig REQUIRED)
pkg_check_modules(GL REQUIRED gl)
include_directories(${GL_INCLUDE_DIRS})
target_link_libraries(${GL_LINK_LIBRARIES})

error: gl development package not found
我把建立的软链接/usr/lib/libGL.so删除,采用你说的方法 ,结果提示以上错误。是我的环境问题吗?
我觉得,你的方法只是告诉配置,要包含相应的库文件,本质上没有解决找不到库文件的问题。不知道是否具有通用性。

Reply View the author
诗羔羊
deepin
2022-08-17 16:41
#3
It has been deleted!
诗羔羊
deepin
2022-08-17 16:42
#4
It has been deleted!
sammy-621
deepin
2022-08-17 17:09
#5

唉,我这一不小心把诗羔羊的火给点着了,非常不好意思。我本意不是否定,而是提问与交流,如果言语有冒犯,或问题比较低级,请多包含,非常感谢你给出的指导。

Reply View the author
xuqi
deepin testing team
2022-08-19 19:30
#6

👍

Reply View the author
sammy-621
deepin
2023-02-14 05:41
#7

在最新的V23 Alpha2里,可以直接用以下命令:


sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1.7.0 /usr/lib/libGL.so

Reply View the author