- 1、本文档共54页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(第五部分附加的GCC
第五部分 常用开发工具 5.1 gcc编译系统 5.2 gdb程序调试工具 5.3 程序维护工具make 5.1 gcc编译系统 5.1.1 C语言编译过程 5.1.2 文件名后缀 5.1.3 gcc编译器简介 5.1.4 gcc编译器的工作过程 5.1.5 gcc命令行选项 5.1.1 C语言编译过程 5.1.1 C语言编译过程 5.1.1 C语言编译过程 5.1.1 C语言编译过程 C语言的编译过程可分为四个阶段: 1、预处理(Preprocessing) 对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程。 伪指令包括: 宏定义指令 条件编译指令 头文件包含指令 5.1.1 C语言编译过程 C语言的编译过程可分为四个阶段: 2、编译(Compilation) 编译就是将源程序转换为计算机可以执行的二进制代码。 说明: 在Linux下,目标文件的缺省后缀为.o 编译程序将通过词法分析和语法分析,将其翻译成为等价的汇编代码。 在使用gcc进行编译时,缺省情况下,不输出这个汇编代码的文件。如果需要,可以在编译时指定-S选项。这样,就会输出同名的汇编语言文件。 5.1.1 C语言编译过程 C语言的编译过程可分为四个阶段: 3、汇编(Assembly) 汇编的过程实际上是将汇编语言代码翻译成机器语言的过程。 产生一个扩展名为.o的目标文件。 4、链接(Linking) 目标代码不能直接执行,要想将目标代码变成可执行程序,还需要进行链接操作。才会生成真正可以执行的可执行程序。 链接操作最重要的步骤就是将函数库中相应的代码组合到目标文件中。 5.1.2 文件名后缀 gcc可以针对支持不同的源程序文件进行不同的处理,文件格式以文件的后缀来识别。 5.1.3 gcc编译器简介 gcc(GNU Compiler Collection) 在Linux平台上最常用的C语言编译系统是gcc,它是GNU项目中符合ANSI C标准的编译系统。 gcc的使用格式: gcc [options][filenames] 说明: 当不用任何选项时,gcc将会生成一个名为a.out的可执行文件。 5.1.3 gcc编译器简介 例子:在linux上编译一个c程序。 #include stdio.h int main() { printf(hello world.\n); return 0; } 5.1.4 gcc编译器的工作过程 1、预处理(Preprocessing) 2、编译(Compilation Assembly) 源代码转换为汇编语言(在编译时选择-S选项,可以看到生成的汇编代码.s文件) 汇编代码(.s)转换为目标代码(.o) 3、链接(Linking) 将目标代码与各库函数进行链接并重定位。生成可执行程序。 5.1.5 gcc命令行选项 预处理选项 5.1.5 gcc命令行选项 例子:使用-I选项包含保存在非标准位置中的头文件。 # gcc -I/usr/openwin/include file.c 5.1.5 gcc命令行选项 编译程序选项 5.1.5 gcc命令行选项 例子:在gcc中使用-W控制警告信息。 # gcc -Wall -o hello1 hello1.c 例子:使用gcc的-g选项来产生调试符号, # gcc -g -o test1 test1.c 5.1.5 gcc命令行选项 例子:多文件的编译。 5.1.5 gcc命令行选项 编译方法一: 编译方法二: 说明: 方法二不产生中间目标文件,直接生成一个可执行文件,因而,程序内容稍有改动,就要重新编译全部程序。 5.1.5 gcc命令行选项 优化程序选项 优化是编译器的一部分,它可以检查和组合编译器生成的代码,指出未达到最优的部分,并重新生成它们,从而使用户编写的程序更加完美且节省空间。 在gcc编译器选项中,使用-O选项对代码进行优化。优化级别分3级,由高到低分别为:-O3、-O2、-O1, 5.1.5 gcc命令行选项 优化程序选项 说明: -O1(或-O)、-O2、-O3分别代表优化级别,数字越高,代表gcc的优化级别越高,高的优化级别代表着程序将运行的更快。 优化级别越高则程序量越大。 直接优化程序本身,性能的提高的变化更加明显。 5.1.5 gcc命令行选项 连接程序选项 库:是一组预先编译好的函数集合。 说明: 标准库文件一般存储在/lib和/usr/lib目录中。 所有的库名都以lib开头。例如:libc.so(标准C语言函数库)、libm.so(数学运算函数库) 以.a结尾的是静态库;以.so结尾的库是动态库。 使用ar工具将目标文件收集起来,放到一个归档文件中。 5.1.5 gcc命令
文档评论(0)