snifer

【原创】嵌入式系统交叉编译及环境建立之我见

0
阅读(3233)

最近在尝试录播一些资料,下午跟一个朋友在网上讨论了嵌入式系统的交叉编译及环境建立的一些问题,我现在就谈谈这方面的内容,与大家分享。

要理解这个问题,我们首先要有GCC 交叉编译器的概念,对这个工具应该熟悉。

这个编译器主要包括如下三个部分:


1 GNU Binutils
GNU Binutils 的主要工具有两个,一个是连接程序ld,另外一个是汇编程序as。其主要目的是为GNU 系统,提供汇编和连接工具。
2 GNU GCC
GNU GCC 就是上面提到的GCC,GCC 主要是为GNU 系统提供C 编译器。现在支持多种语言,这其中包括C/C++、Fortran、Java、Objective-C、甚至还有Ada。
3 GNU GLibc

用于定义系统调用和其它一些基本的函数调用。

GCC交叉编译器的生成的过程如下:


第1步,取得Binutils、GCC、Glibc 源码。
第2步,配置并编译Binutils 取得我们所需要的汇编和连接程序。
第3步,配置并编译GCC 源码生成GCC 编译器。一般是C 编译器首先生成,然后以这个为基础在结合下一步生成的Glibc 的C 函数库,再编译生成其它编译器。
第4步,配置Glibc 并编译生成Glibc 的C 函数库。
第5步,再次配置和编译GCC 源码,生成其它语言的编译器,如C++编译器等。

工具链代码结构如下图所示:

交叉编译流程是这样的:


一般来说要快速建立开发环境,需进行如下的操作:

1 下载 arm-elf-tools-.sh

2 执行:sh arm-elf-tools- . sh

3 配置环境变量

环境变量主要包括:



vetc/profile文件中的PATH定义了找存放命令的路径,若把交叉编译器的路径在PATH中进行定义,则执行命令时就可以找到对应的命令。


一般的建立过程:

将usr/local/arm/2.95.3/bin路径添加到etc/profile文件中,并用#将原来的3.4.4的屏蔽(如果有的话),然后在etc路径下执行source profile。然后arm-linux-gcc –v,如果显示是2.9.53。则说明环境配置成功。v更改环境变量有几种方法,其中之一是更改etc/profile文件(开机启动时配置)中的PATH,将相冲突的屏蔽掉。

另一种方法是重新定义PATH,然后用export导出(export命令可以修改,但重启之后?)――:可编辑/etc/bashrc文件,在最后增加路径 export PATH=/usr/local/arm/2.95.3/bin:|$PATH,则以后编译内核或其它程序均可用arm-linux- 来制定交叉编译器。

这个理解了,相信会对嵌入式系统的整体结构有一个完整的概念了,是不是很有试一试的冲动呢?行动吧!




Baidu
map