交叉编译 Qt

本页介绍了交叉编译 Qt 的一般过程和要求。

如果您只是在寻找构建 Qt 主机的方法,请参阅创建 Qt 主机构建

术语和定义

交叉编译是指为不同于主机平台的目标平台进行配置和构建。

主机是您构建 Qt 的计算机,例如 Linux 机器。目标平台是指要为之构建 Qt 的设备,例如 Android 平板电脑。

在构建 Qt 时,会运行几个工具来生成代码或进行其他处理。这些工具在主机上运行,因此称为主机工具。这些主机工具是 Qt 主机构建的一部分。在为目标平台构建 Qt 时,必须先准备好主机构建。

Qt 的最小宿主构建是 Qt 的宿主构建,它只包含创建 Qt目标构建所需的宿主工具

Qt 使用 CMake 构建,而 CMake 在交叉编译时需要一个工具链文件。该文件包含有关目标平台和所用工具链的信息。请参阅CMake 关于交叉编译的文档

对于某些目标平台,Qt configure 脚本会自动选择该文件。有关详情,请参阅所需的目标平台的特定文档。

对于某些目标平台,您需要指定一个sysroot。这是一个独立的环境,包括编译和链接应用程序所需的所有文件和库。

有关 Qt 主机构建的一般说明

在为目标机构建 Qt 时,会调用moc,rcc,qmlcachegen,qsb 等工具。例如,如果在 x64 机器上交叉编译 ARM,则必须首先提供相同 Qt 版本的本地 x64 版本。该 Qt 构建的路径将传递给configurecmake 。Qt 的主机构建通常是主机设备的常规 Qt 构建。

Qt 的宿主构建版必须包含为目标平台构建 Qt 所需的所有宿主工具。例如,如果您的目标 Qt 应该支持Qt Quick ,则 Qt 主机必须包含着色器编译器qsb。确保宿主 Qt 提供所有必要工具的简单方法是,在宿主平台上构建与目标平台相同的 Qt 模块。

如果目标 Qt 是共享构建的,则应避免静态构建宿主 Qt。静态构建的 Qt 可能不包含构建共享 Qt 所需的所有工具。

确保主机和目标 Qt 使用相同版本的 Qt,以避免出现不兼容问题。

创建 Qt 的主机构建

有关如何为该平台构建 Qt 的详细信息,请参阅所需主机的文档

要构建最小的宿主 Qt,请在配置 Qt 后使用以下构建命令:

mkdir ~/QtHostBuild
cd ~/QtHostBuild
~/QtSource/configure -developer-build -nomake tests
cmake --build . --target host_tools

该构建不适合为你的主机平台开发 Qt 程序,但它将包含交叉构建 Qt 所需的工具。

交叉编译时指定 Qt 的主机编译版本

交叉编译时,必须将目标 Qt 指向宿主 Qt 的位置。

使用 configure 脚本时,使用

~/QtSource/configure -qt-host-path ~/QtHostBuild ...target-specific options...

直接使用 CMake 时,使用

cmake -S ~/QtSource -DQT_HOST_PATH=~/QtHostBuild ...target-specific options...

有关特定目标的选项,请参阅所需目标的文档

© 2025 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.