在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。
有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译(compile)成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储控件足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。
要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下:
1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。
原文来自于:http://www.cnblogs.com/chuncn/archive/2009/02/10/1387158.html
分享到:
相关推荐
### 交叉编译器的安装知识点详解 #### 一、交叉编译器概念与作用 交叉编译器是一种特殊的编译工具,它能够在一种类型的计算机(宿主机)上编译出另一种类型计算机(目标机)可执行的代码。在嵌入式系统开发中,...
交叉编译器是软件开发中的一个重要工具,尤其在嵌入式系统开发中,因为目标硬件平台可能不具备直接编译代码的能力。"交叉编译器实际目录"这一标题提示我们要讨论的是如何在Linux环境下查找和验证交叉编译器的安装...
### 交叉编译器的使用 #### 一、交叉编译器概述 交叉编译器是一种特殊的编译器,它能够在一种类型的计算机上为另一种类型的计算机编译代码。这种技术在嵌入式系统开发中非常常见,因为目标平台通常资源有限(如...
ARM-Linux-GCC-4.5.1是友善之臂提供的一个特定版本的交叉编译器,主要用于在非ARM架构的主机上构建针对ARM架构的Linux应用程序。交叉编译器是一种特殊的编译器,能够在一种处理器平台上生成适用于另一种处理器平台的...
在嵌入式系统开发领域,尤其是在针对ARM架构的设备上,使用交叉编译器是常见的实践。ARMV7-32是指基于ARM架构的V7版本,它支持32位运算,广泛应用于智能手机、嵌入式设备和轻量级服务器等。`arm-linux-gcc`交叉...
构建 GCC 交叉编译器 在本资源中,我们将详解如何在 Linux 构建系统中构建一个交叉工具链,能够运行在 Windows 主机系统中,但却为 Linux 目标系统生成可执行文件 ELF。本教程将指导您完成加拿大交叉工具链的构建...
Linux下的ESP32交叉编译器是专门为在Linux操作系统上为ESP32微控制器进行程序开发而设计的工具。ESP32是一款强大的、低功耗的SoC(系统级芯片),集成了Wi-Fi和蓝牙功能,广泛应用于物联网(IoT)设备和智能硬件。交叉...
### 海思交叉编译器-软件定义摄像机编译环境 #### 一、海思交叉编译器概述 在嵌入式系统开发过程中,交叉编译器是一种必不可少的工具。它能够在一种平台上编译出另一种平台可执行的代码,这对于资源受限的目标设备...
在Linaro官网下载的交叉编译器。可以适用ARm-A53 64位的交叉编译器
### ARM平台交叉编译器的制作详解 在深入探讨如何构建ARM平台的交叉编译器之前,我们首先需要理解什么是交叉编译以及为什么在ARM平台上需要进行交叉编译。交叉编译是指在一个平台上编译代码,使其能在另一个不同的...
ARM-Linux-GCC-4.6.4-arm-x86_64交叉编译器是为在基于x86架构的主机上构建针对ARM处理器的Linux应用程序而设计的工具链。这个工具链包括了编译器、链接器、库和其他必要的组件,使得开发者可以在不依赖目标硬件的...
在IT领域,构建嵌入式系统时经常需要在非目标平台(如Windows)上编译针对其他架构(如MIPS)的代码,这时就需要用到交叉编译器。本篇文章将详细探讨“Windows下的MIPS GCC交叉编译器”,以及如何在MinGW/MSYS环境下...
在x86的机器下跑alpha的程序,可以用该交叉编译器,把程序交叉编译成alpha的,我是在gem5的fullsystem下跑程序,需要用到交叉编译
arm-linux-gcc交叉编译器,版本3.4.1,用于Linux下的ARM开发。 安装方法: 1. tar zxvf arm-linux-gcc-3.4.1.tgz -C/ 2. 编辑 ~/.bashrc ,加入 export PATH=$PATH:/usr/local/arm/3.4.1/bin 3. 验证安装 [root@...
《Xilinx ARM 201402:Windows下的ZYNQ Linux与裸机运行交叉编译器详解》 在嵌入式系统开发领域,Xilinx的ZYNQ系列SoC(System on Chip)因其高性能和灵活性而备受青睐。ZYNQ SoC集成了ARM Cortex-A9双核处理器,...
ARM交叉编译器:arm-sgmstar-gnueabihf-9.1.0-202007-gcc 免安装压缩包:SSC357_arm-sgmstar-gnueabihf-9.1.0-202007.tar.gz
三星S5PV210 arm平台的交叉编译器。base gcc 5.2.0 cortexA8.neon
ARM交叉编译器是针对基于ARM架构的处理器设计的一款特殊编译工具,它允许开发者在非ARM架构(如x86或AMD64)的主机系统上构建适用于ARM设备的应用程序。这种编译器能够将源代码转换为ARM处理器可执行的机器码,极大...