linux下编译upx ucl
昨天,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等几乎所有平台上的可执行文件, 具有极佳的压缩比,还可以对未压缩的文件和压缩完后进行比较。
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
国外的网站下载比较慢,可以直接点击此处下载我已经下好的。
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
使用下面命令编译upx
make 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 eXecutablesCopyright (C) 1996 - 2017 UPX git-fdce70 Markus Oberhumer, Laszlo Molnar & John Reiser Jan 29th 2017File 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脚本(后部分是压缩后的程序二进制文件)。
转载于:https://www.cnblogs.com/hjbf/p/10411692.html
linux下编译upx ucl相关推荐
- linux 保存编译log,(转)Linux下编译安装log4cxx
一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...
- linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置
一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/415 ...
- 一份简单的在 Linux下编译及调试 C 代码的指南
摘要: 一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无 ...
- linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt
[2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...
- linux emule 编译 wx-config --libs,linux下编译wxwidgets所写程序所遇到的问题
记录linux下编译wxwidgets所遇到的问题 1./home/hrd/baohualib/wxWidgets-3.0.2/include/wx/platform.h:184:22: 致命错误: ...
- linux下编译wpa_supplicantnbsp;…
linux下编译wpa_supplicant 收藏 前一段时间只在vs2005下编译成功过.经过近一段时间的琢磨,今天终于在linux下成功编译了wpa_supplicant. 挺简单的事情折腾了这么 ...
- java libpcap,Linux下编译安装libpcap
要做Sniffer了,先在Linux下编译一下libpcap 1.编译安装flex #libpcap 1.1要求flex必须在2.4.6及以上 wget http://prdownloads.sour ...
- linux redis php,Linux下编译redis和phpredis的方法
这篇文章主要介绍了Linux下编译redis和phpredis的方法,分析了redis的下载,编译,安装及遇到的问题与相应的解决方法,需要的朋友可以参考下 本文讲述了Linux下编译redis和php ...
- linux下编译libuv,linux下libuv库安装教程
下载并编译libuv libuv需要自己手动下载源码,并手动编译. 当前目录为:/home/xlz/test/github/,在后面,会用$PATH来代替,我的系统的Debian8,64bit. $g ...
- Linux 下编译并运行C++程序
1>新建一个C++新文件 ----helloworld.c #include<iostream> using namespace std; int main(){cout<&l ...
最新文章
- np.array_split可以不均等划分 np.split为均等划分
- 剑指offer 面试题6:重建二叉树
- iOS 可能用到的三方框架
- 解决了无法显示验证码的问题
- Java API 操作Zookeeper
- nodejs项目的package-lock.json文件的用途
- python虚拟环境和pyenv_Python多版本管理器pyenv和虚拟环境pyenv-virtualenv的安装设置...
- thinkphp连接远程数据库慢_干货分享—Niushop数据库配置
- windows组件_如何关闭win7系统windows移动中心 电脑关闭windows移动中心方法【详解】...
- 手机如何看python文件大小_如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?)...
- javaWeb上传文件(jsp上传文件)
- Python3制作网易云音乐下载器!付费的你猜能下载吗!
- matlab仿真高尔顿正态分布源码,《正态分布》教学设计
- android使用高德地图SDK获取定位信息
- 网页屏幕上有只小虫在到处爬(代码)
- 腾讯伪原创视频需要改什么好处
- Android 面试题收集
- 用C语言输出1000到2000年之间的闰年
- rb格式转换器有哪些
- 第四个模型:决策树模型
热门文章
- Repeater OnItemCommand 失效
- leetcode[541]翻转字符串里的单词/reverse words in a string 综合考察了字符串的多种操作
- Master PDF Editor for Mac(PDF文档编辑软件)
- 如何开启/关闭Pages文稿上的字数统计功能?
- Java三月春招面试经历分享(没offer不是我的锅)
- Android最佳安全应用程序已出炉,Google Play Protect曝大冷门
- 8Manage轻松解决采购过程“脏乱差”问题
- Wormhole —— Docker 容器的服务连接代理
- 初识iptables规则
- 利用spring的CommonsMultipartResolver上传文件