- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
编译程序-GCC
了解GCCGCC(GNUCompilerCollection,GNU编译器套件),是由GNU开发的编程语言编译器。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、MacOSX等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC原名为GNUC语言编译器(GNUCCompiler),因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNUCompilerCollection)。?
GNUBinutilsGNUBinutils,即GNUBinaryUtilities的简写,一般简称为Binutils。GNUBinutils,中文可以翻译为GNU的二进制工具集。GNUBinutils,是一组二进制工具的集合。?
GNUBinutils中包含的主要工具ld链接器 将多个目标文件,链接成一个可执行文件(或目标库文件)。as汇编器 将汇编源代码,编译为(目标)机器代码?
GNUBinutils中包含的其他次要工具addr2line? 将地址转换为(文件名和)行号的工具,以便于调试ar? 用来操作(.a)文件,比如创建,修改,提取内容等.c++filt? 由于每一个重载的函数都使用与原函数相同的名称,因此,支持函数重载的语言必须拥有一种机制,以区分同一个函数的许多重载版本。c++filt将每个输入的名称看成是改编后的名称(mangledname),并设法确定用于生成该名称的编译器。dlltool? 基于obj文件(基中函数标记为__declspec(dllexport))或def文件生成exp和lib文件。前者(exp文件,其中包含了.edata段)是用于创建dll,后者(lib文件,包含.idata段)用于使用dll。?
GNUBinutils中包含的其他次要工具gold? 一个新的,速度更快的,只针对于ELF的链接器gprof? 打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的函数。nm? 列举目标文件中的符号以及与符号有关的一些信息。Objcopy 把目标文件的内容从一种文件格式复制到另一种格式的目标文件中。Objdump 显示目标文件信息,可以反编译二进制文件,也可以对对象文件进行反汇编,并查看机器代码。?
GNUBinutils中包含的其他次要工具ranlib 生成索引以加快对归档文件的访问,并将结果保存到这个归档文件中readelf 显示符号、段信息、二进制文件格式的信息等,这在分析编译器如何工从源代码创建二进制文件时非常有用。size 可以列出目标文件或者一个归档文件每一段的大小以及总体的大小strings? 用于提取文件中的字符串内容,使用该工具不会受到文件格式的限制。strip? 去除符号,比如用于debug的信息,在不影响程序功能的前提下,减少可执行文件的大小,减少程序的占用空间?
任务要求StepOne安装GCC编译器StepTwoGCC的编译过程StepThreeGCC编译实例
StepOne安装GCC通过GCC–v查看当前的GCC版本gcc-v解压gcc源码包tarxzvfgcc-4.7.4.tar.gz
StepOneinstallgmp./configure--prefix=/opt/gmp-4.3.2installmpfr./configure--prefix=/opt/mpfr-2.4.2--with-gmp=/opt/gmp-4.3.2installmpc
StepOne配置../gcc-4.7.4/configure--prefix=/opt/gcc-4.7--with-gmp=/opt/gmp-4.3.2--with-mpfr=/opt/mpfr-2.4.2--with-mpc=/opt/mpc-1.0.1--enable-languages=c,c++,java编译安装makemakeinstall
StepTwo预处理阶段gcc–Ehello.c–ohello.i程序的编译过程编译阶段gcc–Shello.i–ohello.s
StepTwo汇编阶段gcc–chello.s–ohello.o程序的编译过程链接阶段gcchello.o–ohello
StepThree编译简单的C程序gcc-g-Wallt
您可能关注的文档
- 嵌入式Linux开发实践教程(第2版)课件:编译程序-GCC .pptx
- 嵌入式Linux开发实践教程(第2版)课件:调试程序-GDB.pptx
- 嵌入式Linux开发实践教程(第2版)课件:管理Linux文件 .ppt
- 嵌入式Linux开发实践教程(第2版)课件:管理linux文件.ppt
- 嵌入式Linux开发实践教程(第2版)课件:配置Samba服务 .pptx
- 嵌入式Linux开发实践教程(第2版)课件:配置TFTP服务 .pptx
- 嵌入式Linux开发实践教程(第2版)课件:配置TFTP服务.pptx
- 嵌入式Linux开发实践教程(第2版)课件:配置嵌入式开发常用服务.pptx
- 嵌入式Linux开发实践教程(第2版)课件:认识Bootloader.pptx
- 嵌入式Linux开发实践教程(第2版)课件:认识内核.pptx
文档评论(0)