- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                在为Linux开发应用程序时绝大多数情况下使用的都是C语言-Read
                    
在为Linux 开发应用程序时,绝大多数情况下使用的都是C 语言,因此几乎每一位Linux 
程序员面临的首要问题都是如何灵活运用C 编译器。目前 Linux 下最常用的C 语言编译器 
是GCC  (GNU   Compiler   Collection),它是GNU 项目中符合ANSI   C 标准的编译系统, 
能够编译用C、C++和Object   C 等语言编写的程序。GCC 不仅功能非常强大,结构也异常 
灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fort 
ran、Pascal、Modula-3 和Ada 等。 
开放、自由和灵活是Linux 的魅力所在,而这一点在GCC 上的体现就是程序员通过它能够 
更好地控制整个编译过程。在使用GCC 编译程序时,编译过程可以被细分为四个阶段: 
◆ 预处理(Pre-Processing) 
◆ 编译(Compiling ) 
◆ 汇编(Assembling ) 
◆ 链接(Linking) 
Linux  程序员可以根据自己的需要让GCC 在编译的任何阶段结束,以便检查或使用编译器 
在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种 
类的调试代码来为今后的调试做好准备。和其它常用的编译器一样,GCC 也提供了灵活而 
强大的代码优化功能,利用它可以生成执行效率更高的代码。 
GCC 提供了30 多条警告信息和三个警告级别,使用它们有助于增强程序的稳定性和可移 
植性。此外,GCC 还对标准的C 和C++语言进行了大量的扩展,提高程序的执行效率,有 
助于编译器进行代码优化,能够减轻编程的工作量。 
GCC 起步 
在学习使用GCC 之前,下面的这个例子能够帮助用户迅速理解GCC 的工作原理,并将其 
立即运用到实际的项目开发中去。首先用熟悉的编辑器输入清单1 所示的代码: 
清单1:hello.c 
#include   stdio.h 
int   main(void) 
{ 
printf   (Hello   world,   Linux   programming!\n); 
return   0; 
} 
然后执行下面的命令编译和运行这段程序: 
#   gcc   hello.c  -o   hello 
#   ./hello 
Hello   world,   Linux   programming! 
从程序员的角度看,只需简单地执行一条GCC 命令就可以了,但从编译器的角度来看,却 
需要完成一系列非常繁杂的工作。首先,GCC 需要调用预处理程序 cpp,由它负责展开在 
源文件中定义的宏,并向其中插入#include语句所包含的内容;接着,GCC 会调用ccl 和 
as 将处理后的源代码编译成目标代码;最后,GCC 会调用链接程序ld,把生成的目标代码 
链接成一个可执行程序。 
为了更好地理解GCC 的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每 
步的运行结果。第一步是进行预编译,使用-E 参数可以让GCC 在预处理结束后停止编译过 
程: 
#   gcc  -E   hello.c  -o   hello.i 
此时若查看hello.i 文件中的内容,会发现stdio.h 的内容确实都插到文件里去了,而其它应 
当被预处理的宏定义也都做了相应的处理。下一步是将hello.i 编译为目标代码,这可以通 
过使用-c 参数来完成: 
#   gcc  -c   hello.i  -o   hello.o 
GCC 默认将.i 文件看成是预处理后的C 语言源代码,因此上述命令将自动跳过预处理步骤 
而开始执行编译过程,也可以使用-x 参数让GCC 从指定的步骤开始编译。最后一步是将生 
成的目标文件链接成可执行文件: 
#   gcc   hello.o  -o   hello 
在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也 
就形成了多个编译单元,使用GCC 能够很好地管理这些编译单元。假设有一个由foo1.c 
和foo2.c 两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序foo,可以 
使用下面这条命令: 
#   gcc   foo1.c   foo2.c  -o   foo 
如果同时处理的文件不止一个,GCC 仍然会按照预处理、编译和链接的过程依次进行。如 
果深究起来,上面这条命令大致相当于依次执行如下三条命令: 
#   gcc  -c   foo1.c  -o   foo1.o 
#   gcc  -c   foo2.c  -o   foo2.o 
#   gcc   foo1.o   fo
                您可能关注的文档
最近下载
- 留岗培训金属热处理初级工理论考试.docx VIP
- 铝方通吊顶安装施工方案及技术措施.docx VIP
- 商务英语(北京交通大学)中国大学MOOC慕课章节测验答案(课程ID:1205722812).pdf VIP
- 第37号:危险性较大分部分项工程管理规定(2018).docx VIP
- 难治性支原体肺炎诊治.pdf
- 初中语文整本书阅读教学与写作能力提升的实践课题报告教学研究课题报告.docx
- 全新版进阶视听说B1 四级听力训练4测试答案.docx VIP
- 初二下学期期中考试(数学)试题含答案.docx VIP
- 高净值人士税务观察:个人股东在并购重组中能否暂免纳税?.pdf
- 落地式外脚手架施工方案修改版.docx VIP
 原创力文档
原创力文档 
                        

文档评论(0)