Upx一款高效的二进制压缩工具 @
upx 是一款压缩可执行文件的软件,压缩率在 20% 到 %70 之间。在可执行文件运行的时候并不需要解压软件,程序在内存中自动展开
安装Upx @
wget https://github.com/upx/upx/releases/download/v3.95/upx-3.95-amd64_linux.tar.xz
sudo cp upx*/upx /usr/bin
安装完成后,可以通过以下命令验证 upx 是否安装成功:
upx --version
如果安装成功,终端会显示 upx 的版本信息:
upx 3.95
使用 upx 压缩可执行文件 @
使用 upx 压缩可执行文件非常简单,基本语法如下:
upx [选项] 可执行文件名
常用选项: @
-
-1 到-9:压缩级别(1 最快压缩,9 最佳压缩) -
-o:指定输出文件名 -
-k:保留原始文件 -
--lzma:使用 LZMA 压缩算法 -
--brute:尝试所有可用的压缩方法
基本使用示例: @
# 压缩可执行文件(默认会替换原文件)
upx myprogram
# 压缩并保留原文件
upx -k myprogram
# 指定输出文件名
upx myprogram -o myprogram_compressed
# 使用最佳压缩级别
upx -9 myprogram
# 使用 LZMA 算法压缩
upx --lzma myprogram
压缩效果对比 @
压缩前后可以使用 ls -lh 命令查看文件大小变化:
# 压缩前
ls -lh myprogram
-rwxr-xr-x 1 user user 2.0M Jan 1 12:00 myprogram
# 压缩
upx myprogram
# 压缩后
ls -lh myprogram
-rwxr-xr-x 1 user user 780K Jan 1 12:01 myprogram
解压 upx 压缩的文件 @
如果需要恢复原始文件,可以使用 -d 选项解压:
upx -d myprogram
注意事项 @
- 兼容性:大多数 Linux 发行版都能正常运行 upx 压缩的程序
- 启动速度:压缩后的程序启动时会稍有延迟(用于解压)
- 内存占用:运行时内存占用与原始程序基本相同
- 不支持的文件:upx 不支持压缩脚本文件(如 .py、.sh 等)
实际应用场景 @
# 压缩 Go 语言编译的二进制文件
go build -o myapp main.go
upx myapp
# 压缩 Rust 程序
cargo build --release
upx target/release/my_rust_app
# 批量压缩目录下的所有可执行文件
find /usr/local/bin -type f -executable -exec upx {} \;
通过使用 upx,可以显著减少可执行文件的磁盘占用空间,特别适合在存储空间有限的环境中部署应用程序。