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 加入调试符号(默认)。1
-O 编译、链接时进行优化,耗时比较多,但产生的可执行文件执行效率更高
-O2 更高的优化级别,耗时更多

1

可以使用 gdb 进行调试

使用下面的命令去掉调试符号:

strip --strip-unneeded a.out
strip --strip-debug a.out

不要在库文件上使用 --strip-unneeded