Mac下用cmake编译 Android用libjpeg-turbo

董志强 2019-06-30

终于有时间写博客了,en~~~~
之前做电商项目,遇到项目中大量的图片质量处理问题,跳过官方的skia)直接利用libjpeg-turbo处理图片


先说下编译静态库与动态库后面有时间再写下如何利用libjpeg-turbo进行图片质量处理的专题

1.编译环境

oscmakendk
macOS Mojave 10.14.23.10.2.4988404android-ndk-r16b

2.编译脚本

按照官方的BUILDING.md中的编译脚本稍作修改命名为build.sh

#!/bin/bash
#ndk所在目录
NDK_PATH=/Users/hetao/Documents/android-ndk-r16b
#编译环境这里是 macOS
BUILD_PLATFORM=darwin-x86_64
#编译工具链版本
TOOLCHAIN_VERSION=4.9
#最低兼容
ANDROID_VERSION=14
 
#添加cmake环境变量 这里是android sdk中的
export PATH="/Users/hetao/Documents/android-sdk-macosx/cmake/3.10.2.4988404/bin":"$PATH"
#源码目录 这里是当前脚本所在目录
MY_SOURCE_DIR=$(pwd)
# 生成目标文件目录
PREFIX=$(pwd)/android
 
 
# 目标平台
HOST=arm-linux-androideabi
SYSROOT=${NDK_PATH}/platforms/android-${ANDROID_VERSION}/arch-arm
# armera-v7平台
export CFLAGS="-march=armv7-a -mfloat-abi=softfp -fprefetch-loop-arrays \
  -D__ANDROID_API__=${ANDROID_VERSION} --sysroot=${SYSROOT} \
  -isystem ${NDK_PATH}/sysroot/usr/include \
  -isystem ${NDK_PATH}/sysroot/usr/include/${HOST}"
export LDFLAGS=-pie
TOOLCHAIN=${NDK_PATH}/toolchains/${HOST}-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM}
 
cat <<EOF >toolchain.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER ${TOOLCHAIN}/bin/${HOST}-gcc)
set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN}/${HOST})
EOF
 
cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake \
    -DCMAKE_POSITION_INDEPENDENT_CODE=1 \
    -DCMAKE_INSTALL_PREFIX=${PREFIX} \
    ${MY_SOURCE_DIR}
 
make clean
make
make install

这里只编译了ARMv7,有需要其他的平台的参考官方脚本修改下


默认编译出来的so库与.a静态库是带有版本号的,不想要可以去掉
1.在libjpeg-turbo-master/CMakeLists.txt 中注释相关
Mac下用cmake编译 Android用libjpeg-turbo
2.还有libjpeg-turbo-master/sharedlib/CMakeLists.txt中注释相关
Mac下用cmake编译 Android用libjpeg-turbo

3. 编译

build.sh文件放在源码目录下,cd 到源码目录
Mac下用cmake编译 Android用libjpeg-turbo
成功后源码目录android目录下就会有想要的静态与动态库了
Mac下用cmake编译 Android用libjpeg-turbo


如果不成功记得先删掉源码目录下的CMakeCache.txt文件,再执行脚本

这样就可以移植到 Androidstudio中进行下一步的JNI开发

相关推荐

XinLianOrg / 0评论 2017-12-04