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
.i文件的头是展开头文件路径,并自动把宏进行替换gg跳转到文件头
使用G跳转到文件尾,可以查看到源代码
2.使用gcc -S hello.i -o hello.s
3.gcc -C hello.s -o hello.o
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