linux下编译upx 3.93
2017-02-08 16:21
134 查看
昨天,UPX发布了3.93版本。
UPX(the Ultimate Packer for eXecutables)是一个非常全面的可执行文件压缩软件,支持dos/exe、dos/com、dos/sys、djgpp2/coff、 watcom/le、win32/pe、rtm32/pe、tmt/adam、atari/tos、linux/i386等几乎所有平台上的可执行文件, 具有极佳的压缩比,还可以对未压缩的文件和压缩完后进行比较。
lzma库无需编译。
然后去下载UCL库。
UCL是完全使用ANSI C编写的NRV(Not Really Vanished)算法的一个开源实现。 具体的介绍请查阅http://www.oberhumer.com/opensource/ucl/
UPX(the Ultimate Packer for eXecutables)是一个非常全面的可执行文件压缩软件,支持dos/exe、dos/com、dos/sys、djgpp2/coff、 watcom/le、win32/pe、rtm32/pe、tmt/adam、atari/tos、linux/i386等几乎所有平台上的可执行文件, 具有极佳的压缩比,还可以对未压缩的文件和压缩完后进行比较。
1、准备源码包
直接去github下载zip包或者直接克隆一下。git clone https://github.com/upx/upx.git cd upx rmdir lzma-sdk git clone https://github.com/upx/upx-lzma-sdk.git lzma-sdk
lzma库无需编译。
然后去下载UCL库。
UCL是完全使用ANSI C编写的NRV(Not Really Vanished)算法的一个开源实现。 具体的介绍请查阅http://www.oberhumer.com/opensource/ucl/
wget http://www.oberhumer.com/opensource/ucl/download/ucl-1.03.tar.gz[/code] 国外的网站下载比较慢,可以直接点击此处下载我已经下好的。2、编译
UCL编译
先生成Makefile文件tar -xzvf ucl-1.03.tar.gz cd ucl-1.03 ./configure --prefix=/home/o/ucl CC=clang
注意上面,指定了C编译器为clang。这里是因为gcc的一个bug,导致 ACC一致性测试失败 ,所以使用clang。
gcc出现的错误情况在这里FTBFS with GCC 6: compiler failed the ACC conformance test有详细描述。编译UPX
使用下面命令编译upxmake all UPX_UCLDIR=/home/o/upx/ucl/ucl-1.03 UPX_LZMADIR=./src/lzma-sdk
注意,这里的UPX_UCLDIR变量的值必须是绝对路径。
编译出的结果是upx.out程序,在src目录下。3、使用测试
先查看一下编译出upx.out的文件大小> ls -l upx.out -rwxr-xr-x 1 o users 2006544 2月 8 16:08 upx.out
然后用其对自身进行压缩一下cp upx.out upx.out2 > ./upx.out upx.out2 Ultimate Packer for eXecutables Copyright (C) 1996 - 2017 UPX git-fdce70 Markus Oberhumer, Laszlo Molnar & John Reiser Jan 29th 2017 File size Ratio Format Name -------------------- ------ ----------- ----------- 2006544 -> 479576 23.90% linux/amd64 upx.out2 Packed 1 file. WARNING: this is an unstable beta version - use for testing only! Really. > ls -lh upx.out2 -rwxr-xr-x 1 o users 469K 2月 8 16:09 upx.out2
可以看到,压缩的效果还是很明显的。
为了对比,下面使用strip删除多余信息,并使用gzexe压缩(先还原upx.out2,通过命令./upx.out -d upx.out2)> strip upx.out2 > ll upx.out2 -rwxr-xr-x 1 o users 1.7M 2月 8 16:13 upx.out2 > gzexe upx.out2 upx.out2: 72.7% > ll upx.out2 -rwxr-xr-x 1 o users 455K 2月 8 16:14 upx.out2
UPX相对gzexe不一定有压缩上的优势,但是其具有跨平台的优势。且UPX压缩之后的程序依然是一个ELF文件,但gzexe压缩之后的程序是一个posix shell脚本(后部分是压缩后的程序二进制文件)。
相关文章推荐
- LINUX编译UPX
- 编译 linux2.6 内核
- 用预编译好的rpm包来生成一个比较小的linux
- Linux 内核编译 全功略
- linux网卡驱动程序的编译与安装 (转载)
- 编译升级linux由2.4.20-8到2.6.10内核时,遇到的错误,以及解决方法
- LINUX下汇编的编译,调试命令
- 编译Linux下的文件
- Linux 2.6内核编译安装全景体验(下)
- Linux配置与编译内核
- 在 Linux 下编译 lame-3.93.1.tar.gz
- 在Linux(Fedora Core 2)下编译uC/OS-II的问题!
- Linux 内核配置及编译简介
- Linux 内核编译过程说明 (以PC Linux为例)
- Linux下编译C++类点滴
- [Linux]内核编译与配置管理零星拾遗
- Linux编译内核详解
- 在Linux操作下如何编译安装php&mysql&apache
- Linux下动态库的编译
- linux下为php添加GD库(重新编译php)