环境: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 插件?

  1. 架构设计​:

    • Qt 5.12 将 GBM 作为 KMS 插件的一部分
    • 不是独立的集成
  2. 版本差异​:

    • Qt 5.15+ 将 GBM 分离为独立插件
    • Qt 5.12 使用更集成的设计
  3. 向后兼容​:

    • 在 Qt 5.12 中,eglfs_kms 自动使用 GBM(如果可用)

解决方案:

方法1 :升级QT版本

方法2:去掉配置项里的 -gbm

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐