mac编译android so文件,mac下FFmpeg交叉编译生成Android平台下的so库

本文介绍在Mac上编译Android SO文件的方法。使用ffmpeg-4.0.2版本和android-ndk-r10e,给出了在ffmpeg源码根目录下运行的脚本,包含不同架构的配置和编译命令。还提到生成结果查看及遇到权限拒绝、nasm/yasm问题的解决办法。

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

我用的版本是ffmpeg-4.0.2,可以从这个上面下载相应的版本

ndk:android-ndk-r10e

NDK 下载地址,里面有多个版本的 DNK

把下面脚本复制到sh文件中,在ffmpeg源码的根目下运行

chmod u+x build_android.sh

./build_android.sh

build_android.sh

PREFIX=android-build

#设置你自己的NDK位置

NDK_HOME=/Users/binny/Library/Android/android-ndk-r10e

#设置你自己的平台,这上Mac上的,linux换成linux-x86_64

NDK_HOST_PLATFORM=darwin-x86_64

COMMON_OPTIONS="\

--target-os=android \

--disable-static \

--enable-shared \

--enable-small \

--disable-programs \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-doc \

--disable-symver \

--disable-asm \

"

function build_android {

./configure \

--libdir=${PREFIX}/libs/armeabi-v7a \

--incdir=${PREFIX}/includes/armeabi-v7a \

--pkgconfigdir=${PREFIX}/pkgconfig/armeabi-v7a \

--arch=arm \

--cpu=armv7-a \

--cross-prefix="${NDK_HOME}/toolchains/arm-linux-androideabi-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/arm-linux-androideabi-" \

--sysroot="${NDK_HOME}/platforms/android-19/arch-arm/" \

--extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \

--extra-ldexeflags=-pie \

${COMMON_OPTIONS}

make clean

make -j8 && make install

./configure \

--libdir=${PREFIX}/libs/arm64-v8a \

--incdir=${PREFIX}/includes/arm64-v8a \

--pkgconfigdir=${PREFIX}/pkgconfig/arm64-v8a \

--arch=aarch64 \

--cpu=armv8-a \

--cross-prefix="${NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/aarch64-linux-android-" \

--sysroot="${NDK_HOME}/platforms/android-21/arch-arm64/" \

--extra-ldexeflags=-pie \

${COMMON_OPTIONS}

make clean

make -j8 && make install

./configure \

--libdir=${PREFIX}/libs/arm64-v8a \

--incdir=${PREFIX}/includes/arm64-v8a \

--pkgconfigdir=${PREFIX}/pkgconfig/arm64-v8a \

--arch=aarch64 \

--cpu=armv8-a \

--cross-prefix="${NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/aarch64-linux-android-" \

--sysroot="${NDK_HOME}/platforms/android-21/arch-arm64/" \

--extra-ldexeflags=-pie \

${COMMON_OPTIONS}

make clean

make -j8 && make install

./configure \

--libdir=${PREFIX}/libs/x86 \

--incdir=${PREFIX}/includes/x86 \

--pkgconfigdir=${PREFIX}/pkgconfig/x86 \

--arch=x86 \

--cpu=i686 \

--cross-prefix="${NDK_HOME}/toolchains/x86-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/i686-linux-android-" \

--sysroot="${NDK_HOME}/platforms/android-19/arch-x86/" \

--extra-ldexeflags=-pie \

${COMMON_OPTIONS}

make clean

make -j8 && make install

./configure \

--libdir=${PREFIX}/libs/x86_64 \

--incdir=${PREFIX}/includes/x86_64 \

--pkgconfigdir=${PREFIX}/pkgconfig/x86_64 \

--arch=x86_64 \

--cpu=x86_64 \

--cross-prefix="${NDK_HOME}/toolchains/x86_64-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/x86_64-linux-android-" \

--sysroot="${NDK_HOME}/platforms/android-21/arch-x86_64/" \

--extra-ldexeflags=-pie \

${COMMON_OPTIONS}

make clean

make -j8 && make install

};

build_android

生成结果如下

0a65b6e2b591?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

532A382E-CE5C-459F-9A64-B6ACFFC065A8.png

使用tree 命令查看一下目录结构

0a65b6e2b591?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

问题

权限拒绝,加一个sudo

0a65b6e2b591?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

brew install yasm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值