关于脱壳工具(UPX)的笔记

本文介绍了解决海思3536D开发板程序文件过大问题的解决方案,利用UPX工具进行高效压缩,从19M压缩到3M,显著节省空间。文章详细解释了UPX的使用方法及各种参数选项,适用于嵌入式开发人员。

叙述:刚才说到解压.xz文件

小编现在在做海思的3536D的开发工作,目的是让改好的程序放进开发板,但是由于编译好的程序文件达到了18M左右,这个大小对于开发板来说超出了它能容纳的量,所以我们需要对它进行压缩,那么脱壳工具upx就起到了这个作用。它是在保证程序还是可执行文件的基础上对齐进行压缩。

这是我通过脚本执行完的压缩完成的图片:

在这里插入图片描述
从图上可以看出 td3520文件从19M压缩到了3M多

小编这是从脚本文件里面执行的,语句是这样的:

cd ../&&"$STRIP_CXX"strip ./product/td3520&&/home/HI3531A/hi3536cv100/upx-3.94-i386_linux/upx -9 ./product/td3520

/home/HI3531A/hi3536cv100/upx-3.94-i386_linux/upx -9 ./product/td3520:用upx压缩/product/td3520文件


UPX命令:

:当UPX.exe和待压缩文件在同一个目录下时可以直接使用upx -命令 程序名.exe
当UPX.exe和待压缩文件不在同一个目录下时可以直接使用upx -命令 程序完整目录+程序名.exe

默认压缩[upx 程序名.exe]
较快压缩[upx -1 程序名.exe]
较好压缩[upx -9 程序名.exe]
最优压缩[upx --best 程序名.exe]
还原压缩[upx -d 程序名.exe]
测试是否是UPX压缩[upx -t 程序名.exe]
显示UPX压缩清单[upx -l 程序名.exe]
显示UPX版本[upx -V]
显示UPX使用说明[upx -L]
UPX使用帮助[upx -h]
减少UPX压缩显示[upx -q 程序名.exe]
增加UPX压缩显示[upx -v 程序名.exe]
将UPX压缩另存为其它文件[upx -o 1.exe 程序名.exe]
强制压缩可疑文件[upx -f 程序名.exe]
保留备份文件[upx -k 程序名.exe]
不备份UPX压缩[upx --no-backup 程序名.exe]
无颜色UPX压缩[upx --no-color 程序名.exe]
UPX压缩无进度条显示[upx --no-progress 程序名.exe]
尝试所有可用的压缩方法和过滤器[慢][upx --brute 程序名.exe]
超级暴力尝试更多的压缩变体[非常慢] [upx --ultra-brute 程序名.exe]
保留额外数据[默认值][upx --overlay=copy 程序名.exe]
覆盖额外数据[upx --overlay=strip 程序名.exe]
不处理额外数据[upx --overlay=skip 程序名.exe]
压缩导出部分[upx --compress-exports=1 程序名.exe]
不压缩导出部分[upx --compress-exports=0 程序名.exe]
压缩所有图标[upx --compress-icons=3 程序名.exe]
压缩除第一个图标以外的所有图标[upx --compress-icons=1 程序名.exe]
压缩除第一个图标目录外的所有图标[默认值][upx --compress-icons=2 程序名.exe]
不压缩任何图标[upx --compress-icons=0 程序名.exe]
不压缩任何资源[upx --compress-resources=0 程序名.exe]
不压缩list指定的资源[upx --keep-resource=list 程序名.exe]
不剥离重定位[upx --strip-relocs=0 程序名.exe]
剥离重定位[upx --strip-relocs=1 程序名.exe]


附上upx的下载路径,根据需要下载对应的文件

https://github.com/upx/upx/releases

有什么问题欢迎留言,小编时不时会关注动态的。

### UPX 启动时出现闪退问题解决方案 当遇到使用UPX压缩后的可执行文件启动时发生闪退的情况,通常有几种可能的原因以及相应的解决方法。 #### 1. 确认UPX版本兼容性 并非所有的PyInstaller版本都与最新的UPX版本完全兼容。建议尝试不同版本的UPX来找到最稳定的组合[^2]。如果当前使用的UPX版本较高,考虑降级到较低版本测试效果如何。 #### 2. 关闭UPX压缩功能 有时启用UPX可能会引起某些特定环境下的不稳定性。可以在打包过程中禁用UPX压缩选项,观察是否仍然存在闪退现象。这可以通过修改`pyinstaller.spec`文件中的参数实现: ```python a = Analysis(['your_script.py'], ... upx=False, # 设置此参数为False以关闭UPX ...) ``` 或者直接在命令行调用时不加任何关于upx的相关配置项来进行编译。 #### 3. 检查依赖库及其版本 确保所有必要的第三方模块都被正确包含,并且其版本号不会引发冲突。特别是对于像`astor`这样的库,在某些情况下特定版本可能导致问题。例如,已知0.8.0版曾报告过相关错误;因此推荐回滚至更稳定版本如0.7.1。 #### 4. 查看详细的日志输出 为了更好地理解为什么程序会崩溃,应该尽可能收集更多调试信息。可以尝试在DOS窗口下运行生成的应用程序而不是双击图标打开它,这样就能看到控制台打印出来的报错消息,有助于定位具体原因并采取针对性措施加以修复。 #### 5. 验证目标平台特性支持情况 考虑到跨平台开发的特点,还需要注意确认所选平台上是否存在特殊限制或需求未被满足的情形。比如在macOS环境下工作前要先验证已经按照官方指南完成了必要设置,包括但不限于安装最新版Xcode命令行工具等前置条件[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值