《2022年2022年交叉编译环境的搭建简介 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年交叉编译环境的搭建简介 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、交叉编译环境的搭建简介在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码, 我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里 需 要 注 意 的 是 所 谓 平 台 , 实 际 上 包 含 两 个 概 念 : 体 系 结 构(Architecture) 、操作系统( Operating System) 。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和 Linux for x86操作系统的统
2、称;而x86 WinNT平台实际上是 Intel x86体系结构和 Windows NT for x86操作系统的简称。有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C 代码)编译( compile )成计算机可以识别和执行的二进制代码。 比如, 我们在 Windows平台上,可
3、使用 Visual C+开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的 Windows工具开发针对Windows本身的可执行程序, 这种编译过程称为 native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时, 运行程序的目标平台通常具有有限的存储空间和名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是16 到32
4、MB , 而 CPU 的主频大概在100MHz到 500MHz之间。这种情况下, 在 ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在 CPU 能力很强、存储控件足够的主机平台上 (比如 PC上)编译出针对其他平台的可执行程序。1. 交叉编译的基础知识在做实际工作之前, 我想我们应该先掌握一些关于交叉编译的基本知识,其实说白了也就是理解一些我们经常会碰到的英文单词;host 主机平台。target 目的平台。pe
5、rfix 交叉编译器的安装位置。xxx-xxxx-xxxxx 平台描述。我们在主机平台上开发程序,并在这个平台上运行交叉编译器,编译我们的程序; 而由交叉编译器生成的程序将在目的平台上运行。这里值得说明得是平台描述, 象 arm-linux、 i386-pc-linux2.4.3这样的字符串我们经常会看到,其实它是用来描述平台的,它有完整格式、缩减格式 和 别 名 之 分 。 完 整 格 式 是 : CPU-制 造 厂 商 - 操 作 系 统 , 如sparc-sun-sunos4.1.4,说明平台所使用的CPU 是 sparc ,制造厂商是名师资料总结 - - -精品资料欢迎下载 - - -
6、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - sun,上面运行的操作系统是SunOS ,版本是 4.1.4 。当然,我们都不愿记这么长的东西, 因此可以使用短格式, 短格式中有选择地去处了制造厂 商 、 软 件 版 本 等 信 息 , 因 此 我 们 同 样 可 以 用sparc-sunos或sparc-sunos-sunos4来描述这个平台。 如果觉得这个还是太麻烦,那就可以使用别名, sun4m 就可以很简单地描述这个平台。需要注意的是,并不是所有的平台都有别名,也不是所有
7、的短格式都可以正确地描述平台。2. 我需要准备些什么先得准备好主机平台,建议采用x86 Linux 做主机平台, 因为这样需要的设置工作最少。 当然你也可以使用你所喜欢的平台或你所能得到的平台,其中的区别在于你可能必须做更多的设置工作,当然也有这种可能,就是你所选择的主机平台根本不能生成适用于目标平台的正确的交叉编译器。对于交叉编译器, 可以自己生成, 也可以从网上下载。 区别在于从网上下载非常简单方便,但也许你找不到适合你所选择的平台的。而自己生成交叉编译器, 有时会遇到很多挫折, 但这的确是个有趣的值得怀念的经历。如果你想自己生成交叉编译器,那你必须先准备下面这些东西1、磁盘空间。至少要5
8、00M左右的空间,如果想一气呵成的话,那就要名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 900M-1G的空间。2、 各 种 源 代 码 。 你 至 少 要 准 备binutils-2.11.2、 gcc-2.95.3、linux-2.4.6、newlib-1.8.2或 glibc-2.2.2的源代码。如果你所使用的主机平台不是运行的linux ,那你还必须注意以下这些问题1、GNU bash必须是默认 shell ,所以你也
9、许得把 /bin/sh改成 bash。2、你要确认已经安装了GNU bison,因为这些软经同样使用了bison扩展。3、GNU gmake最好是系统默认得make ,因为这些软件都使用了gmake扩展,如果不是,在需要make时,记得使用gmake 。4、如果你想生成交叉glibc ,则 GNU gsed 必须是默认 sed,因为 glibc会用到 gsed 的扩展。5、 如果你想生成交叉glibc , 那还必须准备glibc-linuxthreads-2.2.2的源代码。6、确认正确的路径搜索顺序,最好让GNU 软件首先被执行。3. 怎样生成交叉编译器要进行交叉编译,我们需要在主机平台上安
10、装对应的交叉编译工具链(cross compilation tool chain) ,然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 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 的可执行代码。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -