//
// Introduction
//
7-Zip(7-Zip官方网站:http://www.7-zip.org/)是一个开源的数据压缩程序,主要用在Windows、类Unix操作系统。7-Zip主体在GNU LGPL下发布,加密部份使用AES的代码,使用BSD License发布,解压RAR部分使用RAR特定的许可协议。7-Zip默认的格式是其自行开发的7z格式,扩展名为“.7z”。7z格式包含多种算法,最常使用的就是Bzip2以及Igor Pavlov开发的LZMA。LZMA算法比起其他常见的传统压缩算法,比如Zip、RAR来说相对较新,压缩率也比较高。7z格式本地的使用Unicode来存储文件名称,可以避免不同系统间压缩解压乱码的问题。7-Zip支持众多的压缩/未压缩的文件格式,比如ZIP、CAB、RAR、ARJ、Z、gzip、bzip2、LLHA、tar、cpio、rpm。从4.42版开始支持CD/DVD镜像格式ISO,另外因为授权问题,不再支持ACE格式。
//
// Cross-compile
//
1. 下载源码p7zip_15.09_src_all.tar.bz2
2. 解压源码
3. 修改makefile.machine,设置交叉编译工具链,并且静态链接
$ cd p7zip_15.09/
$ cat makefile.machine
#
# makefile for Linux (CROSS ARM)
#
OPTFLAGS=-O -s
ALLFLAGS=${OPTFLAGS} -pipe \
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
-DNDEBUG -D_REENTRANT -DENV_UNIX \
-D_7ZIP_LARGE_PAGES \
$(LOCAL_FLAGS)
CXX=arm-none-linux-gnueabi-g++
CC=arm-none-linux-gnueabi-gcc
CC_SHARED=-fPIC -DPIC
LINK_SHARED=-fPIC -DPIC -shared
LDFLAGS += -static
TOOLS=qemu-arm /usr/arm-linux-gnueabi/lib/ld-linux.so.3 --library-path /usr/arm-linux-gnueabi/lib
LOCAL_LIBS=-lpthread
LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
OBJ_CRC32=$(OBJ_CRC32_C)
OBJ_AES=
4 编译生成的7za在bin/目录下
$ file bin/7za
bin/7za: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, stripped
5 把7za放到ARM机器上验证