gcc

1. gcc: 全名 GNU C Compiler

gcc编译器 能将C, C++, 汇编程序编译,链接成可执行文件。

在linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

2. gcc编译程序时,编译过程可以被细分为4个阶段:

a.预处理(pre-processing)
b.编译(Compling)
c.汇编(Assembling)
d.链接(Linking)

3.gcc通过后缀来区别输入文件的类型:

.c ----C语言源代码文件
.a ---- 是由目标文件构成的库文件
.C 或 .cc 或 .cxx ---- C++源代码文件
.h ---- 头文件
.i ---- 已经与处理过的C源代码文件
.ii ---- 已经与处理过的C++源代码文件
.o ---- 编译后的目标文件
.s ---- 汇编语言源代码。
.S ---- 经过预编译的汇编语言源代码
 
4. gcc最基本用法:

gcc [options] [filenames]


gcc option 有100多个,
几个最基本,最常用的参数如下:

-o ---- output_filename

-c ---- 只编译,不链接成可执行文件,即把.c等源代码编译成.o的目标文件,但是不链接。

-g ---- 产生调试工具(GNU的gdb)所需要的符号信息,可以用来对编译出的程序进行调试。

-O ---- 优化编译,链接过程,产生的可执行文件执行效率更高,但是编译,链接速度要慢些

-O2 ---- 比O 更彻底的优化。

-Idirname ---- 用来查找执行头文件目录的参数。

-Ldirname ---- 将dirname所指的目录加入到库文件的目录列表中

-lname ----

-static ---- 静态链接库文件。

-Wall ---- 生成所有警告信息

-w ---- 不生成人和警告

-DMACRO: 相当于程序中的#define MACRO。


5. 链接 和 库 都有动态和静态两种:

静态链接:把程序和库合在一起,每个程序都会有拷贝库。
动态链接:不会把程序和库合在一起,会在运行时,去调用库中的一些函数。

库也有动态库合静态库:

动态库: .so 为后缀。
静态库: .a 为后缀。

 

补充:

a. $time ./optimize   ---- 用来计运行optimize所耗费的时间

b. $touch a.h   ---- 用来黏贴a.h文件


posted on 2013-01-28 16:56  疯子123  阅读(125)  评论(0编辑  收藏  举报

导航