linux 7z命令交叉编译移植到arm linux平台

本文详细介绍了如何将完整的7z命令移植到arm-linux平台,包括编辑makefile文件指定编译器路径,解决编译错误,并最终生成可在arm板上正常运行的7za文件。

本博客原网址:http://blog.youkuaiyun.com/reille/

1. 7z交叉移植到arm-linux平台

有两种7z命令移植到arm-linux平台:一种是完整功能版本的7z命令移植;另一种精简版本的7z命令的移植(实际上只有解压7z格式包功能),下面分别进行说明。

1.1 完整功能7z命令即7za的移植

解压源码包p7zip_9.20.1_src_all.tar.bz2后,进入源码包,会发现有一个makefile和n多其它平台的m­akefile:makefile.aix_gcc、makefile.linux_s390x 、makefile.linux_cross_arm等。其中,makefile.linux_cross_arm就是我们要的makefile文件。此我,源码目录中提供了readme文件,其中有说明如下:

        According to your OS, copy makefile.linux, 
        makefile.freebsd, makefile.cygwin, ... 
        over makefile.machine

其中的 makefile.machine 就是平台相关性选项。所以我们可以这样做 :

编辑makefile.linux_cross_arm文件 ,指定其中的编译器路径,如下打红色地方所示:

#
# makefile for Linux (CROSS ARM)
#

OPTFLAGS=-O

ALLFLAGS=${OPTFLAGS} -pipe -s \
     -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
 -DNDEBUG -D_REENTRANT -DENV_UNIX \
 -D_7ZIP_LARGE_PAGES \
 $(LOCAL_FLAGS)

CXX=/usr/local/arm-uclibc/bin/arm-uclibc-g++ $(ALLFLAGS)
CC=/usr/local/arm-uclibc/bin/arm-uclibc-gcc $(ALLFLAGS)
CC_SHARED=-fPIC -DPIC
LINK_SHARED=-fPIC -DPIC -shared

LOCAL_LIBS=-lpthread
LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl

OBJ_CRC32=$(OBJ_CRC32_C)

注:用这个编译器,会有一个错误:提示wine_date_and_time.cpp中112行的timegm未定义,可以在config.h的31行,把那个宏定义取消即可正常编译通过。

然后:
$ mv makefile.machine makefile.machine.bak 
$ ln -s makefile.linux_cross_arm makefile.machine 
$ make 
make后,可以bin目录下看到有一个7za的文件,这就是我们要的,把其放到arm板上,即可正常运行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值