在Linux下交叉編譯Android工具鏈
搭建交叉編譯環境
- 下載Android NDK
http://developer.android.com/sdk/ndk/index.html
我這邊選擇下載Linux 64-bit(x86),android-ndk-r9d-linux-x86_64.tar.bz2。
- 解壓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-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 了。