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 构建的路径将传递给configure 或cmake 。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...有关目标特定的选项,请参阅所需目标的文档。
© 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.