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

歡迎訪問 生活随笔!

生活随笔

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

Android

【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )

發布時間:2025/6/17 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、 libjpeg-turbo 函數庫下載與解壓
  • 二、 libjpeg-turbo 編譯文檔
  • 三、 編譯前環境準備
  • 四、 安裝 NASM 匯編工具
    • 1、 下載 NASM 匯編工具
    • 2、 拷貝解壓 NASM 源碼
    • 3、 編譯安裝 nasm-2.15
  • 五、 編譯 Android 平臺使用的 libjpeg-turbo 函數庫參考 ( 官方提供 | 僅供參考 )
    • 1、ARMv7 (32-bit)
    • 2、ARMv8 (64-bit)
    • 3、x86 (32-bit)
    • 4、x86-64 (64-bit)





一、 libjpeg-turbo 函數庫下載與解壓



在上一篇博客 【Android 內存優化】Android 原生 API 圖片壓縮原理 ( 哈夫曼編碼開關 | 哈夫曼編碼原理 | libjpeg-turbo 函數庫 ) 對哈夫曼編碼進行了介紹 , 如果需要在所有的 Android 手機上使用哈夫曼編碼壓縮圖片, 那就需要使用 libjpeg-turbo 函數庫 , 從 libjpeg-turbo/libjpeg-turbo GitHub 項目的 Release 發布版本頁面 下載 Release 版本的源碼 , 這里下載最新的 Source code (tar.gz) 源碼 ;


拷貝源碼到 Ubuntu : 源碼下載完畢后 , 將源碼 libjpeg-turbo-2.0.5.tar.gz 拷貝到 Ubuntu 虛擬機中 , 在 /root/ 目錄下創建 picture_compress 目錄 , 將源碼拷貝到該目錄下 ;



解壓源碼 : 執行 tar xvf libjpeg-turbo-2.0.5.tar.gz 命令 , 解壓 libjpeg-turbo 函數庫源碼 ;

$ tar xvf libjpeg-turbo-2.0.5.tar.gz





二、 libjpeg-turbo 編譯文檔



編譯文檔 :


查看 libjpeg-turbo 函數庫的 ReadMe 信息 , 查找如何編譯該函數庫 ;

官方提示 , 讓我們查看 BUILDING.md 文件 , 里面有詳細的編譯文檔 ; ( 可以點擊該鏈接 , 直接跳轉查看該文件 )





三、 編譯前環境準備



在 BUILDING.md 中提供了編譯指導 , 在 Build Requirements 中說明了編譯前應該準備好的環境 ;


編譯前環境準備 :


① CMake 工具 : 安裝 2.8.12 以上的 CMake 工具 ;

② 匯編工具 : 安裝 NASM or YASM 工具 , 建議使用 2.10 版本以上的 NASM 工具 ;

④ GCC 編譯器 : 4.1 以上的 GCC 工具 , 這里交叉編譯使用 NDK 中的 GCC 工具即可 ;

⑤ JDK 工具 : 1.5 以上的 JDK , 用于生成 Java 調用庫 , 此處只需要編譯 C 語言部分即可 ;





四、 安裝 NASM 匯編工具





1、 下載 NASM 匯編工具


下載 NASM 匯編工具 :


編譯需要安裝 NASM 或者 YASM , 這是匯編工具 ;

NASM 下載地址 : http://www.nasm.us/pub/nasm/releasebuilds

選擇最新的發布版本 : 2.15 版本 , 昨天剛發布的 ;

在 https://www.nasm.us/pub/nasm/releasebuilds/2.15/ 頁面下載 nasm-2.15.tar.gz 壓縮包 ; 也可以直接點擊 此處連接下載 ;



2、 拷貝解壓 NASM 源碼


拷貝文件 : 將該文件拷貝到 Ubuntu 系統中的 /root/picture_compress 目錄中 ;

解壓該文件 : 調用 tar xvf nasm-2.15.tar.gz 命令 , 解壓該文件 ;

$ tar xvf nasm-2.15.tar.gz

該目錄中的文件情況 :libjpeg-turbo-2.0.5 , libjpeg-turbo-2.0.5.tar.gz , nasm-2.15 , nasm-2.15.tar.gz 四個文件或目錄 ;

root@octopus:~/picture_compress# ls libjpeg-turbo-2.0.5 libjpeg-turbo-2.0.5.tar.gz nasm-2.15 nasm-2.15.tar.gz root@octopus:~/picture_compress#

3、 編譯安裝 nasm-2.15


編譯 nasm-2.15 :


① 生成 Makefile 文件 : 進入 nasm-2.15 目錄 , 執行 ./configure 命令 , 先生成 Makefile 文件 ;

$ ./configure

執行上述命令 , 最終會生成 Makefile 文件 ;

root@octopus:~/picture_compress/nasm-2.15# ./configure checking for prefix by checking for nasm... no checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for gcc... gcc// ... 省略一萬行 checking if gcc supports C99 external inlines... yes configure: creating ./config.status config.status: creating Makefile config.status: creating doc/Makefile config.status: creating config/config.h root@octopus:~/picture_compress/nasm-2.15#

② 編譯安裝 : 在/root/picture_compress/nasm-2.15 目錄下執行 make install 命令 , 編譯安裝 nasm-2.15 匯編工具 ;

$ make install

編譯完成后 , 該工具即可使用 ;

root@octopus:~/picture_compress/nasm-2.15# make install gcc -c -g -O2 -fwrapv -U__STRICT_ANSI__ -fno-common -Werror=attributes -ffunction-sections -fdata-sections -fvisibility=hidden -Wall -W -pedantic -Wc90-c99-compat -Wno-long-long -Wno-shift-negative-value -Werror=implicit -Werror=missing-braces -Werror=return-type -Werror=trigraphs -Werror=pointer-arith -Werror=missing-prototypes -Werror=missing-declarations -Werror=comment -Werror=vla -DHAVE_CONFIG_H -I. -I. -I./include -I./include -I./x86 -I./x86 -I./asm -I./asm -I./disasm -I./disasm -I./output -I./output -o asm/nasm.o asm/nasm.c// 省略 ...I./output -I./output -Wl,--gc-sections -o ndisasm disasm/ndisasm.o libnasm.a /bin/mkdir -p /usr/local/bin /usr/bin/install -c nasm /usr/local/bin/nasm /usr/bin/install -c ndisasm /usr/local/bin/ndisasm /bin/mkdir -p /usr/local/share/man/man1 /usr/bin/install -c -m 644 ./nasm.1 /usr/local/share/man/man1/nasm.1 /usr/bin/install -c -m 644 ./ndisasm.1 /usr/local/share/man/man1/ndisasm.1 root@octopus:~/picture_compress/nasm-2.15#

下面的操作在老版本中才需要 , 新版本 , 不需要執行下面的操作 ; ( 非必要操作 , 僅做參考 )

安裝 autoconf 工具 :

$ sudo apt install autoconf

進入 /root/picture_compress/libjpeg-turbo-xxx 目錄 , 執行 autoreconf -fiv 命令 ;

$ autoreconf -fiv



五、 編譯 Android 平臺使用的 libjpeg-turbo 函數庫參考 ( 官方提供 | 僅供參考 )



NDK 要求 : Android NDK , 必須使用 v13b 以上的版本 ;

下方的配置來源與 https://github.com/libjpeg-turbo/libjpeg-turbo/blame/master/BUILDING.md ;


下面的編譯腳本僅做參考 , 實際編譯時還是使用之前熟悉的 configure 配置生成 Makefile 文件 ; 這里僅參考其中的配置信息 ;



1、ARMv7 (32-bit)


交叉編譯通用腳本 , 編譯 ARMv7 (32-bit) CPU 架構函數庫 ;

# Set these variables to suit your needsNDK_PATH={full path to the NDK directory-- for example,/opt/android/android-ndk-r16b}TOOLCHAIN={"gcc" or "clang"-- "gcc" must be used with NDK r16b and earlier,and "clang" must be used with NDK r17c and later}ANDROID_VERSION={the minimum version of Android to support-- for example,"16", "19", etc.}cd {build_directory}cmake -G"Unix Makefiles" \-DANDROID_ABI=armeabi-v7a \-DANDROID_ARM_MODE=arm \-DANDROID_PLATFORM=android-${ANDROID_VERSION} \-DANDROID_TOOLCHAIN=${TOOLCHAIN} \-DCMAKE_ASM_FLAGS="--target=arm-linux-androideabi${ANDROID_VERSION}" \-DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \[additional CMake flags] {source_directory}make

2、ARMv8 (64-bit)


交叉編譯通用腳本 , 編譯 ARMv8 (64-bit) CPU 架構函數庫 ;

# Set these variables to suit your needsNDK_PATH={full path to the NDK directory-- for example,/opt/android/android-ndk-r16b}TOOLCHAIN={"gcc" or "clang"-- "gcc" must be used with NDK r14b and earlier,and "clang" must be used with NDK r17c and later}ANDROID_VERSION={the minimum version of Android to support. "21" or lateris required for a 64-bit build.}cd {build_directory}cmake -G"Unix Makefiles" \-DANDROID_ABI=arm64-v8a \-DANDROID_ARM_MODE=arm \-DANDROID_PLATFORM=android-${ANDROID_VERSION} \-DANDROID_TOOLCHAIN=${TOOLCHAIN} \-DCMAKE_ASM_FLAGS="--target=aarch64-linux-android${ANDROID_VERSION}" \-DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \[additional CMake flags] {source_directory}make

3、x86 (32-bit)


交叉編譯通用腳本 , 編譯 x86 (32-bit) CPU 架構函數庫 ;

# Set these variables to suit your needsNDK_PATH={full path to the NDK directory-- for example,/opt/android/android-ndk-r16b}TOOLCHAIN={"gcc" or "clang"-- "gcc" must be used with NDK r14b and earlier,and "clang" must be used with NDK r17c and later}ANDROID_VERSION={The minimum version of Android to support-- for example,"16", "19", etc.}cd {build_directory}cmake -G"Unix Makefiles" \-DANDROID_ABI=x86 \-DANDROID_PLATFORM=android-${ANDROID_VERSION} \-DANDROID_TOOLCHAIN=${TOOLCHAIN} \-DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \[additional CMake flags] {source_directory}make

4、x86-64 (64-bit)


交叉編譯通用腳本 , 編譯 x86-64 (64-bit) CPU 架構函數庫 ;

# Set these variables to suit your needsNDK_PATH={full path to the NDK directory-- for example,/opt/android/android-ndk-r16b}TOOLCHAIN={"gcc" or "clang"-- "gcc" must be used with NDK r14b and earlier,and "clang" must be used with NDK r17c and later}ANDROID_VERSION={the minimum version of Android to support. "21" or lateris required for a 64-bit build.}cd {build_directory}cmake -G"Unix Makefiles" \-DANDROID_ABI=x86_64 \-DANDROID_PLATFORM=android-${ANDROID_VERSION} \-DANDROID_TOOLCHAIN=${TOOLCHAIN} \-DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \[additional CMake flags] {source_directory}make

總結

以上是生活随笔為你收集整理的【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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