Mac下用cmake編譯 Android用libjpeg-turbo

終於有時間寫博客了,en~~~~
以前作電商項目,遇到項目中大量的圖片質量處理問題,跳過官方的skia)直接利用libjpeg-turbo處理圖片linux


先說下編譯靜態庫與動態庫後面有時間再寫下如何利用libjpeg-turbo進行圖片質量處理的專題android

1.編譯環境

os cmake ndk
macOS Mojave 10.14.2 3.10.2.4988404 android-ndk-r16b

2.編譯腳本

按照官方的BUILDING.md中的編譯腳本稍做修改命名爲build.shgit

#!/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,有須要其餘的平臺的參考官方腳本修改下github


默認編譯出來的so庫與.a靜態庫是帶有版本號的,不想要能夠去掉
1.在libjpeg-turbo-master/CMakeLists.txt 中註釋相關
image
2.還有libjpeg-turbo-master/sharedlib/CMakeLists.txt中註釋相關
imagemacos

3. 編譯

build.sh文件放在源碼目錄下,cd 到源碼目錄
image
成功後源碼目錄android目錄下就會有想要的靜態與動態庫了
imagebash


若是不成功記得先刪掉源碼目錄下的CMakeCache.txt文件,再執行腳本ide

這樣就能夠移植到 Androidstudio中進行下一步的JNI開發工具

相關文章
相關標籤/搜索