GCC编译程序

GCC是(CNU C Compiler)是GNU推出的功能强大,性能优越的多平台编译器,是GNU的代表作之一,GCC可以在多种硬件平台上编译出可执行程序,其执行效率是一般的编译器的相比平均效率高出20%-30%


GCC编译流程

gcc编译器能将c/c++语言源程序,汇编程序形成可执行文件,整个形成过程可以分成四个阶段

hello.c    预处理-->hello.i  编译-->  hello.s(汇编)-->   hello.o(二进制)  链接-->hello

1.使用gcc -E  hello.c  -o    hello.i

GCC编译程序

.i文件的头是展开头文件路径,并自动把宏进行替换gg跳转到文件头

GCC编译程序

使用G跳转到文件尾,可以查看到源代码


2.使用gcc  -S  hello.i   -o   hello.s

GCC编译程序

3.gcc  -C   hello.s  -o   hello.o

GCC编译程序

4.gcc  hello.o  -o  hello



GCC通过后缀来区别输入文件的类别,常见类型有:

.c为后缀的文件:C语言源代码文件

.a为后缀的文件:是由目标文件构成的库文件

.C,.cc或者.cxx为后缀的文件是C++源代码文件

.h为后缀的文件,头文件

.o为后缀的文件,是编译后的目标文件 

.s为后缀的文件,是汇编语言源代码文件



2.GCC编译选项

-o   output_filename:确定可执行文件名为output_filename.如果不给出这个选项,gcc就给出预设的可执行文件a.out

-O ,对程序进行编译,链接,采用这个选项,整个源代码会在编译,链接过程中进行优化处理,这样产生的执行文件执行效率可以提高,但是编译、链接的速度相应的变慢一些

-O2  ,比-O更好的优化编译、链接,

使用time  ./ ***统计程序运行时间 

-c  不链接。编译器只是由输入的.c等源代码文件编译生成.o为后缀的中间文件

gcc  -c   hello.c

-g:产生调试工具gdb所需的符号信息,想对编译出的程序进行调试,必须加入这个选项

-I  dirname:从dirname的文件夹下寻找头文件

gcc   -I   /dirname   -o   hello.c   hello

-Wall:生成所有警告信息。

-w:不生成任何警告信息

-gcc  -Dname     hello.c   -o  hello       

定义一个为name的宏,相当于在程序中使用 deifined