Upx一款高效的二进制压缩工具 @

upx 是一款压缩可执行文件的软件,压缩率在 20% 到 %70 之间。在可执行文件运行的时候并不需要解压软件,程序在内存中自动展开

安装Upx @

https://upx.github.io/

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
注意事项 @
  1. 兼容性:大多数 Linux 发行版都能正常运行 upx 压缩的程序
  2. 启动速度:压缩后的程序启动时会稍有延迟(用于解压)
  3. 内存占用:运行时内存占用与原始程序基本相同
  4. 不支持的文件: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,可以显著减少可执行文件的磁盘占用空间,特别适合在存储空间有限的环境中部署应用程序。