日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 编译 libjpeg-turbo,编译Android环境的libjpeg-turbo

發布時間:2023/12/9 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 编译 libjpeg-turbo,编译Android环境的libjpeg-turbo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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環境的NDK3

2.3.2 安裝需要的工具

編譯libjpeg-tubro需要一系列工具,需要首先安裝配置好.比如:autoconf、automake、libtool、m4、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 編譯

下載并解壓源碼4

2.4.1 生成配置腳本

在終端依次輸入下列command

cd {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層直接使用就可以了。

總結

以上是生活随笔為你收集整理的android 编译 libjpeg-turbo,编译Android环境的libjpeg-turbo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。