1. 程式人生 > >Ubuntu16.04交叉編譯Android平臺下的x264

Ubuntu16.04交叉編譯Android平臺下的x264

一,獲取x264原始碼

使用git下載:

官網下載:

歷史版本:

二, ubuntu16.04 +  ndk-r10e環境

官網下載:

百度網盤下載:

連結:https://pan.baidu.com/s/1cOMfj_TlKosuoK_zxJYE8A   密碼:ctv3

下載之後進入到ndk(android-ndk-r10e-linux-x86_64.bin )所在目錄,右擊開啟Teminal命令視窗,逐次執行以下兩條命令:chmod a+x android-ndk-r10c-linux-x86_64.bin  ./android-ndk-r10c-linux-x86_64.bin1

三,編譯指令碼

如果是編譯動態庫,先進入到x264目錄,修改configure檔案。定位到 1500行

else    echo "SOSUFFIX=so" >> config.mak

    echo "SONAME=libx264.so.$API"

這幾行,將"libx264.so.$API"替換為"libx264.so",檔名中就不要版本了

在原始碼根目錄下建立指令碼檔案  build_android.sh, 內容如下:

#!/bin/bash

if [ -z "$ANDROID_NDK" ]; then

echo "You must define ANDROID_NDK before starting."

echo "They must point to your NDK directories.\n"

exit 1

fi

# Detect OS

OS=`uname`

HOST_ARCH=`uname -m`

export CCACHE=; type ccache >/dev/null 2>&1 && export CCACHE=ccache

if [ $OS == 'Linux' ]; then

export HOST_SYSTEM=linux-$HOST_ARCH

elif [ $OS == 'Darwin' ]; then

export HOST_SYSTEM=darwin-$HOST_ARCH

fi

SOURCE=`pwd`

PREFIX=$SOURCE/build/android

SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm

CROSS_PREFIX=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/$HOST_SYSTEM/bin/arm-linux-androideabi-

EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__"

EXTRA_LDFLAGS="-nostdlib"

./configure  --prefix=$PREFIX \

--cross-prefix=$CROSS_PREFIX \

--extra-cflags="$EXTRA_CFLAGS" \

--extra-ldflags="$EXTRA_LDFLAGS" \

--enable-pic \

--enable-static \

--enable-strip \

--disable-cli \

--host=arm-linux \

--sysroot=$SYSROOT

make clean

make STRIP= -j4 install || exit 1

注意 :ANDROID_NDK為NDK所在目錄,

PREFIX,為編譯生成x264目標庫檔案路徑

SYSROOT ,CROSS_PREFIX 為NDK相關路徑, 

可以根據自己電腦配置修改以上變數。

然後修改build_android_arm.sh檔案的許可權:

sudo chmod a+x build_android.sh

然後執行:

  ./build_android.sh                                                        

等待編譯.........

  音視訊開發訓練營公眾號