(1)GCC简介
Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大性能优越的多平台编译器,是GNU的代表作之一。GCC可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。
GCC编译器能将C,C++语言源程序、汇编程序编译、链接成可执行文件。
使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理、编译、汇编、链接。
(2)基本用法
GCC最基本的用法是:
gcc [options] [filenames]
options:编译器所需要的编译选项
filenames:要编译的文件名
(3)最常用的参数
-o output_filename:确定可执行文件的名称为output_filename.如果不给出这个选项,gcc就给出预设的可执行文件a.out.
-c 只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。
-g 产生调试工具(GNU的gdb)所必要的符号信息,想要对编译出的程序进行调试,就必须加这个选项
-O(大写字母)对程序进行优化编译,链接,采用这个选项,整个源代码会在编译链接过程中进行优化处理,这样产生的可执行文件效率可以提高。但是,编译,链接的速度就相应地要慢些
-O2 比-O更好的优化编译链接,整个编译、链接会变慢
-I dirname 将dirname所指出的目录加入到程序头文件目录列表中。
gcc file.c -I/home/include -o file 将目录/home/include加入到程序的头文件列表中
注:C程序中的头文件存在两种:#include <stdio.h> #include "cpp.h",对于<>,预处理程序cpp在系统预设的头文件目录中搜寻相应的文件;而对于“ ”,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。
-Ldirname:将dirname所指出的目录加入到库文件的目录列表中,在默认状态下,连接程序在系统中预设的路径中寻找所需要的库文件(如usr/lib)而这个选项告诉程序,首先到-L指定的目录下寻找,然后在到系统预设的路径中寻找。
-lname:在连接时,装载名字为libname.a的函数库,该函数库位于系统预设的目录或者有-L选项指定的目录下。例如:-lm表示连接名为libm.a的数字函数库。
例:gcc file.c -L/home/lib -la -o file 在L指定的目录下装载liba.a的函数库
-static :静态连接库文件
-wall 生成所有警告信息
-D MACRO 定义MACRO宏,等效于在程序中使用# define MACRO