交叉編譯-mac環境下使用ndk編譯ffmpeg

環境:
ffmpeg: v3.0.12 (目前最高版本4.1,如果你不懂c,請不要去嘗試最高版本,會報c語言錯誤)
下載地址:
https://www.ffmpeg.org/download.html#releases

ndk: ndk-r14b (嘗試過r16b,報c語言錯誤)
下載地址:
https://developer.android.com/ndk/downloads/older_releases

版本很重要,真的,請慎重選擇!!!

配置腳本:解壓下載的ffmpeg文件,查找configure文件,用sublime打開,進行下面的修改,目的是修改生成的文件後綴名爲.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)'

創建一個build_android.sh文件,vi build_android.sh, 名字請隨意,然後copy下面的內容,地址需要自行修改:

PREFIX=android-build
  
#設置你自己的NDK位置,這個地址很重要,一定要寫對
NDK_HOME=/Users/sxk/Downloads/android-ndk-r14b
#設置你自己的平臺,這上Mac上的,linux換成linux-x86_64
NDK_HOST_PLATFORM=darwin-x86_64

COMMON_OPTIONS="\
    --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 {
    ./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-23/arch-arm" \
    --extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS}
    make clean
    make -j8 && make install

};

build_android

運行 ./build_android.sh 你就會在文件夾下看到android-build文件,裏面的lib就是生成的so文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章