linux_c 网络开发日记(2)GCC简介

DAY2 GCC简介

       linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大,性能优越的多平台编译器,其效率与一般的编译器相比较平均效率要高20% 到30%)。
GCC编译器能将C C++语言源程序,汇编程序编译,链接成可执行文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件属性来区分可执行文件和不可执行文件。

使用GCC编译程序时,编译过程可以被细分为四个阶段:
1:预处理(宏展开)
2:编译
3:汇编
4:链接

GCC通过后缀来区分输入文件的类别:
.c:c语言源代码文件
.a:由目标文件构成的库文件
.C,.cc或.cxx:C++源代码文件
.h:头文件
.i :已预处理过得C源代码文件
.ii:已预处理过得C++源代码文件
.o:编译后的目标文件
.s:汇编语言源代码文件
.S:经过预编译的汇编语言源代码文件

gcc基本用法

gcc [options] [filenames]
options:编译选项
filenames:编译的文件名


-o :确定可执行文件名,如果不给出这个选项,就默认为a.out
-c :只编译,不连接成可执行文件
-g :生成调试工具(GNU的gdb)所必要的符号信息
-O(-O2):优化编译、链接。
-Idirname:将dirname所指出的目录加入到程序头文件目录列表中。
c程序的头文件包含两种情况:
#include<A.h>
#include"B.h"
对于<>,预处理程序cpp在系统预设的头文件目录(如/usr/include)中搜寻相应的文件;而对于“”,cpp在当前目录中寻找头文件,如果当前目录没有找到文件,则在指定的dirname中去寻找。
-Ldirname :将dirname所指出的目录加入到库文件目录中。在默认状态下,链接程序Id在系统的预设路径中(如/usr/lib)寻找缩需要的库文件,这个选项告诉连接程序,首先找到-L指定的目录中寻找。然后再去系统预设路径中寻找。
-lname:在连接时,装载名字为“libname.a”的函数库。例如,-lm表示链接名为“libm.a”的数学函数库。
-static:静态链接库文件。由于动态库节省内存,linux下进行链接的缺省操作是首先链接动态库的,



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章