zlib移植
来源:互联网 发布:淘宝客服招聘在家兼职 编辑:程序博客网 时间:2024/05/16 15:02
首先去zlib官网下载zlib 地址:http://www.zlib.net/目前最新版本为1.2.8
打开终端运行
$ tar zxvf zlib-1.2.8.tar.gz
$ ./configure -h
usage:
configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]
[--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]
[--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]
养成好习惯configure之前看一下帮助文档
这里我们只要指定一下编译出来的库放在哪就行了
$ ./configure --prefix=/usr/tmp/lib
接着打开Makefile文件修改以下内容
$ gedit Makefile
CC=arm-none-linux-gnueabi-gcc
CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
#CFLAGS=-g -DDEBUG
#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
# -Wstrict-prototypes -Wmissing-prototypes
SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
LDFLAGS=
TEST_LDFLAGS=-L. libz.a
LDSHARED=arm-none-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=arm-none-linux-gnueabi-gcc -E
STATICLIB=libz.a
SHAREDLIB=libz.so
SHAREDLIBV=libz.so.1.2.8
SHAREDLIBM=libz.so.1
LIBS=$(STATICLIB) $(SHAREDLIBV)
AR=arm-none-linux-gnueabi-ar
ARFLAGS=rc
RANLIB=arm-none-linux-gnueabi-ranlib
LDCONFIG=ldconfig
LDSHAREDLIBC=-lc
TAR=tar
SHELL=/bin/sh
EXE=
然后执行
$make
这里我用的交叉编译器是arm-none-linux-gnueabi如果你的交叉编译器是arm-linux就将彩色部分的换成arm-linux
特别注意的是蓝色部分,开始查看网上教程都没有提到这结果编译总是报错
gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.8 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo -lc/usr/bin/ld: adler32.lo: Relocations in generic ELF (EM: 40)
adler32.lo: could not read symbols: File in wrong format
collect2: ld 返回 1
make: *** [libz.so.1.2.8] 错误 1
纠结了好长时间发现红色部分执行的是用了gcc编译器导致执行该命令时用了操作系统的/usr/bin/ld的命令而不是交叉编译起里面的ld因此蓝色部分改成arm-none-linux-gnueabi-gcc
最后执行
$sudo make install //这里必须要用管理员身份运行不然会报权限不够的错误
进入/usr/tmp/lib 发现有3个目录分别是 include lib share三个文件夹,到这里zlib就移植成功了!
- zlib移植
- 移植zlib库
- libCurl/openssl/Zlib的ARM移植
- 移植 libqrencode(包含zlib、libpng)
- zlib
- zlib
- zlib
- zlib
- zlib
- zlib
- ZLIB
- zlib
- zlib
- zlib
- zlib
- zlib
- Android原生(Native)C开发之五:zlib移植笔记
- Android原生(Native)C开发之五:zlib移植笔记
- 打开iptable端口
- GPIO的上拉下拉功能说明
- andriod 4.0以上版本不调用onConfigrationChange方法的解决办法
- DLL目录查找顺序
- hibernate查询某一个表所有数据
- zlib移植
- Java中关于String类型的10个问题
- SSL证书定义
- 【LeetCode】- Valid Parentheses(有效的括号)
- 向上管理:管理自己的老板
- Actionbar-Tabset+gridView实现背景设置
- (尚硅谷) Orcale 数据处理DML(INSERT/DELETE/UPDATE) DCL :COMMOT ROLLBACK SAVE
- Nginx负载均衡配置实例详解
- RailsCasts9 Filtering Sensitive Logs 过滤敏感日志