[刘彦文-嵌入式系统实践教程-ch3清华大学出版社.ppt

[刘彦文-嵌入式系统实践教程-ch3清华大学出版社.ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[刘彦文-嵌入式系统实践教程-ch3清华大学出版社

第3章 主机开发环境配置 虽然Linux编程环境能够支持众多编程语言,例如C、C++、Java、Perl、Python、Ada、Forth、Lisp、Fortran等等,但是目前最常用的是C语言。 本章主要描述了使用C语言编程时,主机开发环境的跨平台工具链的安装。 另外目标板在运行程序时,使用到网口和串行端口,因此需要事先对主机Linux环境网络和串行端口进行配置。 3.1 交叉开发平台基础 3.1.1 本地开发及交叉开发 ⒈ 本地开发 本地开发(native development)也称本机开发,指的是在主机某种操作系统下对源程序进行编译、链接,产生的可执行文件仍然能够在相同的主机和相同的操作系统下运行。 Linux系统支持本地开发的软件,主要指编译器及C程序库等,它们通常包含在Linux发行套件中,主机安装Linux系统时,会同时将其安装在硬盘。 ⒉ 交叉开发 交叉开发(cross development)主要是指,在主机编译源程序并构建能够在目标板上运行的可执行文件的过程,并且主机、目标板处理器架构应该是不同的。 例如在PC机对源程序进行编译、链接,并且产生可以在基于ARM处理器架构的目标板上运行的文件的过程。这里通常主机和目标板运行的应该是相同的操作系统,如Linux。 交叉开发过程中,在主机输入源程序、编译、链接,仅仅在目标板上运行程序,主要原因是目标板上硬件资源少,缺少键盘、显示器、硬盘;内存容量比较小;处理器速度比较慢。 3.1.2 GNU跨平台工具链组成 跨平台工具链(cross-platform toolchain)经常被简写为交叉工具链(cross toolchain),或者就称为工具链(toolchain)。本书中出现的工具链一词,通常指的是跨平台工具链,有时也称为交叉编译器。Linux使用的工具链的大部分组件来自GNU项目。 工具链通常包含以下二进制(可执行文件)工具程序:预处理器、链接器、汇编器、打包器(archiver)、C(或其他语言的)编译器,以及C程序库与它的头文件。 其中,C程序库与它的头文件是一种共享程序库,其行为有如内含“原始Linux内核API”的打包程序,而且在Linux系统中执行的任何应用程序几乎都会用到它。 3.1.3 如何获取工具链  根据自己的开发环境,通过以下4种途径可以获得工具链: 购买一个商业版的工具链。 网上下载一个免费的工具链。 购买目标板时,附带的光盘上通常会带有一个工具链。 网上下载组成工具链的源代码,使用工具自行创建一个工具链。 购买目标板所附带的工具链,是大多数用户最常使用的工具链,使用时要安装到主机Linux系统下。 3.1.4 工具链的组件及GDB简介 ⒈ 工具链组件简介 ⑴ GCC编译器集 GCC(GNU Compiler Collection,GNU编译器集)并不仅仅是个C编译器,它是一个GNU编译器集,能够支持对C、C++、Objective C、Java、Fortran(F77)以及Ada语言的编译。 可以对GCC进行配置,使GCC能够为不同的目标处理器生成代码,使之成为一个交叉编译器。目前GCC支持的处理器体系结构有40余种,常见的有x86、ARM、PowerPC等。GCC除了能够在Linux环境下运行,还可以在Windows下运行。 GCC是一个能够控制很多其他工具的前端软件,被控制的工具在编译过程中会使用到,如cpp预处理器、C编译器、汇编器、链接器等。 ⑵ GNU binutils 工具链的另一个重要的组件是GNU binutils套件,此套件中含有两个重要的工具程序,GNU汇编器as以及GNU链接器ld。此外还有10多个工具程序,如ranlib是为archive(静态程序库)的内容产生索引、strip是用于去除目标文件中的符号,等等。 ⑶ 标准C程序库 Linux用到的标准C程序库就是GNU C程序库,常被写作glibc。glibc是一个可移植、高性能的C程序库,支持所有相关标准(ISO C 99、POSIX.1c、POSIX.lj、POSIX.1d、Unix98以及Single Unix Specification)。 ⑷ 线程程序库 Linux内核2.6版之前对线程的支持非常有限。Linux 2.6系列随附了一个新的线程实验品,称为New POSIX Threading Library,即新的POSIX线程库NPTL。NPTL所依靠的是Linux内核对线程新的支持。NPTL被当作glibc新近版本的一部分对外发布。 ⑸ Linux内核头文件 工具链中会用到某一版本的Linux内核头文件,目的是支持程序员编程中使用到的对Linux内核的系统调用。构

文档评论(0)

yingxiaorong28 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档