Ubuntu下CMake编译Qt程序报错Qt5::Gui依赖的libEGL.so存在但找不到
问题排查与解决方法
基础排查步骤
- 首先确认系统中libEGL.so的实际存在路径,执行命令:
find /usr -name "libEGL.so*"
检查输出结果,确认文件是否存在、是否位于/usr/lib/x86_64-linux-gnu/目录下,排除架构不匹配、安装路径异常的问题。 - 重装EGL相关开发依赖包,修复可能的软链接异常:
sudo apt reinstall libegl1-mesa-dev libglvnd-dev
开发包重装过程会自动重建默认路径下的.so软链接,覆盖可能损坏的旧链接。 - 清空CMake缓存后重新配置,避免旧缓存的错误路径残留:
rm -rf build mkdir build && cd build cmake ..
针对性解决方案
情况1:libEGL.so存在但路径不匹配
如果第一步查到libEGL.so存在于其他路径,可二选一处理:
- 手动创建默认路径软链接,示例如下(将路径替换为你实际查到的libEGL.so版本路径):
sudo ln -s /usr/lib/x86_64-linux-gnu/libEGL.so.1 /usr/lib/x86_64-linux-gnu/libEGL.so - 在CMakeLists.txt的
find_package行之前添加指定EGL库路径的配置:set(EGL_LIBRARY /你的实际路径/libEGL.so)
情况2:使用NVIDIA闭源驱动
该场景下libEGL.so会被NVIDIA驱动接管,安装对应EGL配套包即可修复:sudo apt install nvidia-egl-common
CMakeLists.txt优化建议
你现有配置中target_link_libraries的Private关键字需要改为全大写的PRIVATE,避免部分CMake版本识别关键字异常引发关联错误,修改后代码如下:
target_link_libraries(LinuxProject1 PRIVATE Qt5::Widgets)
内容的提问来源于stack exchange,提问作者Dwight Schrute
相关产品推荐
相关产品推荐

