《开发工具介绍》PPT课件.ppt
《《开发工具介绍》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《开发工具介绍》PPT课件.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、开发工具介绍开发工具介绍http:/ vs 交叉平台开发交叉平台开发l本地开发:一般软件的开发属于本地开发,也就是说开发软件的系统与运行软件的系统是相同的。l交叉平台开发:本课程所涉及到的嵌入式系统开发属于交叉平台开发,也就是说开发软件的系统与运行软件的系统不同。4EmbeddedOperatingSystems交叉开发平台交叉开发平台l主机:开发软件的平台,称为主机,往往是通用电脑;l目标机:运行软件的平台,称为目标机,在这里是嵌入式系统。5EmbeddedOperatingSystems嵌入式交叉开发工具嵌入式交叉开发工具l掌握嵌入式开发工具的使用是进行嵌入式开发的前提条件之一l与主流软件
2、开发工具类似,嵌入式交叉开发工具也包括1.编译器,即能够把一个源程序编译生成一个可执行程序的软件2.调试工具,即能够对执行程序进行源码或汇编级调试的软件3.软件工程工具,用于协助多人开发或大型软件项目的管理的软件6EmbeddedOperatingSystemsGNU toolslGNUtools和其他一些优秀的开源软件可以完全覆盖上述类型的软件开发工具。为了更好的开发嵌入式系统,需要了解如下一些软件lGCClBinutils辅助GCC的主要软件lGdblmakelcvs7EmbeddedOperatingSystemsGCCl很多人认为GCC只是一个C编译器,其实GCC=GNUCompile
3、rCollectionl目前,GCC可以支持多种高级语言,如lC、C+lADAlObjectClJAVAlFortranlPASCAL8EmbeddedOperatingSystemsGCC下的工具下的工具lcpp预处理器GNUC编译器在编译前自动使用cpp对用户程序进行预处理lgcc符合ISO等标准的C编译器lg+基本符合ISO标准的C+编译器lgcjGCC的java前端lgnatGCC的GNUADA95前端9EmbeddedOperatingSystemsGNU Toolsgcclgcc是一个强大的工具集合,它包含了预处理器,编译器,汇编器,链接器等组件。它会在需要的时候调用其他组件。输入
4、文件的类型和传递给gcc的参数决定了gcc调用具体的哪些组件。l对于开发者,它提供的足够多的参数,可以让开发者全面控制代码的生成,这对嵌入式系统级的软件开发非常重要10EmbeddedOperatingSystemsgcc使用举例(使用举例(1)源程序源程序11EmbeddedOperatingSystemsgcc使用举例(使用举例(2)编译和运行编译和运行编译运行12EmbeddedOperatingSystemsgcc的工作工程(的工作工程(1)l如果使用-v选项,则可以看到许多被隐藏的信息13EmbeddedOperatingSystems14EmbeddedOperatingSyste
5、msgcc的编译过程的编译过程l一般情况下,c程序的编译过程为l预处理l编译成汇编代码l汇编成目标代码l链接15EmbeddedOperatingSystemsgcc的工作过程(的工作过程(2)l预处理使用-E参数输出文件的后缀为“.cpp”gccEogcctest.cppgcctest.cl使用wc命令比较预处理后的文件与源文件,可以看到两个文件的差异16EmbeddedOperatingSystems行数单词数字节数预编译17EmbeddedOperatingSystemsl预处理文件汇编代码1)使用-x参数说明根据指定的步骤进行工作,cpp-output指明从预处理得到的文件开始编译2)
6、使用-S说明生成汇编代码后停止工作gccxcpp-outputSogcctest.sgcctest.cppl也可以直接编译到汇编代码gccSgcctest.cgcc的工作过程(的工作过程(3)18EmbeddedOperatingSystems预处理文件汇编代码直接编译到汇编代码19EmbeddedOperatingSystemsgcc的工作过程(的工作过程(4)l汇编代码目标代码gccxassemblercgcctest.sl直接编译成目标代码gcccgcctest.cl使用汇编器生成目标代码asogcctest.ogcctest.s20EmbeddedOperatingSystems汇编代
7、码目标代码直接编译成目标代码使用汇编器21EmbeddedOperatingSystemsgcc的工作过程(的工作过程(5)l目标代码执行代码gccogcctestgcctest.ol直接生成执行代码gccogcctestgcctest.c22EmbeddedOperatingSystems目标代码执行代码直接生成执行代码23EmbeddedOperatingSystemsgcc的高级选项的高级选项l-Wall:打开所有的警告信息24EmbeddedOperatingSystems根据警告信息检查源程序根据警告信息检查源程序Main函数的返回值为int在函数的末尾应当返回一个值25Embedd
8、edOperatingSystems修改源程序修改源程序26EmbeddedOperatingSystems优化编译优化编译l优化编译选项有:l-O0缺省情况,不优化l-O1l-O2l-O3l等等不同程度的优化27EmbeddedOperatingSystemsgcc的优化编译举例(的优化编译举例(1)考虑如下的源代码考虑如下的源代码不同的优化编译选项28EmbeddedOperatingSystemsgcc的优化编译举例(的优化编译举例(2)使用使用time命令统计程序的运行命令统计程序的运行29EmbeddedOperatingSystemsGNU binutilslbinutils是一组
9、二进制工具程序集,是辅助GCC的主要软件,它主要包括1.addr2line把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。2.ar建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。30EmbeddedOperatingSystems3.as是GNU汇编器,主要用来编译GNUC编译器gcc输出的汇编文件,他将汇编代码转换成二进制代码,并存放到一个object文件中,该目标文件将由连接器ld连接4.C+filt解码C+符号名,连接器使用它来过滤C+和Ja
10、va符号,防止重载函数冲突。5.gprof显示程序调用段的各种数据。6.ld是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用,最终形成一个可执行文件。通常,建立一个新编译程序的最后一步就是调用ld。31EmbeddedOperatingSystems7.nm列出目标文件中的符号。8.objcopy把一种目标文件中的内容复制到另一种类型的目标文件中.9.objdump显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。10.ranlib产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可
11、重分配目标文件。11.readelf显示ebf格式可执行文件的信息。32EmbeddedOperatingSystems12.size列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。13.strings打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。14.strip丢弃目标文件中的全部或者特定符号。33EmbeddedOperatingSy
12、stems15.libiberty包含许多GNU程序都会用到的函数,这些程序有:getopt,obstack,strerror,strtol和strtoul.16.libbfd二进制文件描述库.17.libopcodes用来处理opcodes的库,在生成一些应用程序的时候也会用到它,比如objdump.Opcodes是文本格式可读的处理器操作指令.34EmbeddedOperatingSystemsbinutils开发工具使用举例开发工具使用举例larlnmlObjcopylObjdumplreadelf35EmbeddedOperatingSystemsarlar用于建立、修改、提取归档文件
13、(archive),一个归档文件,是包含多个被包含文件的单个文件(也可以认为归档文件是一个库文件)。l被包含的原始文件的内容、权限、时间戳、所有者等属性都保存在归档文件中,并且在提取之后可以还原36EmbeddedOperatingSystems使用使用ar建立库文件(建立库文件(1)l源程序add.c和minus.c37EmbeddedOperatingSystems使用使用ar建立库文件(建立库文件(2)编译成目标文件建立库文件将库文件拷贝到/usr/lib目录下Ar的rv参数的说明:r:将多个文件组成一个文件v:输出信息38EmbeddedOperatingSystems库文件使用举例库
14、文件使用举例在代码中使用在代码中使用Add和和Minus函数函数39EmbeddedOperatingSystems在编译时指定库文件在编译时指定库文件指明将libtest.a链接进来运行结果40EmbeddedOperatingSystemsnmlnm的主要功能是列出目标文件中的符号,这样程序员就可以定位和分析执行程序和目标文件中的符号信息和它的属性41EmbeddedOperatingSystemsnm显示的符号类型显示的符号类型A:符号的值是绝对值,并且不会被将来的链接所改变B:符号位于未初始化数据部分(BSS段)C:符号是公共的。公共符号是未初始化的数据。在链接时,多个公共符号可能以相
15、同的名字出现。如果符号在其他地方被定义,则该文件中的这个符号会被当作引用来处理D:符号位于已初始化的数据部分T:符号位于代码部分U:符号未被定义?:符号类型未知,或者目标文件格式特殊42EmbeddedOperatingSystemsnm使用举例使用举例如果对test可执行文件使用nm,会有什么结果呢?43EmbeddedOperatingSystemsobjcopyl可以将一种格式的目标文件内容进行转换,并输出为另一种格式的目标文件。它使用GNUBFD(binaryformatdescription)库读/写目标文件,通过这个BFD库,objcopy能以一种不同于源目标文件的格式生成新的目标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开发工具介绍 开发 工具 介绍 PPT 课件
限制150内