本页内容

为 QNX 构建 Qt

配置 QNX SDP

构建 Qt 6 需要从QNX 网站下载并安装 QNX SDP。

注意: 需要具备相应的许可 。如需了解更多信息,请联系 QNX。

注意:请勿将 QNX 软件中心中的实验性 Wayland 软件包添加到您的 QNX SDP 8.0 安装中。这些软件包虽然不是构建 Qt 的必需组件,但在配置 Qt 构建时可能会导致头文件冲突。

SDP 软件包中提供了编译器及工具链的其他组件。请在终端中从 SDP 安装文件夹运行 QNX 设置脚本,按以下方式初始化构建环境:

source qnxsdp-env.sh

或者在 Windows 命令行中运行 qnxsdp-env.bat。

主机构建

要进行 Qt 的交叉编译,必须具备 Qt 的主机构建环境。这是因为在构建过程中,某些工具(例如moc 、rcc 、qmlcachegen 和qsb )会从主机构建环境中调用。您有两种选择:

为 QNX 创建工具链文件

要使用 CMake 对项目进行交叉编译,需要一个工具链文件。此 CMake 语言文件会为平台名称、编译器/链接器以及许多其他与工具链相关的设置配置正确的值。 作为参考,您可以在源代码包coin/provisioning/common/shared/cmake_toolchain_files中找到 CI 中使用的工具链文件

set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR armle-v7)
set(arch gcc_ntoarmv7le)

set(CMAKE_C_COMPILER qcc)
set(CMAKE_C_COMPILER_TARGET ${arch})
set(CMAKE_CXX_COMPILER q++)
set(CMAKE_CXX_COMPILER_TARGET ${arch})

set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET};$ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR})

set(CMAKE_SYSROOT $ENV{QNX_TARGET})

示例文件适用于armv7le 。根据您的目标架构,其他可能的选项包括aarch64le 和x86_64 。

注意: 在 QNX 系统上,CMake 无法正确传递 STRIP、AR、RANLIB 和 NM 变量,因此如果需要使用这些变量,必须在工具链文件中单独指定。

为 QNX 配置和构建 Qt

要为 QNX 配置和构建 Qt,您需要以下内容:

  • 如《构建 Qt 源代码》中所述,用于构建Qt 的工具已在您的主机平台上安装并可正常运行。
  • 工具链文件,本例中为$HOME/qnx.cmake 。
  • 已检出或安装的 Qt 源代码,本例中位于$HOME/qt 目录下。
  • Qt 的主机构建版本,本例中为$HOME/qt-host 。
  • 本地系统上 Qt 构建安装位置的前缀,本例中为$HOME/qnx-install 。
  • 目标设备上 Qt 构建部署位置的前缀,本例中为/qt 。

创建并切换到build 目录后,运行以下命令:

$HOME/qt/configure -nomake examples -nomake tests \
-qt-host-path $HOME/qt-host \
-extprefix $HOME/qnx-install \
-prefix /qt \
-- -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
-DCMAKE_SYSTEM_VERSION=710  \
$HOME/qt

从 Qt 6 开始,Qt Configuration Tool 是 CMake 的封装,实际上,此 configure 命令等同于以下直接调用 CMake 的命令:

cmake -GNinja -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF \
-DQT_HOST_PATH=$HOME/qt-host \
-DCMAKE_STAGING_PREFIX=$HOME/qnx-install \
-DCMAKE_INSTALL_PREFIX=/qt \
-DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
-DCMAKE_SYSTEM_VERSION=710  \
$HOME/qt

请根据您的 QNX SDP 版本选择 CMAKE_SYSTEM_VERSION 的值:

  • QNX SDP 7.1 对应 710
  • QNX SDP 8.0 时为 800

如果您仅使用一个 QNX 版本,也可以在工具链文件中定义 CMAKE_SYSTEM_VERSION。

注意:在 Windows上构建时, 需要显式禁用 PCH(预编译头),因为启用它会导致 QNX 编译器崩溃。要禁用 PCH,请使用配置选项-no-pch 。

注意:若 使用 QNX SDP 8.0,请通过配置选项 `-skip qtremoteobjects -skip qtinterfaceframework` 跳过不受支持的模块及其依赖模块。

配置完成后若无错误,请运行以下命令构建 Qt:

cmake --build . --parallel

注意:QNX 编译器可能需要比主机构建所用编译器更多的内存。请使用--parallel <numOfProcesses> 来限制构建时的最大并发进程数。

构建完成后,运行以下命令:

cmake --install .

这将把构建结果安装到$HOME/qnx-install 。随后,您可以使用Qt Creator 、直接通过 scp 或其他方法将 Qt 构建结果部署到目标设备。配置参数-prefix (示例中为 /qt)定义了目标设备上的部署位置。

为目标设备构建应用程序

当您完成 Qt 构建并将结果安装到暂存位置后,即可开始构建示例或应用程序。

使用 CMake 时,请使用暂存位置(示例中为$HOME/qnx-install )bin 目录下生成的qt-cmake 脚本配置应用程序构建,然后运行 ninja。例如:

$HOME/qnx-install/bin/qt-cmake .
cmake --build .

随后,您可以将生成的应用程序二进制文件部署到设备上。使用qt-cmake 辅助脚本非常方便,因为该脚本会确保加载用于构建 Qt 的工具链文件,因此无需为每个应用程序重复指定该文件。

如果您使用的 Qt 安装包并非在您的机器上构建的,则qt-cmake 需要知道目标平台的 CMake 工具链文件的位置。

在这种情况下,请通过如下方式设置 `QT_CHAINLOAD_TOOLCHAIN_FILE ` 变量,指示qt-cmake 链式加载自定义工具链文件:

$HOME/qnx-install/bin/qt-cmake -DQT_CHAINLOAD_TOOLCHAIN_FILE=$HOME/qnx.cmake .

当在Qt Creator 中使用非本地构建的 Qt 安装包构建应用程序时,需在套件配置(编辑 > 首选项 > 套件)中添加指向本地工具链文件的CMAKE_TOOLCHAIN_FILE 变量。

有关在使用Qt Creator 时连接和添加 QNX 设备套件的更多信息,请参阅“连接 QNX 设备”。

第三方库

请确保您的系统映像包含以下额外的第三方库,这些库并不总是包含在最简版的 QNX Neutrino RTOS 映像中:

  • libfontconfig
  • libfreetype
  • libiconv
  • libicui18n
  • libicudata
  • libicuuc
  • libpng16
  • libxml2
  • libsqlite3
  • libssl
  • libcrypto
  • libzstd

注意:这 并非 Qt 在 QNX Neutrino 操作系统上使用的共享库的完整列表。典型的操作系统映像中已包含多个共享库,或者这些库已由系统的其他部分(例如Screen )包含。

另请参阅 Qt 配置选项和Qt 配置。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.