Mac下如何編譯 FFmpeg的SO庫,爲Android使用

花了一成天的時間,終於編譯經過了。 最大的問題,就是ndk的版本和ffmpeg的版本要對應上,嘗試過master,release/3.4, release/3.3, release/3.2, release/3.1,ndk-bundle, ndk-r10e各類交配,錯誤也是各類樣式。不要去關注,stdlib.h找不到,文件not executable,macro找不到,和你不要緊。

  1. ffmpeg的下載
    github.com/FFmpeg/FFmp…
    下載好版本切到release/3.1
  2. 修改configure文件
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'  
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'  
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'  
SLIB_INSTALL_LINKS='$(SLIBNAME)'

複製代碼
  1. 下載ndk-r10e
    stackoverflow.com/questions/6…linux

  2. 在ffmpeg目錄下編寫編譯腳本文件build_android.shandroid

#!/bin/bash
NDK=/Users/yangjing/Library/android-ndk-r10e
SYSROOT=$NDK/platforms/android-21/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
function build_one(){
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
make
make install
複製代碼
  1. 運行./build_android.sh,
    可能須要權限chmod 777 build_android.sh
  2. so會在ffmpeg目錄下生成,位於android/arm/*
相關文章
相關標籤/搜索