GNU CC(通常称为GCC)是GNU项目的编译器,它能够编译C、C++语言编写的程序
gcc的优点
-
使用gcc,程序员可以控制生成二进制执行文件中调试代码的数量和类型。
-
和其他编译器一样,gcc也可以优化执行代码。
-
gcc是个交叉平台编译器,所以能够在当前CPU平台上为不同操作系统开发软件。
-
gcc对C和C++进行了一些扩展,有助于提高执行效率以及编译器进行代码优化。
-
gcc可以让跨平台编程更加容易,降低代码移植代价
gcc的大致流程
- 预处理
gcc -o test.i -E test.c
gcc对源程序test.c进行预编译,预编译结果输出到test.i文件中
- 汇编
gcc -o test.o -c test.i
gcc对源程序test.c进行编译,但不链接,编译输出到test.o文件中
- 链接
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标准的代码 |