Ubuntu22.04交叉编译Android平台运行libjpeg(libturbojpeg) 3.0.0 动态库

本文介绍了在Ubuntu22.04系统上,使用NDK-r21e交叉编译libjpeg3.0.0版本的过程,包括设置环境、编写并执行编译脚本,以生成适用于arm架构的动态库,涉及armeabi-v7a和arm64-v8a两种ABI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    听说libjpeg因为资金问题将停止后续开发,内心深感惋惜,最新的3.0.0版本或将成为绝响,于是想搞一发最新的3.0.0版本的交叉编译纪念一下这位老朋友。

 一、环境配置

系统:Ubuntu 22.04

交叉编译器:ndk-r21e

libjpeg:3.0.0版本(github传送门)

编译环境搭建请参考之前的文章:Android FFMPEG编解码实践(一):Ubuntu 22.04 NDK编译FFMPEG+libx264_ubantu 编译ffmpeg android_selivert的博客-优快云博客linux系统下使用ndk交叉编译ffmpeg+x264_ubantu 编译ffmpeg androidhttps://blog.youkuaiyun.com/selivert/article/details/125622413

二、编译动态库

        好的,接下来开始交叉编译。

        进入源码目录,新建执行脚本文件。

touch build.sh
sudo chmod +x build.sh

打开脚本文件,输入如下编译脚本内容:

#!/bin/bash

NDK_PATH=/home/selivert/ndk/android-ndk-r21e #更换成本地ndk路径
TOOLCHAIN=clang
ANDROID_VERSION=21  #android-21 5.0
CMAKE_PATH=`pwd`/CMakeFiles

if [ -d "${CMAKE_PATH}" ] ; then
rm -r ${CMAKE_PATH}
fi

#32
cmake -G"Unix Makefiles" \
  -DANDROID_ABI=armeabi-v7a \
  -DCMAKE_INSTALL_PREFIX=`pwd`/android/v7 \
  -DENABLE_STATIC=FALSE \
  -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 \
  `pwd`/
make
make install
make clean

if [ -d "${CMAKE_PATH}" ] ; then
rm -r ${CMAKE_PATH}
fi

#64
cmake -G"Unix Makefiles" \
  -DANDROID_ABI=arm64-v8a \
  -DCMAKE_INSTALL_PREFIX=`pwd`/android/v8 \
  -DENABLE_STATIC=FALSE \
  -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 \
  `pwd`/
  
make
make install

 具体的内容是从GitHub中的BUILDING.md中获取的,笔者稍加改动,合成一个脚本。

 然后执行脚本,静等编译结束吧。

看一下编译结果:(为了方便显示,我删除了一些结果之外的内容)

 编译完成, 看一下是不是我们期望的运行在arm上的动态库(32位为列)

 ok,至此编译成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值