android底层开发之交叉编译环境

X86架构的CPU采用的是复杂指令集(Complex Instruction Set Computer,CICS),而ARM架构的CPU使用的是精简指令集(Reduced Instruction Set Computer,RISC)。由于这两种架构的CPU使用了不同的指令集,因此在X86架构上开发可运行在ARM架构上的程序就必须要使用交叉编译器。通常交叉编译器和相关工具包含的了很多可执行文件以及大量的共享库及头文件等资源。这些资源的集合称为交叉编译环境。

Android是基于Linux内核的系统,可以说Android是一种运行在基于ARM架构设备上的Linux操作系统。Android驱动其实就是Linux驱动,不过在x86的Ubuntu系统下需要交叉编译器将Linux驱动编译成了ARM架构的,然后便可将驱动安装在基于ARM架构的Android模拟器、Android手机(需要root)或平板上。使用传统的GCC也可以编译成X86架构的驱动(并不需要修改代码),这样编译出来的驱动可直接安装在Ubuntu Linux上。

 

1、可到https://sourcery.mentor.com/GNUToolchain/release2800下载CodeSourcery,Linux版本的安装文件是bin格式,需要使用命令sh package.bin,然后进行相关配置。

 

2、将CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin加到环境变量中

 

3、测试

下面编写一个简单的C程序来测试一下这个交叉编译环境。

//  test.c
#include 
int main()
{
    printf("arm gcc test\n");
    return 0;
}

输入下面的命令编译test.c文件(需要加-static选项)。

# arm-none-linux-gnueabi-gcc -static -o test test.c

 

输入下面的命令将test文件上传到任意的Android设备的/data/local目录中(不需root权限)。

# adb push test /data/local

 

使用adb shell命令进入Android设备的控制台,cd /data/local进入/data/local目录,执行命令:

# ./test

 

你可能感兴趣的:(Android,Framework,内核与驱动)