树莓派5源码编译Qt无wayland-egl支持,如何解决并运行Qt程序?
一、让Qt编译时支持Wayland的步骤
1. 安装Wayland相关依赖包
Ubuntu 22.04默认使用Wayland,编译Qt需要完整的Wayland开发依赖,执行以下命令安装:
sudo apt install libwayland-dev libwayland-egl-backend-dev libegl1-mesa-dev libgles2-mesa-dev wayland-protocols libxkbcommon-dev libxcb-cursor-dev
这些包包含Wayland核心库、EGL绑定、协议定义及相关辅助库,是Qt检测Wayland-EGL支持的必要条件。
2. 修改Qt编译配置参数
在原配置参数基础上,添加Wayland支持的显式配置项,调整后的完整参数如下:
./configure -prefix /opt/Qt/Qt5.14.1 -opensource -confirm-license -nomake examples -dbus -no-separate-debug-info -release -wayland -qt-xcb
-wayland:强制启用Wayland平台插件的编译-qt-xcb:确保同时保留XCB(X11)后端支持,避免单一依赖Wayland导致兼容性问题
3. 重新编译安装
先清理之前的编译残留:
make distclean
执行新的configure命令,确认输出中出现Wayland ............ yes和Wayland EGL ........ yes的检测结果后,再执行:
make -j$(nproc) sudo make install
编译完成后,检查/opt/Qt/Qt5.14.1/plugins/platforms/目录下是否存在libqwayland-egl.so和libqwayland-generic.so,这两个是Wayland平台的核心插件。
二、其他让Qt应用在树莓派上运行的方法
如果Wayland配置仍有问题,可尝试以下替代方案:
切换到Xorg后端运行:
Ubuntu 22.04可在登录界面点击齿轮图标选择“Ubuntu on Xorg”,切换到X11环境。运行Qt应用时,可显式指定XCB平台插件:./your_qt_app -platform xcb若编译时未启用XCB支持,需在configure参数中添加
-qt-xcb重新编译。使用EGLFS后端(嵌入式无桌面环境场景):
若无需桌面环境,可启用EGLFS后端适配嵌入式全屏应用。编译时添加-eglfs参数,运行时指定平台:./your_qt_app -platform eglfs需确保树莓派GPU驱动正常,可通过设置环境变量
QT_QPA_EGLFS_INTEGRATION=eglfs_kms指定KMS/DRM集成方式。使用预编译Qt包:
放弃自行编译,直接安装Ubuntu官方源中的Qt包:sudo apt install qt5-default qtwayland5官方包已适配Ubuntu 22.04的Wayland环境,无需手动配置依赖。
内容的提问来源于stack exchange,提问作者CuboMan

