Linux系统下的
gcc
(
GNU C
Compiler
)是GNU推出的功能强大、性能优越的多平台编译器
gcc最基本的用法是∶
gcc [options] [filenames]
options:编译器所需要的编译选项
filenames: 要编译的文件名。
GCC编译程序时,编译过程可以被细分为四个阶段: 预处理(Pre-Processing)、编译(Compiling)、汇编(Assembling)、链接(Linking)。
最基本、最常用的参数:
-o output_filename:
确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out
-c:
只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的
目标文件。
-g:
产生调试工具
(GNU
的
gdb)
所必要的符号信息,要想对编译出的程序进行调试,就必须
加入这个选项。
-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行优
化处理
-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
-Idirname: 将
dirname所指出的目录加入到程序头文件目录列表中。 系统预设的头文件目录(如/usr/include)
-Ldirname:
将
dirname
所指出的目录加入到库文件的目录列表中。 系统的预设路径中(如/usr/lib)
-lname:
在连接时,装载名字为“libname.a”的函数库。 例如,-lm表示连接名为
“libm.a”的数学函数库。
gcc foo.c -L /home/lib -lfoo -o foo
-static:
静态链接库文件。 例:gcc –static hello.c -o hello
-Wall:
生成所有警告信息
-w:
不生成任何警告信息
-DMACRO:
定义
MACRO
宏,等效于在程序中使用#define MACRO