编译Android版本的libjpeg-turbo

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目录下生成对应架构的文件。

分享