交叉编译 · 百科
简单地说,就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。

外文名称:Cross compiling 

操作系统:Operating System 

相关推荐
什么是交叉编译?为何要有交叉编译-电子发烧友网
即严格意义上来说,交叉编译器,只是指的是交叉编译版本的gcc。但是实际上为了叫法上的方便,我们常说的...
图书知识聚合
在7本书中找到答案
  • 《Android底层开发实战》
    章节8.5.2 测试环境的建立
    交叉编译,就是在一个平台上生成另一个平台上的可执行代码。平台包含了两个概念:一是体系结构(Architecture),二是操作系统(Operating System)。一般来说,在同一个体系结构下可以运行不同的操作系统,且同一个操作系统也可以在不同的体系结构上运行。通常目标平台的存储和运算能力是有限的,所以进行编译就会显得很困难。再加上编译工具链(compilation tool-chain)需要很大的存储空间和很强的CPU运算能力,所以在ARM平台本机编译十分困难。交叉工具链应运而生,通过交叉编译工具链,可以达到在CPU能力够强、存储空间足够大的主机平台上(比如在PC机器上)编译出针对其他平台的可执行程序的目的。Google公司提供了用于Android的交叉编译工具链。在源码的prebuilt/linux-x86/toolchain/文件夹中有不同版本的交叉编译链。为此,需要先将Toolchain的路径添加到环境变量中去。命令如下:$ export PATH=(2)编译X-loaderX-loader在CPU下主要完成了常规的ARM内核的初始化,在board下的omapebm下完成了对总线、时钟的初始化。X-loader还完成了OneNand的相应初始化,并且把Uboot从NAND架构下复制到BuffrtRam下,再复制到SDRAM中。X-loader还支持从SD、MMC下引导Uboot,它在CPU下
    周庆国
    机械工业出版社
  • 《嵌入式系统软硬件协同设计实战指南:基于Xilinx ZYNQ(第2版)》
    章节4.2 软件开发工具链
    交叉编译指的是在一个平台上编译出可在另一个平台上运行的可执行代码,这个平台包含两个概念:体系结构(Architecture)和操作系统(Operating System)。这是因为嵌入式系统的资源往往都是有限的,处理能力与存储空间通常都不富余,因此不可能将开发工具整体安装在嵌入式设备中。所以一般的做法是在主机端(一般是 Intel x86 体系结构)安装交叉编译器,以此编译出能够在目标平台运行的代码,当然这个可执行文件在主机(x86 体系结构)上是不能运行的。交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由 binutils、gcc 和 glibc 三个部分组成。有时出于减小 libc 库大小的考虑,也可以使用其他 C 库代替 glibc。在完整的交叉编译工具链中通常还会包含调试器,如 gdb。以往我们使用 Xilinx 开发套件中的 SDK 开发针对 MicroBlaze 的应用。方法是利用 C 代码编译出 elf 文件,然后下载到 FPGA 中,MicroBlaze 核就可以执行该文件了。其实这就是所谓的交叉编译,我们在 x86 的主机上编译出了可以在 MicroBlaze 核上运行的可执行文件。因此在 Zy
    陆佳华,潘祖龙,彭竞宇
    北京华章图文信息有限公司
  • 《嵌入式系统软硬件协同设计实战指南:基于XilinxZynq》
    章节4.2.2 交叉编译工具链
    交叉编译指的是在一个平台上编译出可在另一个平台上的运行的可执行代码,这个平台包含两个概念:体系结构(Architecture)、操作系统(Operating System)。这是因为嵌入式系统往往资源都是有限的,处理能力与存储空间通常都不富余,因此我们不可能将开发工具整个安装在嵌入式设备中。所以一般的做法是在主机端(一般是 Intel x86 体系结构)安装交叉编译器,以此编译出能够在目标平台运行的代码,当然这个可执行文件在主机(x86 体系结构)上是不能运行的。交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由 binutils、gcc 和 glibc 三个部分组成。有时出于减小 libc 库大小的考虑,也可以用别的 C 库来代替 glibc。在完整的交叉编译工具链中通常还会包含调试器,如 gdb。以往我们使用 Xilinx 开发套件中的 SDK 开发针对 MicroBlaze 的应用。方法是利用 C 语言代码编译出 elf 文件,然后下载到 FPGA 中,MicroBlaze 核就可以执行该文件了。其实这就是所谓的交叉编译,我们在 x86 的主机上编译出了可以在 MicroBlaze 核上运行的可执行文件。因此在
    陆佳华,江舟,马岷
    北京华章图文信息有限公司
  • 《嵌入式 Linux 软硬件开发详解——基于 S5PV210 处理器》
    章节4.1 基本概念
    交叉编译就是在一个平台上生成另一个平台上的可执行代码。平台有两层含义:处理器的体系结构和所运行的操作系统。对于我们而言,即在 Windows 操作系统平台上面安装 VMWare,在 VMWare 中安装桌面 PC 版本的 Linux,然后在 Linux 中、X86 硬件平台架构上面,编译运行于 ARM 架构(S5PV210 硬件平台)的应用程序,ARM 开发板上面的操作系统是嵌入式 Linux。2.宿主机与目标机宿主机(Host):编辑和编译程序的平台,一般是基于 X86 的 PC 机,通常也称为主机。通常我们在 Windows 平台下使用各种编辑器编写 Linux 代码,然后在 Linux 平台下进行编译。此时的宿主机即为 VMware 中的 Linux 平台。目标机(Target):开发系统,通常都是非 X86 平台。主机编译得到的可执行代码在目标机上运行。对于我们来说就是基于 ARM 架构的 Smart210 开发板。3.调试模型嵌入式 Linux 的开发平台示意图如图 4-1 所示。图 4-1 开发平台示意图宿主机方面:在宿主机 Windows 操作系统中安装 VMware
    刘龙,申华,张云翠
    人民邮电出版社有限公司
  • 《嵌入式技术与智能终端软件开发实用教程》
    章节6.1 交叉编译简介
    交叉编译与本地编译相对应,是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序。一种最常见的例子就是,在进行嵌入式开发时手上有个嵌入式开发板,CPU 是 ARM 体系结构的,然后在 x86 的平台下开发,如 Ubuntu 的 Linux,或者 Windows 平台,然后就需要在 x86 的平台上,用交叉编译器去编译写好的程序源代码,最后把编译生成的可执行程序(目标文件)放到目标平台(ARM CPU)上运行。ARM 上可以运行操作系统,所以完全可以将 ARM 当作计算机来使用,理论上也可以在 ARM 上使用本地的编译器来编译程序。但是,在项目建立初期,目标平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。所以,总结如下几点原因,放弃本地编译而选择交叉编译。(1)目标平台的运行速度往往比 PC 平台慢得多,许多专用的嵌入式硬件被设计为低成本和低功耗,没有太高的性能。(2)整个编译过程是非常消耗资源的,目标平台往往没有足够的内存或磁盘空间。(3)即使目标平台资源很充足,可以本地编译,但是第一个在目标平台上运行的本地编译器总需要通过交叉编译获得。(4)一个完整的 Linux 编译环境需要很多依
    温武,缪文南
    电子工业出版社
  • 《嵌入式 Linux C 语言应用开发教程(移动学习版 第 2 版)》
    章节1.3.2 嵌入式软件开发概述
    嵌入式软件开发采用的编译为交叉编译。 所谓交叉编译,就是在一个平台上生成可以在另一个平台上执行的代码。 编译最主要的工作是将程序转化成运行该程序的 CPU 所能识别的机器代码,由于不同的体系结构有不同的指令系统,因此,不同的 CPU 需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同 CPU 的对应可执行二进制文件。 要注意的是,编译器本身也是程序,也要在与之对应的某一个 CPU 平台上运行。 嵌入式系统交叉编译环境如图 1.6 所示。 这里一般将进行交叉编译的主机称为宿主机,也就是普通的通用计算机,而将程序实际的运行环境称为目标机,也就是嵌入式系统环境。 由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。 由于编译的过程包括编译、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉编译、交叉链接等过程,通常 ARM 的交叉编译器为 arm-elf-gcc、arm-linux-gcc 等,交叉链接器为 arm-elf-ld、arm-linux-ld 等。
    高明旭,华清远见嵌入式学院,刘洪涛,刘宗鑫,苗德行
    人民邮电出版社有限公司
  • 《Linux内核精髓:精通Linux内核必会的75个绝技》
    章节交叉编译内核
    交叉编译是指针对与正在执行编译的平台不同的其他平台生成二进制数据。 例如,在 x86_64 环境下生成针对 ARM 的二进制数据的情形。 这种编译器又称为“交叉编译器”。 只要拥有交叉编译器,对 Linux 内核进行交叉编译就变得非常简单。 这时还需要为 make 赋予两个变量,如表 1-10 所示。 举一个使用交叉编译器 armv5tel-linux-gcc 来交叉编译 ARM 内核的例子。 在这种情况下,make 命令变成如下所示的内容。 ARM 内核的二进制映像较多使用的是 uImage 格式。 第一行创建这个格式的二进制映像,第二行创建模块。 $make ARCH=arm CROSS_COMPILE=armv5tel-linux-uImage $make ARCH=arm CROSS_COMPILE=armv5tel-linux-modules 创建的内核二进制映像作为源码树内的 arch/arm/boot/uImage 文件。 创建的内核和模块必须转移到对象机器上。 如果在对象机器上可以使用源码包管理系统,则最简单的方法就是生成源码包并在对象机器上安装。 然而,如果不能使用源码包管理系统,虽然内核映像转移起来很简单,但是模块就有一些问题。
    池田宗广,大岩尚宏,岛本裕志,竹部晶雄,平松雅巳
    北京华章图文信息有限公司
交叉编译的相关视频
一看就会
01:05
学益得智能硬件
什么是交叉编译
06:40
Bernice坚果丁
嵌入式初学者都该明白:编译、链接和交叉链接都是什么
交叉编译详解 一 概念篇_p_fly的博客-CSDN博客_交叉编译
阅读:4w+
本文总结了什么是交叉编译链,并介绍了交叉编译链的各个组成部分
交叉编译环境_360百科
交叉编译环境,交叉编译(cross-compilation)是指,在某个主机平台上(比如PC上)用交叉编译器编译出可在其他...
交叉编译:libcurl/openssl支持SSL功能
交叉编译:libcurl/openssl支持SSL功能 1.主机编译https客户端 准备主机开发环境 sudo apt-get install ...
什么是交叉编译
交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓 平台,实际...
下一页 网络不给力?刷新试试