编译Android环境的libjpeg-turbo
2017-10-25 13:48
281 查看
1、libjpeg 和 libjpeg-turbo
为了在Android环境实现无损压缩或者我们为了实现更高性能的
jpeg图像压缩,我们需要使用到libjpeg-turbo1。
官网上已说, libjpeg-turbo is generally 2-6x as fast as libjpeg。所以,一般我们选用
libjpeg-turbo而不是
libjpeg,因为前者快后者2-6倍
2、编译过程
2.1 下载源码
我们需要先下载libjpeg-turbo2的源码下载了源码之后,找到源码里的
BUILDING.md文件,我们将依照官方说明来进行编译安装
2.2 系统环境
编译之前我们需要准备配置好编译环境(Linux):Windows——需要Linux环境,可以使用cygwin
Linux——Ubuntu或者其它的Linux系统
这里我使用了在Windows上通过虚拟机安装的Ubuntu来编译
注意 1
切记,在Windows上使用
cygwin,不能使用Windows环境的NDK,否则会编译失败。我们需要在Linux环境下编译,所以一定要使用Linux环境下的NDK。
2.3 编译环境
我这里选用的Ubuntu来编译,所以以下的编译过程都是在Ubuntu下操作2.3.1 NDK
下载Linux环境的NDK32.3.2 安装需要的工具
编译libjpeg-tubro需要一系列工具,需要首先安装配置好.比如:autoconf、automake、libtool、m4、nasm
下载地址:
1. m4
2. autoconf
3. automake
4. libtool
5. nasm
安装有依赖关系,最好按照以上的顺序安装,
autoconf依赖
m4
如果需要编译
x86的库,需要安装
nasm
下载完成后,安装(Linux系统安装大致都是如此):
tar -xzvf *.gz //解压 cd dir //切换到解压目录 ./configure make sudo make install //有需要的输入系统登录账户密码
检验是否安装成功,比如,
aoutomake,终端定位到安装目录,执行
make --version
查看安装版本
我们安装的工具如下:
2.3.3 配置系统环境变量
把以上的安装都配置到系统环境变量里,方便我们在终端使用在终端输入:
sudo gedit /etc/environment
在
PATH='……'后面加入”
:我们安装的路径“,注意路径前面有冒号 :
编辑完后,点击save保存并关闭,然后执行
source /etc/environment
使之立即生效
2.4 编译
下载并解压源码42.4.1 生成配置脚本
在终端依次输入下列commandcd {source_directory} autoreconf -fiv cd {build_directory}
2.4.2 编写编译脚本
make install编译安装成功之后可以通过
make distclean清除编译结果
2.4.2.1 armeabi-v7a.sh
cd libjpeg NDK_PATH=/home/as/Android/android-ndk-r15c BUILD_PLATFORM=linux-x86_64 TOOLCHAIN_VERSION=4.9 ANDROID_VERSION=21 HOST=arm-linux-androideabi SYSROOT=${NDK_PATH}/platforms/android-${ANDROID_VERSION}/arch-arm ANDROID_CFLAGS="-march=armv7-a -mfloat-abi=softfp -fprefetch-loop-arrays -mfpu=neon -mthumb -D__ANDROID__ -D__ARM_ARCH_7__ \ --sysroot=${SYSROOT}" TOOLCHAIN=${NDK_PATH}/toolchains/${HOST}-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM} export CPP=${TOOLCHAIN}/bin/${HOST}-cpp export AR=${TOOLCHAIN}/bin/${HOST}-ar export NM=${TOOLCHAIN}/bin/${HOST}-nm export CC=${TOOLCHAIN}/bin/${HOST}-gcc export LD=${TOOLCHAIN}/bin/${HOST}-ld export RANLIB=${TOOLCHAIN}/bin/${HOST}-ranlib export OBJDUMP=${TOOLCHAIN}/bin/${HOST}-objdump export STRIP=${TOOLCHAIN}/bin/${HOST}-strip sh ../libjpeg-turbo-master/configure --host=${HOST} \ CFLAGS="${ANDROID_CFLAGS} -O3 -fPIE" \ CPPFLAGS="${ANDROID_CFLAGS}" \ LDFLAGS="${ANDROID_CFLAGS} -pie" --with-simd ${1+"$@"} --with-jpeg8 \ --prefix=/home/as/Documents/dist/libjpeg-turbo/armeabi-v7a/ make sudo make install # --exec-prefix=/home/as/Documents/dist/ex/ --enable-shared --enable-static
2.4.2.2 arm64-v8a.sh
cd libjpeg NDK_PATH=/home/as/Android/android-ndk-r15c BUILD_PLATFORM=linux-x86_64 TOOLCHAIN_VERSION=4.9 ANDROID_VERSION=21 HOST=aarch64-linux-android SYSROOT=${NDK_PATH}/platforms/android-${ANDROID_VERSION}/arch-arm64 ANDROID_CFLAGS="--sysroot=${SYSROOT}" TOOLCHAIN=${NDK_PATH}/toolchains/${HOST}-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM} export CPP=${TOOLCHAIN}/bin/${HOST}-cpp export AR=${TOOLCHAIN}/bin/${HOST}-ar export NM=${TOOLCHAIN}/bin/${HOST}-nm export CC=${TOOLCHAIN}/bin/${HOST}-gcc export LD=${TOOLCHAIN}/bin/${HOST}-ld export RANLIB=${TOOLCHAIN}/bin/${HOST}-ranlib export OBJDUMP=${TOOLCHAIN}/bin/${HOST}-objdump export STRIP=${TOOLCHAIN}/bin/${HOST}-strip sh ../libjpeg-turbo-master/configure --host=${HOST} \ CFLAGS="${ANDROID_CFLAGS} -O3 -fPIE" \ CPPFLAGS="${ANDROID_CFLAGS}" \ LDFLAGS="${ANDROID_CFLAGS} -pie" --with-simd ${1+"$@"} --with-jpeg8 \ --prefix=/home/as/Documents/dist/libjpeg-turbo/ make sudo make install # --exec-prefix=/home/as/Documents/dist/ex/ --enable-shared --enable-static
2.4.2.3 x86.sh
cd libjpeg NDK_PATH=/home/as/Android/android-ndk-r15c BUILD_PLATFORM=linux-x86_64 TOOLCHAIN_VERSION=4.9 ANDROID_VERSION=21 HOST=i686-linux-android SYSROOT=${NDK_PATH}/platforms/android-${ANDROID_VERSION}/arch-x86 ANDROID_CFLAGS="--sysroot=${SYSROOT}" TOOLCHAIN=${NDK_PATH}/toolchains/x86-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM} export CPP=${TOOLCHAIN}/bin/${HOST}-cpp export AR=${TOOLCHAIN}/bin/${HOST}-ar export NM=${TOOLCHAIN}/bin/${HOST}-nm export CC=${TOOLCHAIN}/bin/${HOST}-gcc export LD=${TOOLCHAIN}/bin/${HOST}-ld export RANLIB=${TOOLCHAIN}/bin/${HOST}-ranlib export OBJDUMP=${TOOLCHAIN}/bin/${HOST}-objdump export STRIP=${TOOLCHAIN}/bin/${HOST}-strip sh ../libjpeg-turbo-master/configure --host=${HOST} \ CFLAGS="${ANDROID_CFLAGS} -O3 -fPIE" \ CPPFLAGS="${ANDROID_CFLAGS}" \ LDFLAGS="${ANDROID_CFLAGS} -pie" --with-simd ${1+"$@"} --with-jpeg8 \ --prefix=/home/as/Documents/dist/libjpeg-turbo/x86/ make sudo make install # --exec-prefix=/home/as/Documents/dist/ex/ --enable-shared --enable-static
2.4.2.4 x86_64.sh
cd libjpeg NDK_PATH=/home/as/Android/android-ndk-r15c BUILD_PLATFORM=linux-x86_64 TOOLCHAIN_VERSION=4.9 ANDROID_VERSION=21 HOST=x86_64-linux-android SYSROOT=${NDK_PATH}/platforms/android-${ANDROID_VERSION}/arch-x86_64 ANDROID_CFLAGS="--sysroot=${SYSROOT}" TOOLCHAIN=${NDK_PATH}/toolchains/x86_64-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM} export CPP=${TOOLCHAIN}/bin/${HOST}-cpp export AR=${TOOLCHAIN}/bin/${HOST}-ar export NM=${TOOLCHAIN}/bin/${HOST}-nm export CC=${TOOLCHAIN}/bin/${HOST}-gcc export LD=${TOOLCHAIN}/bin/${HOST}-ld export RANLIB=${TOOLCHAIN}/bin/${HOST}-ranlib export OBJDUMP=${TOOLCHAIN}/bin/${HOST}-objdump export STRIP=${TOOLCHAIN}/bin/${HOST}-strip sh ../libjpeg-turbo-master/configure --host=${HOST} \ CFLAGS="${ANDROID_CFLAGS} -O3 -fPIE" \ CPPFLAGS="${ANDROID_CFLAGS}" \ LDFLAGS="${ANDROID_CFLAGS} -pie" --with-simd ${1+"$@"} --with-jpeg8 \ --prefix=/home/as/Documents/dist/libjpeg-turbo/x86-64/ make sudo make install #--exec-prefix=/home/as/Documents/dist/ex/ --enable-shared --enable-static
2.4.3 编译
以上脚本需要根据你的源码目录,NDK目录,修改相应的路径,--prefix指定编译的安装目录,就是最终的库存放位置
在终端里执行以上脚本
sh ./armeabi-v7a.sh
编译结果可以通过
make distclean清除
3、使用
至于使用网上已经有很多介绍,这里不再赘述,Android平台通过JNI或者在native层直接使用就可以了。libjpeg-turbo地址 ↩
libjpeg-turbo Github下载地址 ↩
Linux NDK下载 ↩
libjpeg-turbo Github下载地址 ↩
相关文章推荐
- ubuntu 下编译android libjpeg-turbo-1.5.2
- Android Studio导入Fresco项目编译报错unable to expand TAR 'imagepipeline\build\downloads\libjpeg-turbo-1.3.1.tar.gz'解决
- ndk编译android可用的libjpeg.so
- libjpeg-turbo在Windows VS2010下的编译
- Android系统开发编译环境配置
- Android ffmpeg+librtmp+speex交叉编译
- Freescale I.mx 6 Android 4.2.2源码编译环境搭建(基于ubuntu12.04 LTS)
- ubuntu 开机黑屏 (设置android编译环境时导致该问题)
- JPEG源码Android编译之Android.mk
- android ubuntu编译开发环境搭建总结
- 使用开源PPssPP 在android环境中编译步骤
- Linux Mint 13 的安装、配置及搭建Android源码编译环境
- cocos2.2.3 HelloCpp TestCpp android 环境搭建 编译
- android编译环境安装
- Android/AMSS编译环境
- windows下cocos2dx3.0开发环境及Android编译环境搭建
- Ubuntu 10.04环境下载&编译Android-2.2.1 (froyo) 源代码
- 在 Ubuntu 8.10环境下编译 Android 2.2
- android环境配置之后,编译时提示:The project cannot be built until build path errors are resolved 的解决方案
- Android编译环境(2) - 手工编译C模块