GCC编译器能将c、c++语言源程序、汇编程序编译、链接成可执行文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。
使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理、编译、汇编、链接。
GCC最基本的用法是:
gcc [options] [filenames]
options:编译器所需要的编译选项
filenames: 要编译的文件名
gcc编译器的编译选项大约有100多个,其中多数我们根本用不到,这里只介绍其中最基本、最常用的参数。
-o output_filenames: 确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-c:只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。
-g:产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序经行调试,就必须加入这个选项。
-O:对程序经行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中经行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应的要慢一些。
-O2:比-O更好的优化编译、链接,当然整个编译、链接过程会更慢。
-Idirname:将dirname所指出的目录加入到程序头文件目录列表中。
-Ldirname:将dirname所指出的目录加入到库文件的目录列表中。
-lname:在连接时,装载名字为“libname.a”的库函数,该库函数位于系统预设的目录或者由-L选项确定的目录下。gcc foo.c –L /home/lib –lfoo –o foo
-static:静态链接库文件。
-Wall:生成所有警告信息。
-w:不生成任何警告信息。
-DMACRO:定义MACRO宏,等效于在程序中使用#difine MACRO。