使用 Qt 6.8 减少 Qt 应用程序的二进制文件大小 - 第 2 部分:咖啡机示例

作者:Qt Group中国 | Jan 20, 2025 5:30:15 AM

您是否希望优化 Qt 应用程序以提高性能和效率?Qt 6.8 中的Qt Configure Options 可帮助您实现。

通过有选择性地启用或禁用 Qt 框架中的功能和模块,开发人员可以以更小的包形式交付应用程序,从而减少 RAM 和 ROM 占用,并实现更快的启动时间。

在本篇博客中,我们将介绍针对 Raspberry Pi 4 目标设备交叉编译 Qt Configure Options 的过程。遵循概述的步骤,您可以根据需求定制应用程序,并亲身体验 Qt Configure Options的优势。

适用于 Raspberry Pi 4 的 Qt Configure Options 和交叉编译

让我们以交叉编译 Raspberry Pi 4 目标设备的 Qt Configure Options 为例。

1.首先,下载 Qt 交叉编译 SDK,它为目标设备提供了必要的工具链。您可以在 Boot2Qt Raspberry Pi 页面上找到更多信息。此外,请确保使用相同的方法下载相应版本的主机 SDK 及其源代码。

2. 下载 qtlite_coffeemachine.txt 文件(包含自定义功能配置),以及 toolchain_rpi4.cmake 文件(概述了构建目标编译和链接器参数)。

3.使用必要的模块和功能配置 Qt。在本示例中,我们使用了允许 咖啡机示例编译和运行的功能集。

cd $HOME/Qt/6.8.0/Src
./configure -qt-host-path $HOME/Qt/6.8.0/gcc_64 -extprefix $HOME/Qt/my_rpi4_sdk -release -optimize-size -static -ltcg -reduce-exports -gc-binaries $(cat $HOME/qtlite_coffeemachine.txt) ---- -DCMAKE_TOOLCHAIN_FILE=$HOME/toolchain_rpi4.cmake

 

4. 最后,构建并安装 SDK 到 $HOME/Qt/my_rpi4_sdk

 


cmake --build .--parallel
cmake --install .

 

 

有关更详细的说明,请参阅 Raspberry Pi 4 wiki 页面 以及其他提供的链接和文档。

构建咖啡机示例

将定制的 SDK 导入Qt Creator 并从欢迎页面打开咖啡机示例。然后,在 CMakeLists.txt 主文件中加入以下 CMake 命令,以进一步优化二进制文件的大小。

set_target_properties(
        coffeemachine
    PROPERTIES
      QT_QMLCACHEGEN_ARGUMENTS "--only-bytecode"
)

 

最后一步涉及删除所有文本符号:

aarch64-linux-gnu-strip -s coffeemachine

 

最终,用户将注意到 RAM 和 ROM 使用量的减少,以及更快的启动时间。

观察结果

为了进行比较,我们使用了 vanilla 6.8.0 Beta4 版本。动态结果是使用未修改的二进制文件获得的,而静态库是使用以下 configure 命令生成的:

./configure -qt-host-path $HOME/Qt/6.8.0/gcc_64 -extprefix $HOME/Qt/6.8.0_static -release -static -skip qtapplicationmanager -qpa eglfs -- -DCMAKE_TOOLCHAIN_FILE=$HOME/toolchain_rpi4.cmake

 

上一章所述,通过修改 Qt 框架和应用程序构建流程实现了优化。此外,所有调试信息都从优化后的应用程序中剥离。

ROM 中的内存占用

 

RAM 中的内存占用

 

应用程序启动时间

 

微调

开发人员可通过取消 QML Effects和 QML Controls Fusion-style 等功能来进一步减少二进制文件大小。移除Effects可使用 linuxfb 后端而不是 eglfs,从而将二进制文件的大小再减少 30%。

结论

Qt 6.8 的配置选项使开发人员能够对其应用程序的性能和效率进行微调,从而精确地满足特定需求。通过切换 Qt 框架中的功能和组件,开发人员可以制作出更精简的应用程序,可将 ROM 占用率降低高达 77%,将 RAM 消耗降低 32%,并显著加快启动速度。

本篇博客介绍了如何利用 Qt Configure Options,它可显著减少二进制文件大小和相关资源消耗。优化图形资产和应用程序代码本身也将改善资源消耗,但在本博客中显示的测量结果,我们并未调整这些内容。在寻求优化应用程序时,配置 Qt 二进制文件是您可以做的事情之一。

借助必要的工具链和配置文件,使用 Raspberry Pi 4 的配置选项交叉编译 Qt 将变得更加容易。要进一步了解 Qt Configure Options 的优势以及如何在您的项目中实施,请阅读本文提供的链接和文档。