




免费预览已结束,剩余1页可下载查看
付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
初识gcc编译器,本讲大纲:,第一次编译,gcc选项概述,警告,gcc调试,代码优化,第一次编译,在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNUCompilerCollection),它是GNU项目中符合ANSIC标准的编译系统,能够编译用C、C+和ObjectC等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等。Linux系统下的Gcc(GNUCCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%30%。5.1.1第一次编译在学习使用GCC之前,下面的这个例子能够帮助用户迅速理解GCC的工作原理,并将其立即运用到实际的项目开发中去。首先用熟悉的编辑器输入如下所示的代码:#includeintmain()printf(helloword!Linuxc!n);return0;将上面的代码保存为hello.c,然后用户就可以在终端中对上面的C语言代码进行编译了。并且我们给编译出的新文件其名为hello,最后执行编译好的文件。上面在编译的时候,为gcc的后面加入了选项-o进行新文件的重命名,如果不加入这个选项,那么新文件就会默认为a.out,如果再次编译其他的文件,同样不进行重命名的话,那么这里的a.out将会被覆盖掉。,gcc选项概述,在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。Gcc最基本的用法是gccoptionsfilenames其中options就是编译器所需要的参数,filenames给出相关的文件名称。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。-ooutput_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。,警告,GCC包含完整的出错检查和警告提示功能,它们可以帮助Linux程序员写出更加专业和优美的代码。先来看看下面所示的程序,这段代码写得很有问题,仔细检查一下不难挑出很多毛病:#includevoidmain(void)longlongintvar=1;printf(ItisnotstandardCcode!n);main函数的返回值被声明为void,但实际上应该是int;使用了GNU语法扩展,即使用longlong来声明64位整数,不符合ANSI/ISOC语言标准;main函数在终止前没有调用return语句。下面来看看GCC是如何来发现这些错误的。当GCC在编译不符合ANSI/ISOC语言标准的源代码时,如果加上了-pedantic选项,那么使用了扩展语法的地方将产生相应的警告信息:#gcc-pedanticillcode.c-oillcodeillcode.c:Infunctionmain:illcode.c:9:ISOC89doesnotsupportlonglongillcode.c:8:returntypeofmainisnotint值得注意的是,-pedantic编译选项并不能保证被编译程序与ANSI/ISOC标准的完全兼容,它仅仅只能用来帮助Linux程序员离这个目标越来越近。或者换句话说,-pedantic选项能够帮助程序员发现一些不符合ANSI/ISOC标准的代码,但不是全部,事实上只有ANSI/ISOC语言标准中要求进行编译器诊断的那些情况,才有可能被GCC发现并提出警告。除了-pedantic之外,GCC还有一些其它编译选项也能够产生有用的警告信息。这些选项大多以-W开头,其中最有价值的当数-Wall了,使用它能够使GCC产生尽可能多的警告信息:#gcc-Wallillcode.c-oillcodeillcode.c:8:warning:returntypeofmainisnotintillcode.c:Infunctionmain:illcode.c:9:warning:unusedvariablevarGCC给出的警告信息虽然从严格意义上说不能算作是错误,但却很可能成为错误的栖身之所。但是作为一个优秀的Linux程序员应该尽量避免产生警告信息,使自己的代码始终保持简洁、优美和健壮的特性。在处理警告方面,另一个常用的编译选项是-Werror,它要求GCC将所有的警告当成错误进行处理,这在使用自动编译工具(如Make等)时非常有用。如果编译时带上-Werror选项,那么GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改。只有当相应的警告信息消除时,才可能将编译过程继续朝前推进。执行情况如下:#gcc-Wall-Werrorillcode.c-oillcodecc1:warningsbeingtreatedaserrorsillcode.c:8:warning:returntypeofmainisnotintillcode.c:Infunctionmain:illcode.c:9:warning:unusedvariablevar对Li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编人教版四年级语文下册《综合性学习 轻叩诗歌大门》示范课教学课件
- 科学技术考试题及答案
- 邮储银行2025菏泽市结构化面试15问及话术
- 建设银行2025随州市秋招笔试EPI能力测试题专练及答案
- 农业银行2025酒泉市秋招面试典型题目及参考答案
- 农业银行2025海口市笔试英文行测高频题含答案
- 工商银行2025孝感市秋招英文面试题库及高分回答
- 2025年3D打印的定制化医疗产品发展
- 建设银行2025凉山彝族自治州秋招笔试性格测试题专练及答案
- 交通银行2025济南市秋招笔试价值观测评题专练及答案
- 地砖铺贴分包合同协议书
- 2025年山东省青岛市中考英语真题
- 煤矿智能掘进员内部技能考核试卷及答案
- 新《斜视弱视学》期末考试复习题库(含答案)
- 幼儿园数学活动《6和7的认识》课件
- 大语言模型与安全 课件 第3章 多模态大语言模型
- 人民医院开展“改善就医感受提升患者体验”主题活动实施方案
- 2025四川成都崇州市国有资产监督管理局市属国有企业面向社会招聘中层管理人员和员工19人笔试模拟试题及答案解析
- GB/T 45340-2025金属及其他无机覆盖层镀层厚度的测量斐索多光束干涉法
- 离婚协议书正规打印电子版(2025年版)
- 2025年高中学业水平合格性考试政治模拟试卷试题(含答案解析)
评论
0/150
提交评论