树莓派3编译Qt 5.15.8 LTS遇EGLFS/OpenGL配置失败及运行问题求助
问题分析与解决方案
一、编译Qt 5.15.8时EGLFS/OpenGL预条件失败的解决办法
你的问题核心是树莓派最新系统默认采用Mesa开源驱动,而旧教程可能基于Broadcom闭源驱动,导致configure阶段依赖检测不通过。按以下步骤修复:
安装完整依赖包
先确保所有EGL、OpenGL ES、XCB相关的开发包都已安装:sudo apt-get update && sudo apt-get install libegl1-mesa-dev libgles2-mesa-dev libxcb1-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb-shm0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev调整configure参数
树莓派3仅支持OpenGL ES 2.0/3.0,不能直接用-opengl(对应桌面OpenGL),同时指定正确的设备参数,示例本地编译参数:./configure -release -opengl es2 -device linux-rpi3-g++ -prefix /usr/local/qt5.15.8 -opensource -confirm-license -skip qtwebengine -nomake examples -nomake tests -eglfs说明:
-opengl es2:指定使用OpenGL ES 2.0,适配树莓派硬件-device linux-rpi3-g++:明确树莓派3的设备配置,帮助configure正确检测依赖- 若之前交叉编译过,需先清理旧配置:
make distclean再重新configure
解决XCB插件缺失问题
安装上述XCB依赖包后,configure会自动启用XCB支持,无需额外参数。编译完成后,XCB插件会生成在/usr/local/qt5.15.8/plugins/platforms/目录下,运行程序时系统会自动识别。
二、直接使用系统默认Qt库的方案(避免40小时编译)
完全可以用系统预装的Qt 5.15.2库开发,步骤如下:
安装开发包
系统默认仅安装运行时库,需补充开发依赖:sudo apt-get install qtbase5-dev qtbase5-dev-tools qt5-qmake libqt5gui5 libqt5widgets5 libqt5core5a若用到QML、网络等其他模块,按需安装对应开发包,例如:
sudo apt-get install qtdeclarative5-dev qtnetwork5-dev在VSCode中配置CMake
在CMakeLists.txt中添加Qt模块查找和链接逻辑,示例:cmake_minimum_required(VERSION 3.16) project(YourAppName) set(CMAKE_CXX_STANDARD 17) set(CMAKE_INCLUDE_CURRENT_DIR ON) # 查找Qt模块 find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui) # 自动生成MOC/UI/RCC文件 set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) # 添加源文件 add_executable(YourAppName main.cpp mainwindow.cpp) # 链接Qt库 target_link_libraries(YourAppName Qt5::Core Qt5::Widgets Qt5::Gui)运行程序
- 若树莓派接了官方屏幕且未启动桌面环境,运行时指定EGLFS后端:
./YourAppName -platform eglfs - 若启动了桌面环境,直接运行即可(自动使用XCB后端)
- 若树莓派接了官方屏幕且未启动桌面环境,运行时指定EGLFS后端:
三、额外注意事项
- 检查树莓派显示配置:确保
/boot/config.txt中已启用dtoverlay=vc4-kms-v3d(默认最新系统已开启),这是Mesa驱动正常工作的前提 - 版本兼容说明:5.15.2和5.15.8同属LTS分支,API高度兼容,仅存在少量bug修复差异,绝大多数项目可直接替换
- 编译错误排查:若configure仍失败,查看
config.log文件,里面会详细记录哪个依赖未找到,针对性安装即可
内容的提问来源于stack exchange,提问作者lightshadown
相关产品推荐
相关产品推荐

