为 Raspberry Pi 4 交叉编译 QtWebEngine

Cross compile QtWebEngine for Raspberry Pi 4

我使用 qt-everywhere-src-5.15.0.tar.xz 和 gcc-linaro-7.4.1-2019.02-x86_64_arm- linux-gnueabihf 工具链在 Ubuntu 18 上交叉编译 Qt,尤其是 QtWebEngine.

我使用以下配置:

../qt-everywhere-src-5.15.0/configure \
  -opengl es2 -device linux-rasp-pi4-v3d-g++ \
  -device-option CROSS_COMPILE=~/raspi/tools/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- \
  -sysroot ~/raspi/sysroot \
  -prefix /usr/local/qt5pi \
  -opensource -confirm-license -no-gbm \
  -skip qtscript -skip qtandroidextras -skip qtcanvas3d \
  -skip qtgamepad -skip qtmacextras -skip qtpurchasing \
  -skip qtwinextras -skip qtx11extras \
  -nomake tests -nomake examples -make libs \
  -pkg-config -no-use-gold-linker -v

如果我在配置命令中包含“-skip qtwebengine”,所有编译工作正常,但是当我包含 qtwebengine 时,配置失败并显示以下警告:

WARNING: Could not find all necessary libraries for qpa-xcb support in QtWebEngine.
WARNING: QtWebEngine will not be built.

经过一段时间的搜索,我知道了这个警告的原因。 QtWebEngine 使用 pkg-config,获取所需的库(例如 xtst、xcomposite 等)并获取 我主机系统上的库,而不是使用从树莓派复制的包。

如何配置它,以使用从 raspberry sysroot 复制的文件?

如果似乎缺少的唯一库是 xtst、xcomposite、xi 等。它们位于 /usr/share 中的 Pi 上。所以你的 sysroot 也必须同步那个文件夹。