交叉編譯:
通過生成工具鏈方式:
ndk下載地址:
https://developer.android.google.cn/ndk/downloads
下載linux版本解壓至對(duì)應(yīng)目錄
使用ndk下的make-standalone-toolchain腳本進(jìn)行工具鏈的生成托启,路徑位于:ndk/{ndk版本}/build/tools/make-standalone-toolchain.sh
腳本關(guān)鍵參數(shù):
--toolchain=arm-linux-androideabi-4.9 (指定編譯工具鏈版本?去哪查看版本)
--platform=android-19(指定sdk平臺(tái)最低支持版本)
--install-dir=../toolchain(指定工具鏈要生成的目錄)
#將腳本設(shè)置為可執(zhí)行
chmod +x make-standalone-toolchain.sh
sudo ./make-standalone-toolchain.sh --platform=android-19 --install-dir=ndktoolchain
執(zhí)行完畢后万牺,就會(huì)將所有相關(guān)的文件編譯到當(dāng)前目錄下的ndktoolchain里
創(chuàng)建編譯腳本build_ffmpeg.sh:
vim build_ffmpeg.sh
#!/bin/sh
#在下載的ffmpeg目錄下執(zhí)行該腳本,最終輸出至該目錄下的android-build目錄
PREFIX=android-build
#修改為自己的ndk路徑:即之前生成的工具鏈目錄路徑
NDK_HOME=/home/yy19920402/android-ndk-r22/build/tools/ndktoolchain
COMMON_OPTIONS="\
--prefix=android/ \
--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 {
#目前android主流平臺(tái)式armeabi-v7a架構(gòu)的處理器
./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/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
接著執(zhí)行腳本克蚂,生成交叉編譯出來的庫文件:
chmod +x build_ffmpeg.sh
./build_ffmpeg.sh
最終在下載的ffmpeg/android_build中生成結(jié)果