【Qt】构建和编译 Qt 程序时如何减少生成的二进制可执行文件的大小

在构建和编译 Qt 程序时,可以通过以下几种方式减少生成的二进制可执行文件的大小:

1. 使用 -s 参数去除符号信息

在链接阶段添加 -s 参数可以去除可执行文件中的符号表和调试信息:

bash

g++ -s -o myapp main.o mainwindow.o ... -lQtGui -lQtCore ...

或者,在 .pro 文件中添加:

qmake

QMAKE_LFLAGS += -s

2. 启用优化选项

启用编译器优化以减少代码体积并提升性能:

qmake

QMAKE_CXXFLAGS_RELEASE += -O3

或使用更激进的优化级别,如 -Os(优化大小):

qmake

QMAKE_CXXFLAGS_RELEASE += -Os

3. 静态库与动态库的选择

  • 使用动态库 :避免将 Qt 库静态链接到程序中,这会显著增加可执行文件的大小。确保 .pro 文件中没有 QT += static

  • 移除不必要的模块 :只包含所需的 Qt 模块,例如:

    qmake

    QT += core gui widgets

4. 剥离调试信息(Strip Debug Symbols)

在编译完成后,可以使用 strip 工具进一步去除可执行文件中的调试信息:

bash

strip --strip-all ecg_sample

也可以使用 --strip-debug 只去除调试符号。

5. 使用 UPX 压缩可执行文件(谨慎使用)

UPX 是一个可执行文件压缩工具,可以减小文件体积:

bash

upx --best ecg_sample

⚠️ 注意:某些嵌入式设备可能不支持运行经过 UPX 压缩的程序。

6. 移除未使用的资源和图片

检查项目中是否包含不必要的资源文件(.qrc),并删除未使用的图片、翻译文件等。

7. 调整 Qt 构建配置

如果你是自定义编译 Qt 库,请确保启用了合适的配置参数来减小体积,例如:

bash

./configure -release -strip -optimize-size ...

示例修改后的 .pro 片段

qmake

QT += core gui widgets TARGET = ecg_sample TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp QMAKE_CXXFLAGS_RELEASE += -Os QMAKE_LFLAGS += -s

总结

通过上述方法,你可以有效减小 Qt 程序的可执行文件大小,从而解决 No space left on device 的问题。建议优先尝试 -s-Os 编译选项,并结合 strip 工具进行处理。

相关推荐
周淳APP2 小时前
【前端工程化原理通识:从源头到运行时的理论阐述】
前端·编译·打包·前端工程化
小短腿的代码世界7 小时前
Qt国际化深度解析:从源码到企业级多语言实践
java·数据库·qt
宠..9 小时前
QComboBox 方法大全
开发语言·qt
郝学胜-神的一滴13 小时前
Qt 高级开发 011: 跨线程信号槽实战
开发语言·c++·qt·程序人生·开源软件·用户界面
小短腿的代码世界14 小时前
QHttpEngine深度解析:Qt嵌入式HTTP服务端的工业级架构与性能调优
qt·http·架构
学习,学习,在学习14 小时前
Qt 串口通讯架构
开发语言·c++·qt·架构·qt5
Shadow(⊙o⊙)15 小时前
qt信号和槽链接的接入与断开
开发语言·前端·c++·qt·学习
sycmancia1 天前
Qt——编辑交互功能的实现
开发语言·qt
qq_401700411 天前
Qt 项目中使用 QSS 的全面总结
开发语言·qt
小短腿的代码世界1 天前
信号路由风暴:Qt算法交易系统的高频信号分发架构
qt·算法·架构