面向ARM Cortex-A架构的交叉编译环境搭建

 面向ARM Cortex-A架构的交叉编译环境搭建

基于ARM架构的CPU应用日趋广泛,小到各种传感器、控制器里的Cortex-M系列MCU,大到智能手机、平板里广泛应用的Cortex-A系列CPU,都闪烁着ARM公司的魅影。

有处理器就要有相应的应用程序及操作系统,这就涉及到了程序编译的问题。对于这类程序的编译,我们一般是在PC上用交叉编译工具链编译,然后再下载到目标设备上运行。为什么如此这般折腾,而不直接在目标设备上直接编译呢?我们知道,嵌入式系统都是为处理特定任务而裁剪定制的,其运算能力及存储能力都不足以支撑完整的编译工具链运行,即使是现在随着Cortex-A系列CUP的性能提升,足以支撑完整的linux系统和编译工具链运行,但其最快的运行速度与intel的x86处理器来说还相距甚远,所以我们一般都用基于x86系统完善的编程环境进行编程及交叉编译和debug,将编译好的二进制程序下载到目标设备运行。

对于面向Cortex-A架构的交叉编译工具链,我个人比较中意Linaro社区的工具链,其对性能的优化做的是最好的,毕竟有ARM公司的加持嘛。大家可到官网进行下载:

http://www.linaro.org/downloads/

面向ARM Cortex-A架构的交叉编译环境搭建

这里我将压缩包下载到了桌面,然后进行解压。

使用tar命令 并指定 -C 选项 将压缩包解压到指定路径

tar xvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz -C ~/toolchain/

面向ARM Cortex-A架构的交叉编译环境搭建

面向ARM Cortex-A架构的交叉编译环境搭建

通过ls命令,我们可以看到在~/toolchain/路径下已经生成了新的目录“gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux”

我们需要将该目录下的内容添加到环境变量中,以便后续的编译过程调用。面向ARM Cortex-A架构的交叉编译环境搭建

vim ~/.bashrc

将路径信息添加到PATH环境变量中, 如果你不会用vim 则使用:

gedit ~/.bashrc

调用Ubuntu自带的文本编辑器进行编辑

 

export LINARO_TOOLCHAIN=~/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux
export PATH=$LINARO_TOOLCHAIN/bin:$PATH

面向ARM Cortex-A架构的交叉编译环境搭建

保存并退出

接着使刚才修改的配置信息生效,可注销重新登录或者使用命令

source ~/.bashrc

接着在终端里输入“arm-linux-”按tab键看是否会自动进行补长,会自动进行补长则说明环境变量配置成功。

接着输入“arm-linux-gnueabihf-gcc -v”验证一下交叉编译工具链信息,进一步验证交叉编译环境是否配置成功。

如果你是64位的Ubuntu,会提示“xxx not found”.这是因为缺少相应的32位库造成的。我们可用apt命令进行安装。

sudo apt-get install ia32-libs

再次运行”arm-linux-gnueabihf-gcc -v“ ,一切OK.

如果你的ubuntu为64位的14.04及后续版本 请看这里:

https://www.mr-wu.cn/how-to-install-ia32-libs-in-ubuntu-14/

面向ARM Cortex-A架构的交叉编译环境搭建

吴川斌

吴川斌

1 Comment

  • 赞一个

Leave a Reply