ubuntu20.04交叉编译ffmpeg5.1支持https(armeabi-v7a、arm64-v8a)

#使用ndk-r21e编译openssl-1.1.1u
#armeabi-v7a
./Android/Ndk/android-ndk-r21e/build/tools/make-standalone-toolchain.sh \
--platform=android-21 \
--arch=arm \
--install-dir=`pwd`/Android/toolchain/ndkr21e-platform21-arm
export ANDROID_NDK_HOME=`pwd`/Android/toolchain/ndkr21e-platform21-arm
export SYSROOT=$ANDROID_NDK_HOME/sysroot
export PATH=$ANDROID_NDK_HOME/bin:$PATH
./Configure android-arm shared no-asm --prefix=/home/zebra/Dependencies/openssl-1.1.1u/arm
make clean
make 
make install

#arm64-v8a
./Android/Ndk/android-ndk-r21e/build/tools/make-standalone-toolchain.sh \
--platform=android-21 \
--arch=arm64 \
--install-dir=`pwd`/Android/toolchain/ndkr21e-platform21-arm64
export ANDROID_NDK_HOME=`pwd`/Android/toolchain/ndkr21e-platform21-arm64
export SYSROOT=$ANDROID_NDK_HOME/sysroot
export PATH=$ANDROID_NDK_HOME/bin:$PATH
./Configure android-arm64 shared no-asm --prefix=/home/zebra/Dependencies/openssl-1.1.1u/arm64
make clean
make
make install

#NOTE: openssl so后缀修改,编辑Configurations/15-android.conf,大概在193添加一行代码,如下:
#    "android" => {
#        inherit_from     => [ "linux-generic32" ],
#        template         => 1,
#        ################################################################
#        # Special note about -pie. The underlying reason is that
#        # Lollipop refuses to run non-PIE. But what about older systems
#        # and NDKs? -fPIC was never problem, so the only concern is -pie.
#        # Older toolchains, e.g. r4, appear to handle it and binaries
#        # turn out mostly functional. "Mostly" means that oldest
#        # Androids, such as Froyo, fail to handle executable, but newer
#        # systems are perfectly capable of executing binaries targeting
#        # Froyo. Keep in mind that in the nutshell Android builds are
#        # about JNI, i.e. shared libraries, not applications.
#        cflags           => add(sub { android_ndk()->{cflags} }),
#        cppflags         => add(sub { android_ndk()->{cppflags} }),
#        cxxflags         => add(sub { android_ndk()->{cflags} }),
#        bn_ops           => sub { android_ndk()->{bn_ops} },
#        bin_cflags       => "-pie",
#        enable           => [ ],
#        shared_extension => ".so",  ### 这一行是新加的
#    },

#使用ndk-r21e编译ffmpeg
export NDK=/home/zebra/Android/Ndk/android-ndk-r21e
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64

#修改so生成的后缀名
#SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
#LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
#SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
#SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

#armeabi-v7a
./configure \
--prefix=/home/zebra/Dependencies/ffmpeg5.1/armeabi-v7a \
--arch=arm \
--cpu=armv7-a \
--enable-cross-compile \
--sysroot=$TOOLCHAIN/sysroot \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--cc=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang \
--cxx=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++ \
--disable-postproc \
--disable-debug \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-symver \
--disable-doc \
--disable-avdevice \
--disable-static \
--enable-shared \
--enable-neon \
--enable-hwaccels \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-decoder=mpeg4_mediacodec \
--enable-hwaccel=h264_mediacodec \
--target-os=android \
--enable-openssl \
--extra-cflags="-Os -fpic -march=armv7-a -I/home/zebra/Dependencies/openssl-1.1.1u/arm/include" \
--extra-ldflags="-L/home/zebra/Dependencies/openssl-1.1.1u/arm/lib"
make clean
make
make install

#arm64-v8a
./configure \
--prefix=/home/zebra/Dependencies/ffmpeg5.1/arm64-v8a \
--sysroot=$TOOLCHAIN/sysroot \
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
--arch=arm64 \
--cpu=armv8-a \
--cc=$TOOLCHAIN/bin/aarch64-linux-android21-clang \
--cxx=$TOOLCHAIN/bin/aarch64-linux-android21-clang++ \
--disable-postproc \
--disable-debug \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-symver \
--disable-doc \
--disable-avdevice \
--disable-static \
--enable-shared \
--enable-neon \
--enable-hwaccels \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-decoder=mpeg4_mediacodec \
--enable-hwaccel=h264_mediacodec \
--target-os=android \
--enable-cross-compile \
--enable-openssl \
--extra-cflags="-Os -fpic -march=armv8-a -I/home/zebra/Dependencies/openssl-1.1.1u/arm64/include" \
--extra-ldflags="-L/home/zebra/Dependencies/openssl-1.1.1u/arm64/lib"
make clean
make
make install
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值