#使用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