交叉编译(cross compile)的一些介绍

来源:互联网 发布:linux下jdk怎么卸载 编辑:程序博客网 时间:2024/05/21 22:44

1、交叉编译的含义

在学习嵌入式开发中,必然会遇到:交叉编译(cross compile),那么交叉编译是什么呢?即:在一种平台上进行程序的编译,而这个编译出来的程序放到另一个平台上运行。因此,编译的环境运行的环境是不一样的,交叉的,即所谓的cross。比如,我有一个ARM9的开发板,在进行开发时,需要在我的x86的PC上使用交叉编译器来编译我写好的程序代码,而编译所程序是放到ARM的CPU上运行的。
与交叉编译相对性的,叫本地编译。即:在当前的平台下编译出来的程序,放在当前平台下运行。如:x86的CPU下,编译出来的程序(或库文件),就可以直接在x86的CPU,当前的电脑上运行。

2、交叉工具链

工具(tool)的目的:是为了生成(可运行的)程序或者库文件。为了达成这个目标,在内部的执行过程和逻辑就包含了:
1.编译
编译的输入(对象)是:程序代码
编译输出(目标)是:目标文件
编译所需要的工具是:编译器
编译器,常见的编译器,即gcc
2.链接
链接的输入(对象)是:(程序运行时所依赖的,或者某个库所依赖的另外一个)库(文件)
链接的输出(目标)是:程序的可执行文件,或者是可以被别人调用的完整的库文件
链接所需要的工具是:链接器
链接器,即ld。
……
所以,将程序编译成可执行文件,要依赖到很多工具,最核心的是编译器gcc,链接器ld。

链(chain):前面所提到的工具串在一起,有逻辑的,进行有序的工作。
即:先编译,再链接,再进行后期其他处理等等。这一系列是有先后顺序的。

将两者与前面提到的“交叉”相结合,就是:交叉工具链。交叉工具链,也包含了很多对应的工具,交叉编译版本的gcc,ld。其中最主要的就是用于编译的gcc,所以常把交叉工具链简称为交叉编译器。

0 0
原创粉丝点击