一、简介
GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译;
二、基本用法
gcc [options] [filenames]
options:编译器所需要的编译选项
filenames:要编译的文件名
-o output_filename:确定可执行文件的名称
为output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-c:只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件
-g:产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。
-O: 对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
1. gcc optimize.c -o optimize
time ./optimize
2. gcc –O optimize.c -o optimize
time ./optimize
对比两次执行的输出结果不难看出,程序的性能的确得到了很大幅度的改善
-Idirname: 将dirname所指出的目录加入到程序头文件目录列表中
-Ldirname:将dirname所指出的目录加入到库文件的目录列表中-lname:在连接时装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。
例如,-lm表示连接名为“libm.a”的数学函数库
-static:静态链接库文件