- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1-* 北京源智天下科技有限公司 联系方式: 联系方式: 北京源智天下科技有限公司 第5讲 编译与调试 演讲人:马玉军 e-mail:jtclass@126.com 课程安排 编译的概念和理解 gcc编译器 C程序的编译 编译过程的控制 gdb调试程序 gdb帮助的使用与常用命令 编译程序常见的错误与问题 编译的概念和理解 编译:就是将编写的C语言代码变成可执行程序的过程。这一过程序由编译器来完成。 一个程序的编译,需要完成词法分析、语法分析、中间代码生成、代码优化、目标代码生成。 (1)词法分析,指的是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号。然后把字符串的源程序改造成为单词符号串的中间程序。 (2)语法分析。语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语句。(3)中间代码生成。中间代码是源程序的一种内部表示,或称中间语言。程序进行词法分析和语法分析以后,将程序转换成中间代码。 (4)代码优化。代码优化是指对程序进行多种等价变换,使得从变换后的程序能生成更有效的目标代码。 (5)目标代码生成。目录代码生成指的是产生可以执行的应用程序,这是编译的最后一个步骤。 编译的概念和理解 所谓编译器,是将编写出的程序代码转换成计算机可以运行的程序的软件。在进行C程序开发时,编写出的代码是源程序代码,是不能直接运行的。需要用编译器编译后可以运行的二进制程序。 在不同的操作系统下面有不同的编译器。C程序是可以跨平台平行的。但并不是说Windows系统下C语言编写的程序可以直接在Linux下面运行。Windows下面C语言编写的程序,被编译成exe文件。这样的程序只能在Windows系统下运行。如果需要在Linux系统下运行,需要将这个程序的源代码在Linux系统重新编译。不同的操作系统下面有不同的编译器。Linux系统下面编译生成的程序是不能在Windows系统上运行的。 gcc编译器 Linux系统下的gcc编译器(GNU C Compiler)是一个功能强大、性能优越的编译器。gcc支持多种平台的编译。gcc本来只是C编译器的,后来发展为可在多种硬体平台上编译出可执行程序的超级编译器。gcc编译器能将C、C++源程序、汇程语言和目标程序进行编译连接成可执行文件。通过支持make工具,gcc可以实施项目管理和批量编译。 gcc几乎支持所有的硬件平台,使得gcc对于特定的平台可以编译出更高效的机器码。 gcc在编译一个程序时,一般需要完成: 预处理(preprocessing)、编译(compilation)、汇编(assembly)和连接(linking)过程。 通常使用gcc编译C程序时,这些过程是使用默认的设置自动完成的,但是用户可以对这些过程进行设置,控制这些操作的详细过程。 gcc编译器 gcc对源程序扩展名的支持: C程序的编译 【范例5-1】使用gcc编译第一个C程序。 01 #include stdio.h /*包含头文件*/ 02 03 int max(int i,int j ) /*定义比较两个整数大小的函数*/ 04 { 05 if(ij) /*比较两个整数的大小*/ 06 { 07 return(i); 08 } 09 else 10 { 11 return(j); 12 } 13 } 14 15 void main() /*主函数*/ 16 { 17 int i ,j,k; 18 i=3; 19 j=5; 20 printf(hello ,Linux.\n”); 21 k=max(i,j); /*调用函数比较两个整数的大小*/ 22 printf(%d\n,k); } 演示5.1.c源代码的编译 C程序的编译 gcc在编译程序时可以有很多可选参数。在终端中输入gcc –help,可以查看gcc的这些可选参数。 设置输出的文件:gcc a.c -o do 查看编译过程 :gcc -v a.c 设置编译的语言 :gcc -x c a.u 设置ANSIC标准 :gcc -asci a.out g++编译C++程序 :gcc可以编译C++程序。编译C程序和C++程序时,使用的是不同的命令。编译C++程序时,使用的命令是g++。该命令的使用方法与gcc是相似的。例如:g++ 5.2.cpp –o 5.2.out 编译过程的控制 编译过程:指的是gcc对一个程序进行编译时完成的内部处理和步骤。编译程序时会自动完成预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)
您可能关注的文档
最近下载
- 中国移动2018年校园招聘考试笔试题目考试试卷-历年考试真题.doc VIP
- 基础会计洑建红习题答案(新税率).doc VIP
- 蟑螂防治_六_不同场所蟑螂的防治.docx VIP
- 人民大2023商务英语视听说(第1册)(第二版)PPTUnit 8 Work and Life.pptx VIP
- 医美皮肤美容产品芙语诺专业知识课件.pdf VIP
- 跨文化交际:中英文化对比 (14).ppt VIP
- 《乳腺癌术后康复锻炼课件》.ppt VIP
- 科研经费管理规定.docx VIP
- 鲁科版四年级上册劳动项目一 清洁与卫生——班级卫生大扫除(课件).pptx VIP
- 2025年秋学期人教版初中数学八年级上册教学计划教学进度表.docx VIP
文档评论(0)