基本用法
在使用Gcc 编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。 GCC最基本的用法是∶gcc [options] [filenames] 其中options就是编译器所需要的参数,filenames给出相关的文件名称。 -c,只 编译,不连接成为 可执行文件,编译器只是由输入的.c等 源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的 子程序文件。 -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。 -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。 -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。 -Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在 预编译过程中使用的参数。C程序中的头文件包含两种情况∶ A)#include <myinc.h> B)#include “myinc.h” 其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类, 预处理程序cpp在系统预设包含 文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在 目标文件的文件夹内搜索相应文件。基本规则
gcc所遵循的部分约定规则: .c为后缀的文件,C语言 源代码文件; .a为后缀的文件,是由 目标文件构成的档案库文件; .C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过 预处理; .h为后缀的文件,是程序所包含的头文件; .i 为后缀的文件,是C源代码文件且不应该对其执行预处理; .ii为后缀的文件,是C++源代码文件且不应该对其执行预处理; .m为后缀的文件,是Objective-C源代码文件; .o为后缀的文件,是 编译后的目标文件; .s为后缀的文件,是 汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。