用NDK-r25编译libpng

注意:要是用于NDK交叉编译qemu的依赖库,编译器工具API级别要在30以后,最好用33

因为只有30以后的版本支持函数memfd_create,详情请看http://t.csdn.cn/465cy

1.去如下网址下载libpng-1.6.37.tar.gz

LIBPNG: PNG reference library - Browse Files at SourceForge.netReference library for supporting the Portable Network Graphics (PNG) format.https://sourceforge.net/projects/libpng/files/2.解压编译安装

tar -xvf libpng-1.6.37.tar.gz

cd libpng-1.6.37 && mkdir build && cd build

CC="aarch64-linux-android21-clang"  ../configure --prefix=/home/dubu/installtest --host=aarch64-linux-android21 --build=x86_64  --with-sysroot=$SYSROOT --enable-shared LDFLAGS="-L${SYSROOT}/usr/lib" CPPFLAGS="-I${SYSROOT}/usr/include"

make && make install

注意:

        加LDFLAGS和CPPFLAGS是为了指定zlib的位置,如果不加会报错,因为百度以下就知道zlib是为了lipng而开发的。libpng是要依赖zlib的,用NDK-r25交叉编译安装zlib的步骤可以看如下连接:

用NDK-r25交叉编译zlib-1.2.12_短发也可以在被青春吹起的博客-CSDN博客

        如果是交叉编译一定要加上--host选项,configure脚本会根据--host的值和--build的值不同来判断是否是交叉编译,--build可以为空,会在执行configure的时候用uname命令补全--build的值,如果--host省略的话,就会把--build的值赋给--host。俩个值相同的话,系统就判定不是交叉编译,运行configure的时候就会报错,并且让你加上--host。

        我这里--host的值最好写完整,不要单独写一个aarch64,如果只是写aarch64就不能编译出动态库文件。为什么,因为这是libpng的configure脚本设计的。它会根据你提供的--host的作一个补全,补全的格式为:CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM,即cpu类型-供应商-操作系统,具体可以查看config.sub脚本。用如下用命令可查看补全的结果

/bin/bash config.bash [--host的值或者--build的值]

        --host的暂且定义为host变量,configure脚本会把host变量赋给host_alias,然后configure用上面的命令的结果赋值给build_os和host_os,configure脚本会根据build_os和host_os的值来制定编译命令。如果没有生成动态库就可去查看以下脚本怎么设置--host。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值