本页使用了标题或全文手工转换

交叉編譯器

维基百科,自由的百科全书
跳转至: 导航搜索

交叉编译器英语:Cross compiler)是指一个在某个系统平台下可以产生另一个系统平台可执行文件编译器。交叉编译器在目标系统平台(开发出来的应用程序序所运行的平台)难以或不容易编译时非常有用。

交叉编译器的存在对于从一个开发主机为多个平台编译代码是非常有必要的。直接在平台上编译有时行不通,例如在一个embedded systemmicrocontroller ,因为它们没有操作系统,所以直接编译行不通。

交叉编译器和代码至源代码编译器不同,交叉编译器用于二进制代码的跨平台软件开发,而源到源编译器是将某种编程语言的程序源代码作为输入,生成以另一种编程语言构成的等效源代码的编译器,但两者都是编程工具

使用[编辑]

交叉编译器的基本用法就是将构建环境与目标环境分开。常在下面几种情况中使用:

  • 嵌入式电脑(Embedded computers) ;这种设备的资源有限,举例来说:微波炉有一个非常小的计算机来读取其触摸板和门传感器,并向数字显示器和扬声器提供输出,以控制用于烹饪食物,这台计算机不足以运行编译器,文件系统或开发环境,因为debugging和testing需要更多的嵌入式系统资源,所以在目标机上编译变得更不可能,但交叉编译可能涉及较少且不易出错
  • 编译多个目标库;举个例子,一个公司可能希望支持不同版本的操作系统或者支持不同的操作系统,有了交叉编译,便可以为每个目标设置一个编译环境进行编译。
  • 在服务器上编译; 类似于在多个机器进行编译,一个复杂的编译可能会涉及到许多的编译操作,可以将这些编译操作放到空闲的机器上执行,无论其底层硬件或其运行的操作系统版本如何。
  • 引导一个新平台(Bootstrapping to a new platform);在为新平台开发软件时,或者未来平台的仿真器,则使用交叉编译器来编译必要的工具,如操作系统和本机编译器

虚拟机来(比如JVM)也借鉴了当初开发交叉编译器的理由,虚拟机可以用同一份输出在多个目标系统上运行,但是虚拟机运行起来很慢,而且编译后的代码必须运行在虚拟机上

参见[编辑]