交叉编译Qt5.12.8(linux-aarch64),在配置文件添加 -gbm,报错(ERROR: Feature ‘gbm‘ was enabled, but the pre-condition)
摘要:在交叉编译Qt5.12.8时,配置启用eglfs-kms-gbm遇到问题。尽管正确设置了库路径和头文件,但编译失败。原因是Qt5.12.8版本中,GBM并不作为独立插件存在,而是集成在KMS插件中(qtbase/src/plugins/platforms/eglfs/deviceintegration目录下无单独eglfs_kms_gbm子目录)。这与Qt5.15+版本不同,后者将GBM分离
·
环境:Qt5.12.8源码
交叉编译器:Linux-aarch94-gnu
在交叉编译的Qt5.12.8时,我需要能够启用eglfs来实现硬件加速,配置文件内容时添加了 -eglfs -kms -gbm
下面我的qt配置文件不仅配置了eglfs kms 还添加了gbm
export QT_FORCE_FEATURE_gbm=1
export QT_FORCE_PRECONFIGURED_TESTS=1
./configure \
-prefix /opt/qt_em800_5.12.8 \
-v \
-sysroot / \
-confirm-license \
-opensource \
-release \
--enable-linuxfb \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-optimized-qmake \
-pch \
-sql-sqlite \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-qt-freetype \
-tslib \
-opengl es2 \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-xcb \
-eglfs -kms \
-gbm \
-no-pkg-config \
-dbus \
-no-separate-debug-info \
-nomake examples \
-nomake tools \
-no-dbus \
-D QT_QWS_CLIENTBLIT \
-I /opt/tslib/include \
-I /usr/include/aarch64-linux-gnu \
-I /usr/include/drm \
-I /usr/include \
-L /opt/tslib/lib \
-L /usr/lib/aarch64-linux-gnu \
-skip qtbase/config.tests/gbm \
-skip qtbase/config.tests/drm/gbm \
'QMAKE_CFLAGS += -I/usr/include -DQT_FEATURE_gbm=1' \
'QMAKE_LIBS += -L/usr/lib/aarch64-linux-gnu -lgbm -ldrm' \
-recheck-all
然后编译怎样都不通过,链接库和头文件都没错,就是无法配置成功
原因:在Qt 5.12.8的源码中,qtbase/src/plugins/platforms/eglfs/deviceintegration目录下没有eglfs_kms_gbm子目录

为什么 Qt 5.12.8 中没有单独的 GBM 插件?
-
架构设计:
- Qt 5.12 将 GBM 作为 KMS 插件的一部分
- 不是独立的集成
-
版本差异:
- Qt 5.15+ 将 GBM 分离为独立插件
- Qt 5.12 使用更集成的设计
-
向后兼容:
- 在 Qt 5.12 中,
eglfs_kms自动使用 GBM(如果可用)
- 在 Qt 5.12 中,
解决方案:
方法1 :升级QT版本
方法2:去掉配置项里的 -gbm
更多推荐




所有评论(0)