GCC精彩之旅

2016-01-29 19:11 1 1 收藏

GCC精彩之旅,GCC精彩之旅

【 tulaoshi.com - Linux 】

 

在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、Fortran、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.hint main(void){printf ("Hello world, Linux programming!n");return 0;}


然后执行下面的命令编译和运行这段程序:

# gcc hello.c -o hello# ./helloHello world, Linux programming!


从程序员的角度看,只需简单地执行一条GCC命令就可以了,但从编译器的角度来看,却需要完成一系列非常繁杂的工作。首先,GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,GCC会调用ccl和as将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。

为了更好地理解GCC的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每步的运行结果。第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:

#  gcc -E hello.c -o hello.i


此时若查看hello.cpp文件中的内容,会发现stdio.h的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:

#  gcc -c hello.i -o hello.o


GCC默认将.i文件看成是预处理后的C语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-x参数让GCC从指定的步骤开始编译。最后一步是将生成的目标文件链接成可执行文件:

#  gcc hello.o -o hello


在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译

来源:https://www.tulaoshi.com/n/20160129/1508672.html

延伸阅读
标签: 服务器
ubuntu系统怎么安装gcc编程工具?   ubuntu系统怎么安装gcc编程工具 ?         1、打开自己的电脑,之后打开终端,如果桌面上有快捷方式,就直接打开就行,没有的话可以按下键盘上的Ctrl+Alt+T组合键。   2、之后就可以可以进行安装了,因为要下载文件,所以必须进行连网,会进行自动的安装,安...
《主教之旅2》各职业使用心得 《主教之旅2》其实并不算一款新游戏,不过经典的像素风和不错的剧情还是很值得一玩的。下面带来各职业、技能使用心得,希望对大家有所帮助。 除了盗贼和格斗少年我都撸过,游戏很耐玩,自由度蛮高的,简直停不下来,唯一的残念就...
  2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。 安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或...
标签: 咖啡 奶精
印度彩色渔网煎饼(ROTI JALA) 1、将材料C加水混合成面糊(不太浓稠也不太稀,自己拿捏) 2、然后用筛子过沥面糊成幼滑状,再分别加入三种天然色素,调制成三种颜色面糊:班兰汁(青),火龙果汁(桃红),南瓜汁(金黄)。 3、最后分别用漏斗注入空矿泉水瓶中。 4、用文火烧热不粘锅,把装好在瓶子的面糊,以画符法或旋转画法的挤在锅...
《生存之旅》杀(玩)Witch的各种方法 方法如下: 一.散弹秒杀 说明: 这是最基本的方式,若Witch生在必经路上,你手上刚好又有散弹,直接过去爆她头会是个不错的选择..当然你自己要有一点底子,连散容易单散难 要点: 1.尽量在她无警戒的状态接近 警戒越高站起来发飙也就越快,瞄...