GNU CC(通常称为GCC)是GNU项目的编译器,它能够编译C、C++语言编写的程序
gcc的优点
使用gcc,程序员可以控制生成二进制执行文件中调试代码的数量和类型。
和其他编译器一样,gcc也可以优化执行代码。
gcc是个交叉平台编译器,所以能够在当前CPU平台上为不同操作系统开发软件。
gcc对C和C++进行了一些扩展,有助于提高执行效率以及编译器进行代码优化。
gcc可以让跨平台编程更加容易,降低代码移植代价
gcc的大致流程

预处理
gcc -o test.i -E test.cgcc对源程序test.c进行预编译,预编译结果输出到test.i文件中
汇编
gcc -o test.o -c test.igcc对源程序test.c进行编译,但不链接,编译输出到test.o文件中
链接
1
gcc -o test test.o
gcc对源程序test.o进行链接,生成可执行程序test
gcc常用选项
| 参数 | 作用 | 
|---|---|
-o filename | 
输出文件名,如果没指定filename,默认为a.out | 
-c | 
只编译,不链接 | 
-E | 
预编译 | 
-S | 
汇编 | 
-g | 
包含调试信息 | 
-I | 
指定包含头文件路径 | 
-D | 
编译时定义指定的宏,相当于源代码中的#define宏定义 | 
-L | 
指定要链接库文件的路径 | 
-l | 
链接指定的库文件 | 
-O | 
优化编译后的代码 | 
-w | 
关闭所有告警信息 | 
-Wall | 
开启所有告警信息 | 
-Werror | 
Warning当做错误处理 | 
-static | 
强制链接时链接静态库 | 
-fPIC | 
编译与位置无关的代码,主要用于编译共享库 | 
-shared | 
生成共享库so文件 | 
-pedantic | 
发现一些不符合 ANSI/ISO C标准的代码 |