为 QNX 构建 Qt
设置 QNX SDP
构建 Qt 6 需要从 QNX 网站(QNX 网站)下载并安装 QNX SDP 7.1。
注意:需要合适的许可。有关更多信息,请联系 QNX([email protected])。
编译器和其他工具链部分的提供在 SDP 软件包中。通过在终端中运行以下来自您的 SDP 安装文件夹的 QNX 设置脚本来初始化您的构建环境
source qnxsdp-env.sh
主机构建
Qt 的主机构建用于交叉编译 Qt。这是因为,在构建过程中,某些工具(如 moc
、rcc
、qmlcachegen
和 qsb
)都是从主机构建调用的。您有两个选项
- 为主机编译 Qt 源 或
- 使用 Qt 在线安装程序安装主机构建。
但是,建议确保您可以在主机上构建适用于桌面目标的 Qt,因为当为 QNX 编译时也需要相同的工具。
为 QNX 创建工具链文件
要使用 CMake 交叉编译项目,您需要一个工具链文件。此 CMake 语言文件设置了平台名称、编译器/连接器以及许多其他工具链特定项的正确值。作为参考,您可以在来源包 coin/provisioning/common/shared/cmake_toolchain_files 中找到在 CI 中使用的工具链文件。
set(CMAKE_SYSTEM_NAME QNX) set(CMAKE_SYSTEM_PROCESSOR armv7le) 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 的 Qt
要配置和构建适用于 QNX 的 Qt,您需要以下内容
- 如 Building Qt Sources 中所述,为您的主机平台放置和功能正常的构建 Qt 工具。
- 工具链文件,
$HOME/qnx.cmake
。 - 在
$HOME/qt
下签出或安装的 Qt 源代码。 - 在
$HOME/qt-host
中有一个 Qt 的主机构建。 - 本地系统上的安装位置设置为
$HOME/qnx-install
。
创建并切换到 build
目录后,运行以下命令
$HOME/qt/configure -nomake examples -nomake tests \ -qt-host-path $HOME/qt_host \ -extprefix qnx_install \ -prefix /qt \ -- -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake \ $HOME/qt
自 Qt 6 以来,configure 工具是 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 \ $HOME/qt
注意:当在 Windows 上构建时,需要显式禁用 PCH(预编译头),因为启用它会导致 QNX 编译器崩溃。要禁用 PCH,请使用配置选项 -no-pch
。
配置完成后没有错误,然后通过运行以下命令构建 Qt
cmake --build . --parallel
注意:QNX编译器可能需要比用于主机构建的编译器更多的内存。使用--parallel <进程数>
来限制构建时并发进程的最大数量。
构建完成后,执行以下操作
cmake --install .
这会将结果安装到$HOME/qnx_install
。
为目标设备构建应用程序
当您完成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
libpng14
libxml2
libsqlite3
libssl
libcrypto
注意:这不是Qt在QNX Neutrino操作系统上使用的所有共享库的完整列表。在典型的操作系统映像中已提供多个共享库,或包含在其他系统部分中,例如Screen
。
© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。本提供的文档根据自由软件基金会发布的GNU自由文档许可证第1.3版的条款进行许可。Qt及其相关标志是芬兰的Qt公司及其在世界各地的商标。所有其他商标均为各自所有者的财产。