嵌入式Linux系统开发教程 教学课件 作者 978 7 302 22520 1 第六章.pptVIP

嵌入式Linux系统开发教程 教学课件 作者 978 7 302 22520 1 第六章.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux经常使用的工具链软件:Binutils、Gcc、Glibc和Gdb。其主要特点如下: Binutils是二进制程序处理工具,包括连接器、汇编器等目标程序处理的工具; Gcc(GNU Compiler Collection)是编译器,不但能够支持C/C++语言的编译,而且能够支持FORTRAN JAVA ADA等编程语言。不过,一般不需要配置其他语言的选项,也可以避免编译其他语言功能而导致的错误。对于C/C++语言的完整支持,需要支持glibc库; Glibc是应用程序编程的函数库软件包,可以编译生成静态库和共享库,完整的GCC需要支持glibc; Gdb是调试工具,可以读取可执行程序中的符号表,对程序进行源码调试。 通常构建交叉工具链有三种方法: 方法一、分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。该方法相对比较困难,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用方法二或方法三构建交叉工具链; 方法二、通过Crosstool脚本工具来实现一次编译生成交叉编译工具链,该方法相对于方法一要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链; 方法三、直接通过网上下载已经制作好的交叉编译工具链。该方法的优点不用多说,当然是简单省事,但与此同时该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的没有灵活性,所以构建所用的库以及编译器的版本也许并不适合你要编译的程序,同时也许会在使用时出现许多莫名的错误,建议读者慎用此方法。 在制作工具开始前先要选好所需要的Binutils、Gcc、Glibc等组件相互匹配的版本。它们的版本匹配选择较为复杂,这些组件的维护与发行完全是各自独立的,不同的组件组合在一起时,并不能保证其正常工作,版本之间可能存在冲突。通常一开始使用每个套件最新出来的稳定版本,如果无法建立的话,再一次尝试换成旧的版本。 推荐使用的软件版本可参考下表。 分布构建交叉编译工具链制作一般分成六步,基本过程如下图 : 主要步骤为: 准备工作:下载好所需要的软件包、准备好内核头文件、组织好目录; 编译binutils:这个软件包的编译相对简单,一般容易实现; 编译辅助gcc编译器:对gcc进行简单配置后,编译gcc,使其不依赖glibc,只对c语言支持,为后面的glibc的编译做准备; 编译glibc库:在这一步,首先将解压的内核头文件进行配置。在上一步的编译过程中,已经生成了arm-linux-gcc这个工具,利用这个工具去编译glibc库; 重新编译完整的gcc:完整gcc的编译需要glibc库的支持,在第一步的时候glibc还没有被编译,所以只能简单配置,生成辅助的gcc,而在这一步,glibc库已经编译了,可以使用了,所以,就可以对gcc进行完整的编译了; 编译gdb调试器:调试器与前面的那些软件包是相互独立的,所以放在最后编译。 Crosstool是由美国人Dan Kegel开发的一套可以自动编译不同匹配版本gcc和glibc,并作测试的脚本程序。它也是一个开源项目,下载地址是 /crosstool 用Crosstool构建交叉工具链要比上述的分步编译容易得多,并且也方便许多。用Crosstool生成交叉编译工具遇到的问题相比手动编译出的问题少,但是需要一定得shell脚本知识来修改bash shell文件。对于仅仅为了工作需要构建交叉编译工具链的读者建议使用此方法。 首先给出需要的资源列表,如下表所示。可到下载地址下载需要使用的工具包。 使用Crosstool构建交叉编译工具链制作过程和上一节中分布构建过程原理相似,由于Crosstool是以shell的形式编译的,所以只需要以下几步:建立脚本文件、建立配置文件、执行脚本文件即可。 其主要步骤为: 准备工作:下载好所需要的软件包、准备好内核头文件、组织好目录; 建立脚本文件:修改针对arm9架构的脚本文件; 建立配置文件:主要用于定义配置文件、定义生成编译工具链的名称以及定义编译选项等; 执行脚本文件:执行建立好的脚本文件来编译交叉编译工具; 添加环境变量:将生成的编译工具链路径添加到上一节中介绍到的环境变量PATH上去。 如果读者仅仅想使用工具开发嵌入式Linux系统,那么就完全没必要花大量的时间和精力来自己编译一个交叉编译工具。很多公司和网站免费提供现成的交叉工具。这些工具可以通过网络,直接得到。 * 嵌入式Linux基础教程 重点内容: 嵌入式交叉编译工具的概念 分步编译交叉编译工具 使用crosstools编译 第6章 交叉编译工具 一、工具链软件 工具链一般由编译器、连接器、解释器和调试器组成。在X86的Linux主机上,交叉开发工具链除了能够

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档