upx交叉编译过程
来源:互联网 发布:ios变音软件 编辑:程序博客网 时间:2024/05/16 10:19
upx(the Ultimate Packer for eXecutables),是一款对可执行程序进行加壳脱壳工具,目的在于压缩程序,节省磁盘空间。应用程序在加壳后,仍可以执行,执行时,解压后动态加载到内存执行。
加壳脱壳
目的:将upx源码交叉编译,放到ARM开发板上使用。
过程:
1、下载upx-3.91-src.tar.bz2 http://upx.sourceforge.net/download/upx-3.91-src.tar.bz2,解压。编译upx需要ucl库、lzma库、zlib库。所以,
下载ucl-1.03.tar.gz http://down1.chinaunix.net/distfiles/ucl-1.03.tar.gz
下载lzma-4.32.7.tar.gz(网上有说需要下载lzma443,我下载以后,编译后,没有得到lzma的库文件,需要修改Makefile,链接归档成库文件。这种方法我暂时还没有试,先用lzma432吧)http://tukaani.org/lzma/lzma-4.32.7.tar.gz
下载zlib-1.2.3.tar.gz http://202.102.94.31/1/ishare.down.sina.com.cn/14708428.gz?ssig=sYSPd1AgTC&Expires=1386345600&KID=sina,ishare&fn=zlib-1.2.3.tar.gz&corp=1
2、设置交叉工具链
添加两行到/etc/profile中:
export PATH=$PATH:/home/open-wrt/trunk/staging_dir/toolchain-arm_v5te_gcc
export STAGING_DIR=/home/open-wrt/trunk/staging_dir/toolchain-arm_v5te_gc
如果没有设置STAGING_DIR,编译程序时,使用ubuntu系统中默认的库文件。
source /etc/profile
3、编译ucl
./configure --host=arm-openwrt-linux-gnueabi --prefix=$PWD/../upx-3.91-src/build --enable-static
make
make install
4、编译lzma-4.32.7
./configure --host=arm-openwrt-linux-gnueabi --prefix=$PWD/../upx-3.91-src/build --enable-static
make
make install
5、编译zlib库
由于zlib的configure配置不支持交叉编译选项。所以配置命令为
CC=arm-openwrt-linux-gnueabi-gcc CPP="arm-openwrt-linux-gnueabi-gcc -E" AR="arm-openwrt-linux-gnueabi-ar rc" RANLIB=arm-openwrt-gnueabi-ranlib ./configure --prefix=$PWD/../upx-3.91-src/build
make
make install
6、编译upx-3.91
修改Makefile:
LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext))))
修改为
LIBS+= $(UPX_UCLDIR)/lib
编译upx-3.91:
CXX=arm-openwrt-linux-gnueabi-g++ UPX_UCLDIR=$PWD/build UPX_LZMADIR=$PWD/build make all
如果lzma使用lzma443,那么
CXX=arm-openwrt-linux-gnueabi-g++ UPX_UCLDIR=$PWD/build UPX_LZMADIR=$PWD/../lzma-443 UPX_LZMA_VERSION make all
- upx交叉编译过程
- Android arm upx交叉编译过程
- zlib交叉编译过程
- ubuntu 交叉编译过程
- glib交叉编译过程
- thttpd 交叉编译过程
- cdrtools交叉编译过程
- LINUX编译UPX
- Qtopia2交叉编译过程详解
- GTK-DirectFB 交叉编译过程
- gtk directfb 交叉编译过程
- croostool-ng 交叉编译过程
- python交叉编译过程记录
- UPX-windows版本的编译
- 编译UPX加壳工具
- upx工具编译使用指导
- 搭建gtk1.2交叉编译环境过程
- 交叉编译Qt/E和Qtopia过程
- ThreadPool.QueueUserWorkItem 用法
- 工作收藏有用网址
- UVa 125 Numbering Paths / floyd
- 做好扁平化设计-视觉篇
- Thread 1 cannot allocate new log, sequence 10018 Checkpoint not complete
- upx交叉编译过程
- linux 8小时时差 bios hwclock 解决 utc localtime
- delphi把窗体嵌入到dll中。实现方法
- 一个成功IT精英的必备品质
- Android开发者指南-运动传感器Motion Sensor
- 在Amazon EC2上安装jenkins
- PJNATH介绍 -- 开源的用于NAT穿透的ICE, STUN和TURN
- 成绩处理函数版
- js 常用正则表达式表单验证代码