`
cjc
  • 浏览: 681028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

什么是交叉编译

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(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的可执行代码。

分享到:
评论

相关推荐

    用kdevelop交叉编译

    首先,让我们理解什么是交叉编译。交叉编译是指在一个平台上生成可在另一平台上运行的代码。在这个场景中,我们通常在x86或x64架构的个人计算机上编写和编译代码,而目标平台是基于ARM架构的Linux设备。KDevelop通过...

    crosstool交叉编译制作工具源码包

    首先,让我们理解什么是交叉编译。交叉编译是指在一个平台上编译出可以在另一种不同架构的系统上运行的代码。在Linux环境下,这通常意味着在x86或x64主机上构建针对ARM、MIPS等嵌入式处理器的软件。这需要一个特殊的...

    gdb-7.7交叉编译安装

    首先,让我们理解什么是交叉编译。交叉编译是指在一个平台上生成可以在另一个不同平台上运行的代码。对于ARM板来说,由于其处理器架构与我们的开发主机(通常是x86或x86_64架构)不同,因此我们需要在主机上编译出...

    飞腾交叉编译环境搭建之交叉编译工具链配置

    飞腾交叉编译环境搭建之交叉编译工具链配置 飞腾交叉编译环境搭建是指在不同的操作系统平台上,使用飞腾提供的交叉编译工具链来实现跨平台编译的过程。该过程需要配置交叉编译工具链,以便在不同的平台上实现编译。...

    rtorrent交叉编译笔记

    首先,让我们了解什么是交叉编译。交叉编译是指在一个系统(称为宿主机,host)上生成可在另一个系统(目标机,target)上运行的代码。在这个例子中,宿主机可能是基于x86或x86_64架构的Linux或Windows系统,而目标...

    交叉编译expect armv7 aarch64

    首先,我们需要理解什么是交叉编译。交叉编译是指在一个平台上(通常称为宿主机,如Intel x86架构的PC)构建为另一个不同架构的平台(目标平台,如armv7或aarch64)生成可执行文件的过程。这是因为目标平台可能没有...

    交叉编译环境完全通当我们开发嵌入式Linux软件时,一般都要经过交叉编译这一步。如果是开发PC机上的软件,我们只要用Linux本身提供的强大的编译器(如gcc)直接编译就可以了。而一般的嵌入式设备所用的CPU和PC机上的CPU有着不同的架构,这样就要求我们在PC机上编译出适用于嵌入式设备CPU架构的软件,这就是我们所说的交叉编译。下面我们用一个例子来详细说明交叉编译是如何工作的。

    #### 什么是交叉编译? 交叉编译是指在一个平台上编译代码,并生成可以在另一个平台上运行的目标文件的过程。这个概念之所以重要是因为不同的硬件平台通常需要不同的机器语言指令集,这意味着一个平台编译出来的二...

    CentOS7系统QT交叉编译工具

    首先,我们需要理解什么是交叉编译。交叉编译是在一种架构(如x86的CentOS7)上编译出另一种架构(如ARM)可执行程序的过程。在本案例中,我们的目标是让在CentOS7编译的QT程序能在ARM开发板上运行。 1. **安装基础...

    nfs交叉编译环境的构建和注意点 ppt

    1. **什么是交叉编译?** 它是指在一台主机(宿主机)上运行的编译器生成可以在目标机上运行的代码。在嵌入式开发中,由于目标系统的硬件和软件环境与宿主机不同,因此需要交叉编译工具链。 **二、通用计算机与...

    嵌入式开发的交叉编译环境搭建

    #### 二、什么是交叉编译? 交叉编译器是一种特殊的编译工具,它能够在宿主机上生成目标机可执行的代码。为了实现这一点,需要构建一个**交叉编译工具链(toolchain)**。例如,在x86架构下的Linux操作系统作为宿主机...

    构建嵌入式linux交叉编译环境

    #### 二、什么是交叉编译环境 交叉编译环境是指在一台机器(宿主机)上生成另一台机器(目标机)上可执行的代码的过程。这是因为目标板的资源有限,难以支持复杂的编译过程,因此需要借助宿主机的强大计算能力来...

    android4.2 交叉编译工具

    首先,让我们来了解一下什么是交叉编译。交叉编译是指在一个平台上生成另一个平台上的可执行代码。在这个案例中,我们可能在Linux环境下为Android设备编译代码。Android 4.2的工具链包含了所有必要的编译器、链接器...

    交叉编译后的zlib

    首先,让我们了解什么是交叉编译。交叉编译是指在一种环境下生成可以在另一种环境下运行的代码。对于ARM平台,我们通常在拥有更强大资源的x86架构主机上完成编译工作,然后生成适用于ARM处理器的二进制文件。这一...

    rk交叉编译工具 rk交叉编译工具rk交叉编译工具rk交叉编译工具rk交叉编译工具

    rk交叉编译工具

    libwebsockets的交叉编译

    libwebsockets 的交叉编译 libwebsockets 库是一个开源的 websocket 组件,源码是用 C 语言编写的,组件中是通过 cmake 脚本来生成 makefile 脚本,再通过 make 来编译出目标文件。为了在 ubuntu 平台下交叉编译出...

    交叉编译QT5.9(包含QWebEngine)

    ARM64下QT需要用到QWebEngine模块,网上很多资源交叉编译QT时,均默认跳过此步骤,没跳过此步骤的很多未能详细提供交叉编译webengine模块所依赖的库,导致此模块无法交叉编译通过,资源中包含了arm64下交叉编译的...

    交叉编译交叉编译交叉编译

    Linux交叉编译工具链的创建和使用 在本文中,我们将详细介绍如何创建Linux交叉编译工具链,及其在移植Linux系统中的应用。交叉编译工具链是将Linux移植到其他架构平台的关键组件,它允许开发者在一种架构上编译可在...

    arm-linux-gcc交叉编译工具2

    1. **什么是交叉编译**: 交叉编译是指在一个平台上编译出可以在另一个不同平台上运行的代码。在我们的场景中,就是使用x86架构的主机系统生成可以在ARM架构的目标系统上运行的二进制文件。 2. **arm-linux-gcc...

    aarch64-himix210-linux 交叉编译工具包

    首先,我们要理解什么是交叉编译。交叉编译是指在一个平台上编译出可以在另一个不同平台上运行的代码。在这种情况下,编译环境通常是在x86或x86_64架构的Ubuntu Linux系统上,而目标平台则是基于aarch64架构的HiMix...

    4-LINUX程序设计与交叉编译(4)-交叉编译.pdf

    首先,理解什么是交叉编译。交叉编译是指在一个系统(称为宿主机,Host)上使用特定的编译器工具链(例如arm-linux-gcc)生成另一个系统(称为目标机,Target)可执行代码的过程。这是因为目标机可能具有不同的...

Global site tag (gtag.js) - Google Analytics