From 7aff4e31fb21bcd7bbd66d36b6e58b57f4f87b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=81=BF=E8=BE=89?= <122565648@qq.com> Date: Tue, 31 Mar 2020 00:12:32 +0800 Subject: [PATCH] Simply build_ffmepg.sh --- build_ffmpeg.sh | 73 ++++++++++++++++++------------------------------- 1 file changed, 26 insertions(+), 47 deletions(-) diff --git a/build_ffmpeg.sh b/build_ffmpeg.sh index bb289b0..4cc5d3e 100755 --- a/build_ffmpeg.sh +++ b/build_ffmpeg.sh @@ -19,6 +19,7 @@ FFMPEG_PATH=. NDK_PATH=/Users/xch/Library/Android/sdk/ndk/21.0.5935234 HOST_PLATFORM="darwin-x86_64" TOOLCHAIN_PREFIX="${NDK_PATH}/toolchains/llvm/prebuilt/${HOST_PLATFORM}/bin" +GCC_PREFIX="${NDK_PATH}/toolchains/llvm/prebuilt/${HOST_PLATFORM}/lib/gcc" ENABLED_ENCODERS=(h264 png) ENABLED_DECODERS=(h264 mpeg4 png) @@ -67,117 +68,95 @@ do COMMON_OPTIONS="${COMMON_OPTIONS} --enable-filter=${filter}" done +COMMON_MERGE_OPTIONS=" + libavcodec/libavcodec.a + libavfilter/libavfilter.a + libavformat/libavformat.a + libavutil/libavutil.a + libswresample/libswresample.a + libswscale/libswscale.a + -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker +" + cd "${FFMPEG_PATH}" # (git -C ffmpeg pull || git clone git://source.ffmpeg.org/ffmpeg ffmpeg) cd ffmpeg git checkout release/4.2 # armeabi-v7a +SYSROOT="${NDK_PATH}/platforms/android-16/arch-arm" +PREFIX="android-libs/armeabi-v7a" ./configure \ - --prefix=android-libs/armeabi-v7a \ + --prefix=$PREFIX \ --arch=arm \ --cpu=armv7-a \ --cross-prefix="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-" \ --nm="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-nm" \ --cc="${TOOLCHAIN_PREFIX}/armv7a-linux-androideabi16-clang" \ - --ar="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-ar" \ --extra-cflags="-march=armv7-a -mfloat-abi=softfp" \ --extra-ldflags="-Wl,--fix-cortex-a8" \ --extra-ldexeflags=-pie \ ${COMMON_OPTIONS} make -j4 make install - -SYSROOT="${NDK_PATH}/platforms/android-16/arch-arm" -PREFIX="$(pwd)/android-libs/armeabi-v7a" - -# 打包 ${TOOLCHAIN_PREFIX}/arm-linux-androideabi-ld \ -rpath-link=$SYSROOT/usr/lib \ -L$SYSROOT/usr/lib \ -L$PREFIX/lib \ -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \ $PREFIX/libffmpeg.so \ - libavcodec/libavcodec.a \ - libavfilter/libavfilter.a \ - libavformat/libavformat.a \ - libavutil/libavutil.a \ - libswresample/libswresample.a \ - libswscale/libswscale.a \ - -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \ - ${NDK_PATH}/toolchains/llvm/prebuilt/${HOST_PLATFORM}/lib/gcc/arm-linux-androideabi/4.9.x/libgcc_real.a \ - + ${COMMON_MERGE_OPTIONS} \ + ${GCC_PREFIX}/arm-linux-androideabi/4.9.x/libgcc_real.a ${TOOLCHAIN_PREFIX}/arm-linux-androideabi-strip $PREFIX/libffmpeg.so make clean # arm64-v8a +SYSROOT="${NDK_PATH}/platforms/android-21/arch-arm64" +PREFIX="android-libs/arm64-v8a" ./configure \ - --prefix=android-libs/arm64-v8a \ + --prefix=$PREFIX \ --arch=aarch64 \ --cpu=armv8-a \ --cross-prefix="${TOOLCHAIN_PREFIX}/aarch64-linux-android-" \ --nm="${TOOLCHAIN_PREFIX}/aarch64-linux-android-nm" \ --cc="${TOOLCHAIN_PREFIX}/aarch64-linux-android21-clang" \ - --ar="${TOOLCHAIN_PREFIX}/aarch64-linux-android-ar" \ --extra-ldexeflags=-pie \ ${COMMON_OPTIONS} make -j8 make install - -SYSROOT="${NDK_PATH}/platforms/android-21/arch-arm64" -PREFIX="$(pwd)/android-libs/arm64-v8a" - - # 打包 ${TOOLCHAIN_PREFIX}/aarch64-linux-android-ld \ -rpath-link=$SYSROOT/usr/lib \ -L$SYSROOT/usr/lib \ -L$PREFIX/lib \ -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \ $PREFIX/libffmpeg.so \ - libavcodec/libavcodec.a \ - libavfilter/libavfilter.a \ - libavformat/libavformat.a \ - libavutil/libavutil.a \ - libswresample/libswresample.a \ - libswscale/libswscale.a \ - -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \ - ${NDK_PATH}/toolchains/llvm/prebuilt/${HOST_PLATFORM}/lib/gcc/aarch64-linux-android/4.9.x/libgcc_real.a \ - + ${COMMON_MERGE_OPTIONS} \ + ${GCC_PREFIX}/aarch64-linux-android/4.9.x/libgcc_real.a ${TOOLCHAIN_PREFIX}/aarch64-linux-android-strip $PREFIX/libffmpeg.so make clean # x86 +SYSROOT="${NDK_PATH}/platforms/android-16/arch-x86" +PREFIX="android-libs/x86" ./configure \ - --prefix=android-libs/x86 \ + --prefix=$PREFIX \ --arch=x86 \ --cpu=i686 \ --cross-prefix="${TOOLCHAIN_PREFIX}/i686-linux-android-" \ --nm="${TOOLCHAIN_PREFIX}/i686-linux-android-nm" \ --cc="${TOOLCHAIN_PREFIX}/i686-linux-android16-clang" \ - --ar="${TOOLCHAIN_PREFIX}/i686-linux-android-ar" \ --extra-ldexeflags=-pie \ --disable-asm \ ${COMMON_OPTIONS} make -j4 make install - -SYSROOT="${NDK_PATH}/platforms/android-16/arch-x86" -PREFIX="$(pwd)/android-libs/x86" - ${TOOLCHAIN_PREFIX}/i686-linux-android-ld \ -rpath-link=$SYSROOT/usr/lib \ -L$SYSROOT/usr/lib \ -L$PREFIX/lib \ -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \ $PREFIX/libffmpeg.so \ - libavcodec/libavcodec.a \ - libavfilter/libavfilter.a \ - libavformat/libavformat.a \ - libavutil/libavutil.a \ - libswresample/libswresample.a \ - libswscale/libswscale.a \ - -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \ - ${NDK_PATH}/toolchains/llvm/prebuilt/${HOST_PLATFORM}/lib/gcc/i686-linux-android/4.9.x/libgcc_real.a \ - + ${COMMON_MERGE_OPTIONS} \ + ${GCC_PREFIX}/i686-linux-android/4.9.x/libgcc_real.a ${TOOLCHAIN_PREFIX}/i686-linux-android-strip $PREFIX/libffmpeg.so make clean