最新的ndkr20编译c_Android NDK-r20 交叉编译 FFmpeg 4.2

这个脚本详细定义了如何设置Android NDK的环境变量,包括NDK路径、目标架构(armv7a和aarch64)、最小支持的Android版本以及各种编译工具的路径。它还修改了`configure`文件以适应Android编译,并针对特定的数学函数进行了宏定义的调整。
摘要由CSDN通过智能技术生成

#!/usr/bin/env bash

# NDK 根目录

export NDK=/Users/hubin/Application/ndk/android-ndk-r20

# 当前系统

export HOST_TAG=darwin-x86_64

# 支持的 Android CUP 架构

# export ARCH=aarch64

# export CPU=armv8-a

export ARCH=armv7a

export CPU=armv7-a

# 支持的 Android 最低系统版本

export MIN=21

export ANDROID_NDK_PLATFORM=android-21

export PREFIX=$(pwd)/android/$CPU

export MIN_PLATFORM=$NDK/platforms/android-$MIN

export SYSROOT=$NDK/sysroot

export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG

export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar

export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as

export CC=$TOOLCHAIN/bin/$ARCH-linux-androideabi$MIN-clang

export CXX=$TOOLCHAIN/bin/$ARCH-linux-androideabi$MIN-clang++

export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld

export NM=$TOOLCHAIN/bin/arm-linux-androideabi-nm

export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib

export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip

OPTIMIZE_CFLAGS="-DANDROID -I$NDK/sysroot/usr/include/arm-linux-androideabi/"

ADDI_LDFLAGS="-Wl,-rpath-link=$MIN_PLATFORM/arch-arm/usr/lib -L$MIN_PLATFORM/arch-arm/usr/lib -nostdlib"

sed -i "" "s/SLIBNAME_WITH_MAJOR='\$(SLIBNAME).\$(LIBMAJOR)'/SLIBNAME_WITH_MAJOR='\$(SLIBPREF)\$(FULLNAME)-\$(LIBMAJOR)\$(SLIBSUF)'/" configure

sed -i "" "s/LIB_INSTALL_EXTRA_CMD='\$\$(RANLIB) \"\$(LIBDIR)\\/\$(LIBNAME)\"'/LIB_INSTALL_EXTRA_CMD='\$\$(RANLIB) \"\$(LIBDIR)\\/\$(LIBNAME)\"'/" configure

sed -i "" "s/SLIB_INSTALL_NAME='\$(SLIBNAME_WITH_VERSION)'/SLIB_INSTALL_NAME='\$(SLIBNAME_WITH_MAJOR)'/" configure

sed -i "" "s/SLIB_INSTALL_LINKS='\$(SLIBNAME_WITH_MAJOR) \$(SLIBNAME)'/SLIB_INSTALL_LINKS='\$(SLIBNAME)'/" configure

# sed -i "" "s/SHFLAGS='-shared -Wl,-soname,\$(SLIBNAME)'/SHFLAGS='-shared -soname \$(SLIBNAME)'/" configure

# sed -i "" "s/-Wl//g" configure

./configure \

--prefix=$PREFIX \

--ar=$AR \

--as=$AS \

--cc=$CC \

--cxx=$CXX \

--nm=$NM \

--ranlib=$RANLIB \

--strip=$STRIP \

--arch=$ARCH \

--target-os=android \

--enable-cross-compile \

--disable-asm \

--enable-shared \

--disable-static \

--disable-ffprobe \

--disable-ffplay \

--disable-ffmpeg \

--disable-debug \

--disable-symver \

--disable-stripping \

--extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \

--extra-ldflags="$ADDI_LDFLAGS"

sed -i "" "s/#define HAVE_TRUNC 0/#define HAVE_TRUNC 1/" config.h

sed -i "" "s/#define HAVE_TRUNCF 0/#define HAVE_TRUNCF 1/" config.h

sed -i "" "s/#define HAVE_RINT 0/#define HAVE_RINT 1/" config.h

sed -i "" "s/#define HAVE_LRINT 0/#define HAVE_LRINT 1/" config.h

sed -i "" "s/#define HAVE_LRINTF 0/#define HAVE_LRINTF 1/" config.h

sed -i "" "s/#define HAVE_ROUND 0/#define HAVE_ROUND 1/" config.h

sed -i "" "s/#define HAVE_ROUNDF 0/#define HAVE_ROUNDF 1/" config.h

sed -i "" "s/#define HAVE_CBRT 0/#define HAVE_CBRT 1/" config.h

sed -i "" "s/#define HAVE_CBRTF 0/#define HAVE_CBRTF 1/" config.h

sed -i "" "s/#define HAVE_COPYSIGN 0/#define HAVE_COPYSIGN 1/" config.h

sed -i "" "s/#define HAVE_ERF 0/#define HAVE_ERF 1/" config.h

sed -i "" "s/#define HAVE_HYPOT 0/#define HAVE_HYPOT 1/" config.h

sed -i "" "s/#define HAVE_ISNAN 0/#define HAVE_ISNAN 1/" config.h

sed -i "" "s/#define HAVE_ISFINITE 0/#define HAVE_ISFINITE 1/" config.h

sed -i "" "s/#define HAVE_INET_ATON 0/#define HAVE_INET_ATON 1/" config.h

sed -i "" "s/#define getenv(x) NULL/\\/\\/ #define getenv(x) NULL/" config.h

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值