1)GCC编译器能将C、C++语言源程序、汇编语言编译、链接成可执行文件。
2)GCC通过后缀名来区分输入文件的类别:
.c为后缀:C语言源代码文件
.a为后缀:由目标文件构成的库文件
.C,.cc或.cxx为后缀:C++源代码文件
.h为后缀:头文件
.i为后缀:已经预处理过的C源代码文件
.ii为后缀:已经预处理过的C++源代码文件
.o为后缀:编译后的目标文件
.s为后缀:汇编语言源代码文件
.S为后缀:经过预编译的汇编语言源代码
3)gcc最基本的用法:
gcc [options] [filenames]
options:编译所需要的编译选项
filenames:要编译的文件名
4)基本、常用的编译选项:
-o output_filename :确定可执行文件的名称为output_filename。如果不 给出该选项,gcc就给出预设的可执行文件a.out
-c :只编译,不连接成可执行文件,编译器只是由输入的.c等源文件生成.
为后缀的目标文件
-g :产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序
行调试,就必须加入这个选项
-O :对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链
接过程中进行优化处理。这样产生的可执行文件的执行效率可以提高,
但是编译、链接速度就相应变慢
-O2 :比-O更好的优化编译、链接,当然编译、链接过程更慢。注意,可测
试运行可执行文件的运行时间,要显示运行时间是在执行命令前加tim
即可,如: time ./a.out 表示运行a.out,同时显示运行时间
-Idirname :将dirname所指出的目录加入到程序头文件目录列表中。例:
gcc foo.c -I/home/include -o foo
-Ldirname :将dirname所指出的目录加入到库文件的目录列表中。在默认状
态下,链接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文
件,这个选项告诉链接程序,首先到-L指定的目录中去寻找,然后再到
系统预设路径中寻找
-lname :在链接时,装载名字为“libname.a”的函数库,该函数库位于系 统预设的目录或者由-L选项确定的目录下,例如,-lm表示链接名为
“libm.a”的数学函数库。例:
gcc foo.c -L/home/lib -lfoo -o foo
-static :静态链接库文件,如: gcc -static hello.c -o hello。库
动态与静态两种,动态库常用.so为后缀,静态用.a为后缀。linux下进
链接的缺省操作是首先链接动态库。
-Wall :生成所有警告信息
-w :不生成任何警告信息
-DMACRO :定义MACRO宏,等效于程序中使用#define MACRO
2)GCC通过后缀名来区分输入文件的类别:
.c为后缀:C语言源代码文件
.a为后缀:由目标文件构成的库文件
.C,.cc或.cxx为后缀:C++源代码文件
.h为后缀:头文件
.i为后缀:已经预处理过的C源代码文件
.ii为后缀:已经预处理过的C++源代码文件
.o为后缀:编译后的目标文件
.s为后缀:汇编语言源代码文件
.S为后缀:经过预编译的汇编语言源代码
3)gcc最基本的用法:
gcc [options] [filenames]
options:编译所需要的编译选项
filenames:要编译的文件名
4)基本、常用的编译选项:
-o output_filename :确定可执行文件的名称为output_filename。如果不 给出该选项,gcc就给出预设的可执行文件a.out
-c :只编译,不连接成可执行文件,编译器只是由输入的.c等源文件生成.
为后缀的目标文件
-g :产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序
行调试,就必须加入这个选项
-O :对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链
接过程中进行优化处理。这样产生的可执行文件的执行效率可以提高,
但是编译、链接速度就相应变慢
-O2 :比-O更好的优化编译、链接,当然编译、链接过程更慢。注意,可测
试运行可执行文件的运行时间,要显示运行时间是在执行命令前加tim
即可,如: time ./a.out 表示运行a.out,同时显示运行时间
-Idirname :将dirname所指出的目录加入到程序头文件目录列表中。例:
gcc foo.c -I/home/include -o foo
-Ldirname :将dirname所指出的目录加入到库文件的目录列表中。在默认状
态下,链接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文
件,这个选项告诉链接程序,首先到-L指定的目录中去寻找,然后再到
系统预设路径中寻找
-lname :在链接时,装载名字为“libname.a”的函数库,该函数库位于系 统预设的目录或者由-L选项确定的目录下,例如,-lm表示链接名为
“libm.a”的数学函数库。例:
gcc foo.c -L/home/lib -lfoo -o foo
-static :静态链接库文件,如: gcc -static hello.c -o hello。库
动态与静态两种,动态库常用.so为后缀,静态用.a为后缀。linux下进
链接的缺省操作是首先链接动态库。
-Wall :生成所有警告信息
-w :不生成任何警告信息
-DMACRO :定义MACRO宏,等效于程序中使用#define MACRO