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

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

ID:43473650

大小:1.40 MB

页数:79页

时间:2019-10-08

刘彦文-嵌入式系统实践教程-CH3 清华大学出版社_第1页
刘彦文-嵌入式系统实践教程-CH3 清华大学出版社_第2页
刘彦文-嵌入式系统实践教程-CH3 清华大学出版社_第3页
刘彦文-嵌入式系统实践教程-CH3 清华大学出版社_第4页
刘彦文-嵌入式系统实践教程-CH3 清华大学出版社_第5页
资源描述:

《刘彦文-嵌入式系统实践教程-CH3 清华大学出版社》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第3章主机开发环境配置虽然Linux编程环境能够支持众多编程语言,例如C、C++、Java、Perl、Python、Ada、Forth、Lisp、Fortran等等,但是目前最常用的是C语言。本章主要描述了使用C语言编程时,主机开发环境的跨平台工具链的安装。另外目标板在运行程序时,使用到网口和串行端口,因此需要事先对主机Linux环境网络和串行端口进行配置。3.1交叉开发平台基础3.1.1本地开发及交叉开发⒈本地开发本地开发(nativedevelopment)也称本机开发,指的是在主机某种操作系统下对源程序进行编译、链接,产生的可执行文件仍然能够在相

2、同的主机和相同的操作系统下运行。Linux系统支持本地开发的软件,主要指编译器及C程序库等,它们通常包含在Linux发行套件中,主机安装Linux系统时,会同时将其安装在硬盘。⒉交叉开发交叉开发(crossdevelopment)主要是指,在主机编译源程序并构建能够在目标板上运行的可执行文件的过程,并且主机、目标板处理器架构应该是不同的。例如在PC机对源程序进行编译、链接,并且产生可以在基于ARM处理器架构的目标板上运行的文件的过程。这里通常主机和目标板运行的应该是相同的操作系统,如Linux。交叉开发过程中,在主机输入源程序、编译、链接,仅仅在目标板

3、上运行程序,主要原因是目标板上硬件资源少,缺少键盘、显示器、硬盘;内存容量比较小;处理器速度比较慢。3.1.2GNU跨平台工具链组成跨平台工具链(cross-platformtoolchain)经常被简写为交叉工具链(crosstoolchain),或者就称为工具链(toolchain)。本书中出现的工具链一词,通常指的是跨平台工具链,有时也称为交叉编译器。Linux使用的工具链的大部分组件来自GNU项目。工具链通常包含以下二进制(可执行文件)工具程序:预处理器、链接器、汇编器、打包器(archiver)、C(或其他语言的)编译器,以及C程序库与它的头

4、文件。其中,C程序库与它的头文件是一种共享程序库,其行为有如内含“原始Linux内核API”的打包程序,而且在Linux系统中执行的任何应用程序几乎都会用到它。3.1.3如何获取工具链根据自己的开发环境,通过以下4种途径可以获得工具链:购买一个商业版的工具链。网上下载一个免费的工具链。购买目标板时,附带的光盘上通常会带有一个工具链。网上下载组成工具链的源代码,使用工具自行创建一个工具链。购买目标板所附带的工具链,是大多数用户最常使用的工具链,使用时要安装到主机Linux系统下。3.1.4工具链的组件及GDB简介⒈工具链组件简介⑴GCC编译器集GCC(G

5、NUCompilerCollection,GNU编译器集)并不仅仅是个C编译器,它是一个GNU编译器集,能够支持对C、C++、ObjectiveC、Java、Fortran(F77)以及Ada语言的编译。可以对GCC进行配置,使GCC能够为不同的目标处理器生成代码,使之成为一个交叉编译器。目前GCC支持的处理器体系结构有40余种,常见的有x86、ARM、PowerPC等。GCC除了能够在Linux环境下运行,还可以在Windows下运行。GCC是一个能够控制很多其他工具的前端软件,被控制的工具在编译过程中会使用到,如cpp预处理器、C编译器、汇编器、链

6、接器等。⑵GNUbinutils工具链的另一个重要的组件是GNUbinutils套件,此套件中含有两个重要的工具程序,GNU汇编器as以及GNU链接器ld。此外还有10多个工具程序,如ranlib是为archive(静态程序库)的内容产生索引、strip是用于去除目标文件中的符号,等等。⑶标准C程序库Linux用到的标准C程序库就是GNUC程序库,常被写作glibc。glibc是一个可移植、高性能的C程序库,支持所有相关标准(ISOC99、POSIX.1c、POSIX.lj、POSIX.1d、Unix98以及SingleUnixSpecificatio

7、n)。⑷线程程序库Linux内核2.6版之前对线程的支持非常有限。Linux2.6系列随附了一个新的线程实验品,称为NewPOSIXThreadingLibrary,即新的POSIX线程库NPTL。NPTL所依靠的是Linux内核对线程新的支持。NPTL被当作glibc新近版本的一部分对外发布。⑸Linux内核头文件工具链中会用到某一版本的Linux内核头文件,目的是支持程序员编程中使用到的对Linux内核的系统调用。构建工具链用到的Linux内核文件,应该与目标板上使用的Linux内核,来自相同的版本。⒉GDB简介GDB(GNUDebugger)通常

8、不包括在工具链中,是一个Linux上最常用的调试器工具。GDB需要进行编译,使之能够调试运行在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。