GCC是GNU C COMPILER 的缩写,是一个多平台的编译软件,它能够将C、C++、汇编语言编译、链接成可执行的文件。
认知GCC:
1.GCC产生应用程序需要预处理、编译、汇编、链接四个阶段。
2.GCC通过文件的后缀来识别程序的类型,归类如下:
C语言的源文件是以.c为后缀。
.i为经过预处理后的C文件。
C++语言的源文件是以.C或者.cxx或者.cc为后缀。
.ii为经过预处理后的C++文件。
.o为编译后的目标文件。
.a为后缀的文件是指目标文件构成的库文件。
.h为头文件。
.s为汇编文件。
.S指经过预处理的汇编文件。
3.GCC的基本用法:
gcc [ 编译选项] [文件名]
下面简单介绍其编译选项:
-o选项:指明输出的文件名,如 gcc hello.c -o hello 就表示输出的文件为hello,如果不指定-o选项的话,gcc 会将编译的输出文件命名为a.out.
-c选项:是指gcc只编译但不链接。
-g选项:是指在编译链接的时候增加调试的信息,当然,由于在输出文件中增加了调试信息,因此,编译出来的文件比不加-g的文件要大一些。如gcc -g hello.c -o hello.
-O或者-O2选项:是指在编译的过程中对软件进行优化,只是优化的级别不一样,-O2的优化更深入和彻底一些。
-I选项:用于指定在usr/include头文件库里面找不到的头文件。如在文件中有两个头文件other.h 和stdio.h,但other.h是你自己编写的头文件而且又没有放入usr/include中,这样为了能够顺利的编译通过,你必须通过-I选项指定other.h的路径。
-L选项:同理用于指定usr/lib的默认路径里面没有的库文件。
-static选项:表示gcc使用静态链接的方式,在默认的情况下,gcc使用动态的链接方式,即不指明-static选项。注意,静态链接的文件大小要比动态链接的文件大小要大很多,使用的时候要慎用。而且静态链接库使用.a后缀,而动态链接库使用.so后缀。
-Wall选项:在编译的过程中生成警告的信息;
-w选项:表示在编译的过程中不生成警告信息。
-D选项:在文件中定义宏,如 gcc -DDEBUG hello.c -o hello 表示在编译的过程中增加对DBUG的定义。