搭建交叉编译环境
- 下载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版本是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 了。