1. 程式人生 > >在Linux下交叉編譯Android工具鏈

在Linux下交叉編譯Android工具鏈

搭建交叉編譯環境

  1. 下載Android NDK

http://developer.android.com/sdk/ndk/index.html

我這邊選擇下載Linux 64-bit(x86)android-ndk-r9d-linux-x86_64.tar.bz2

  1. 解壓android-ndk-r9d-linux-x86_64.tar.bz2到任意路徑

3.生成toolchain的文件可以參考docs/STANDALONE-TOOLCHAIN.html

3.1 檢視android-ndk-r9d支援的API

docs/STABLE-APIS.html

可以看到如下,因為我們現在的平臺android版本是4.2所以選擇android-17。也可以從platforms/下去檢視支援API版本

  android-3      -> Official Android 1.5 system images

  android-4      -> Official Android 1.6 system images

  android-5      -> Official Android 2.0 system images

  android-6      -> Official Android 2.0.1 system images

  android-7      -> Official Android 2.1 system images

  android-8      -> Official Android 2.2 system images

  android-9      -> Official Android 2.3 system images

  android-14     -> Official Android 4.0 system images

  android-18     -> Official Android 4.3 system images

3.2 設定SYSROOT環境變數

比如我解壓的路徑為/home/xxxx/project/test/ndk/android-ndk-r9d

那麼設定SYSROOT=/home/xxxx/project/test/ndk/android-ndk-r9d/platforms/android-17/arch-arm

3.3 生成toolchain

首先在android-ndk-r9d裡新建生成toolchain的資料夾,mkdir tmp/android-17-toolchain

執行如下命令:

/home/xxxx/project/test/ndk/android-ndk-r9d/build/tools/make-standalone-toolchain.sh --platform=android-17 --install-dir=/home/xxxx/project/test/ndk/android-ndk-r9d/tmp/android-17-toolchain

這樣就在android-17-toolchain下生成交叉編譯工具。

4.配置交叉編譯工具環境變數

我把android-17-toolchain放在/home/xxxx/document

sudo gedit ~/.bashrc

在最後新增如下命令

export PATH=$PATH:/home/xxxx/document/android-17-toolchain/bin

source ~/.bashrc

5.測試環境變數設定是否生效

arm-linux-androideabi-gcc -v

最後有獲取到gcc version 4.6 20120106 (prerelease) (GCC)就可以了

6.編譯c程式

arm-linux-androideabi-gcc -o main main.c

 

編譯Android版本的Opus音訊編解碼庫的方法

Opus 音訊編解碼庫是 Speex 音訊編解碼庫的下一代版本,從編解碼效能以及質量上來講都有了長足的進步。Opus 的編譯非常簡單,但是官方並未給出詳細的 Android 版本編譯指南,查找了大量資料,經過多次試驗,總結了一套成功的方法,具體如下:

1. 確保你的機器上安裝有 android ndk,並下載最新的 opus 原始碼。

2. android ndk 因為包含了針對多個 android 系統版本(api level)的編譯器工具鏈檔案,但是並未直接提供一個具體可用的工具鏈,因此需要藉助 ndk 生成一套編譯器工具鏈,前提是你必須要指定該工具鏈所針對的具體 android 系統版本,這裡以 api level 14(對應 android 4.0)為例,生成針對它的編譯器工具鏈,使用如下命令:

~/android-ndk-r10e/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=/tmp/my_toolchain

3. 定義環境變數,用於臨時的編譯,使用如下命令:

export PATH=/tmp/my_toolchain/bin/:$PATH

export CC=arm-linux-androideabi-gcc

export CXX=arm-linux-androideabi-g++

4. 配置並建立 opus 原始碼的 Makefile 編譯配置檔案,使用如下命令:

./configure --host=arm-linux-androideabi

5. 編譯 opus 原始碼並生成庫檔案,使用如下命令:

make

注意,make 命令將自動編譯原始碼並生成庫檔案(靜態庫及動態庫),庫檔案位於 opus 原始碼所在目錄中的某個子目錄內,可能該子目錄名字以“.”開頭,所以可以用 ls -a 命令來檢視一下。因為這裡我們編譯的是 for android 的版本,所以我們不要再執行 make install 了。