第18章__建立交叉编译工具链.ppt_第1页
第18章__建立交叉编译工具链.ppt_第2页
第18章__建立交叉编译工具链.ppt_第3页
第18章__建立交叉编译工具链.ppt_第4页
第18章__建立交叉编译工具链.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第18章创建交叉编译工具链,要想做好工作,首先要利用工具。嵌入式Linux开发不可缺少的是开发工具,其中最基本的是编译工具。与传统的编译方法不同,嵌入式系统开发需要在其他计算机上编译开发板所需的程序,使用的编译工具与传统的编译工具不同。本章介绍如何构建开发嵌入式Linux所需的交叉编译工具链。主要内容包括:交叉编译工具链手动构建交叉编译工具链构建脚本交叉编译工具链交叉编译工具链构建常见问题解答,18.1交叉编译是什么?交叉编译随嵌入式系统的开发而提供。传统的程序编译方法,生成的程序直接在本地执行,称为本地编译。嵌入式系统使用多种交叉编译方法,本地编译的程序不在本地运行,必须通过特定方法(如刻录、下载等)安装并运行到目标系统上。这种编译执行方法比较麻烦,受实际条件限制。大多数嵌入式系统目标主板系统资源都是有限的,无论是存储空间还是CPU处理能力,都很难满足编译器的要求。而且很多目标主板没有操作系统,需要通过其他系统编译操作系统和应用程序。18.2所需的内容,交叉编译工具链构建可以在多种平台上完成,本书建议在Linux系统上使用x86体系结构的PC。这个选择不是强制性的。因为x86体系结构使用最广泛。同时,使用Linux系统可以避免许多开发环境的设置。设置交叉编译工具链需要以下准备:磁盘空间:源代码:命令行:其他工具:18.3手动构建工具链,构建交叉编译器是首先确定目标平台。在GNU系统中,每个目标平台都具有明确的格式和名称,以标识工具的正确版本。由于在编译跨工具链的过程中存在两组编译器环境,因此平台名称和格式必须明确,生成工具才能避免出现错误。运行Gcc时,gcc在路径中查找包含指定目标规范的应用程序路径。GNU的目标规格格式为CPU-PLATFORM-OS。例如,x86目标系统的名称为i686-pc-linux-gnu,ARM目标平台的名称为arm-linux-gnu。构建交叉工具链通常有三种方法:1 .逐步手动编译2。通过脚本编译3 .直接交叉编译工具链导入、18.3.1准备工作-导入源代码、手动编译交叉编译工具链所需的库和源代码,必须首先下载以下源代码:Linux内核代码glibc库工具内核线程程序包编译器、18.3.2入门-构建工作环境、交叉编译工具链构建工作环境构建工作环境构建工作目录(包括构建工作目录和环境变量)是在交叉编译工具链构建过程中使用的目录,工作目录没有特殊要求,可以根据自己的喜好编写。本书假定当前用户的用户目录中已将armtools设置为工作目录。要构建Mkdirarmtools,18.3.3 Linux内核头文件,交叉编译器必须通过内核头文件获取有关目标平台支持的系统函数调用的信息。因此,必须复制内核的头文件。但是,不能直接复制内核头文件,必须简单配置内核,以便内核脚本生成目标平台的头文件。请注意,Linux内核版本和编译器版本更依赖,一个版本的编译器不能保证编译所有内核版本。(1)从$PRJROOT/kernel目录解压缩内核源代码;(2)转到内核代码目录,然后配置目标平台的头文件。(3)与创建目标平台头文件相关的系统类型条目3)Linux内核配置的顶层接口。使用光标键移动到此选项时,回车将进入配置界面。(4)选择完目标平台后,立即返回回车,返回系统类型配置界面。(5)内核配置完成后,请确保生成正确的内核头文件include/linux/version.h和编译glibc所需的include/linux/autoconf.h。(6)最后一步是将生成的内核头文件复制到交叉编译工具链目录。18.3.4编译安装binutils,binutils是交叉编译工具链的重要工具包,GNU提供。Binutils包含连接器、汇编程序和用于目标文件和文件的工具。Binutils工具包主要用于维护二进制代码。1.binutils toolkit内容2。编译安装binutils工具包,18.3.5创建arm-linux-gcc交叉编译器,gcc编译器不受glibc库支持。也就是说,此编译器只能用于编译不需要glibc库支持的程序,如内核、Bootloader等。创建此编译器是构建Glibc库,因为glibc库也需要使用此编译器。在某些文档中,此步骤称为gcc的第一次编译,它基于以后的编译过程。18.3.6编译和安装GNUglibc库,GNUglibc库是Linux系统程序的重要组成部分。如果用户在目标平台上开发应用程序,则必须编译glibc库。Glibc-2.3.2发行版建议先安装GNUmake3.79或更高版本的工具。GCC3.2或更高版本;GNUbinutils2.13或更高版本。必须编译安装了18.3.7 gcc的c、c编译器,初始编译的gcc没有glibc支持,必须编译glibc,然后重新编译gcc以支持glibc库。请注意,最初编译的gcc只能支持c语言程序编译,当前编译的gcc可以支持c和c语言。这种编译也称为第二种编译。18.3.8最终任务,到目前为止,已完成了分阶段构建交叉工具链的所有任务。最后,必须测试构建的工具链是否满足要求。使用18.4脚本创建工具链和手动创建交叉编译工具链不仅很麻烦,而且容易出错。为了简化工具链的构建过程并减少错误,Linux社区设计了一套用于编译工具链的脚本Crosstool。Crosstool脚本(构建交叉编译环境的足迹工具集)可以指定不同的参数来创建gcc编译器和glibc库的指定版本。此脚本也是开源项目,建议读者使用crosstools构建用于工作的交叉编译工具链。比18.5更容易的方法-要获得编译的交叉编译环境,需要在上述两部分中对如何构建交叉编译工具链进行手动操作。本部分介绍直接下载编译后的工具链的更简便方法。Linux社区可以使用多个版本的ARM平台交叉编译工具链。以下是三个不同版本编译器的下载地址:ARMLinux下载地址:FTP :/FTP . arm . Linux . org . uk/pub/arm Linux/tool chain/提供的版本:arm-Linux-gcc 2 . 95 . 3版

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论