在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 了。

你可能感兴趣的:(在Linux下交叉编译Android工具链)