0x00 前言
libjpeg-turbo是一个JPEG编解码库,支持x86, x86-64, ARM等系统下的指令加速,其性能号称是libjpeg的2-6倍。官网地址是:https://libjpeg-turbo.org/。github地址是:https://github.com/libjpeg-turbo/libjpeg-turbo。
Android中默认提供了libjpeg实现的JPEG编解码接口,但是测试下来性能不是很好,无法满足实际使用需求。因此,准备编译Android版本来用。
0x01 下载源码
使用的编译环境是:Ubuntu 16.04 x64
一开始,我使用的是github上的代码,可以正常编译成linux版本。但是按照文档上的操作却始终无法编译出Android版本。
后来发现,官网上的提供的版本编译脚本与github上并不相同。官网的源码包下载地址为:https://sourceforge.net/projects/libjpeg-turbo/files/。我下的是1.5.3版本源码包。
解压到本地,根目录下的BUILDING.md
文件中包含了编译方法。具体内容如下:https://github.com/drunkdream/Android-libjpeg-turbo/blob/master/libjpeg-turbo-1.5.3/BUILDING.md
0x02 编译环境
编译依赖需要依赖以下库:
- autoconf 2.56 or later
- automake 1.7 or later
- libtool 1.4 or later
- NASM or YASM (if building x86 or x86-64 SIMD extensions)
Ubuntu下可以使用以下方法安装:
apt install autoconf
apt install automake
apt install libtool
apt install nasm
0x03 编译
修改BUILDING.md
中提供的编译脚本,编译出目标架构版本。为方便编译,我提供了可以直接编译的脚本: https://github.com/drunkdream/Android-libjpeg-turbo/blob/master/build.sh。
使用方法:
export NDK_PATH=/path/to/ndk
sh build.sh arm/arm64/x86/x86_64/all
此时,会在当前目录的out
目录下生成对应架构的文件。