gcc 编译器
gcc 是 GNU 推出的功能强大、性能优越的多平台编译器,是 GNU 的代表作品之一。它能将C、C++语言源程序、汇编语言源程序和目标程序编译、链接成可执行文件,如果没有给出可执行文件的名字,gcc 将生成一个名为 a.out
的文件。
gcc 通过后缀来区分输入文件的类型:
后缀 | 类型 |
---|---|
.c | C语言源代码文件 |
.a | 由目标文件构成的档案库文件 |
.C|.cc|.cxx | C++源代码文件 |
.h | 程序所包含的头文件 |
.i | 预处理过的C源代码文件 |
.ii | 预处理过的C++源代码文件 |
.m | Objective-C源代码文件 |
.o | 编译后的目标文件 |
.s | 汇编语言源代码文件 |
.S | 预编译的汇编语言源代码文件 |
前面我们已经使用 gcc 编译了一个程序:cc Hello.c
gcc 还有许多选项:
-c | 只编译,不链接成为可执行文件 |
-o 文件名 | 设定输出文件名。默认为a.out |
-g | 加入调试符号(默认)。 |
-O | 编译、链接时进行优化,耗时比较多,但产生的可执行文件执行效率更高 |
-O2 | 更高的优化级别,耗时更多 |
可以使用 gdb 进行调试 使用下面的命令去掉调试符号:
不要在库文件上使用 —strip-unneeded |