000编程基础----GCC程序编译

GNU C Compiler 多平台编译器,是GNU的代表作之一。

GCC编译器可以编译链接C\C++\汇编成可执行文件,可执行文件没特殊后缀,看属性。

预处理 编译 汇编 链接

Gcc通过后缀来区分不同类型文件

.c C语言源代码文件

.a库文件 由目标文件构成的库文件

.C .cc .cxx C++源代码文件

.h 头文件

.i 已经预处理过的C源代码文件

.ii 已经预处理过的C++源代码文件

.o 编译后的目标文件

.s 汇编语言源代码文件

.S 经过预编译的汇编语言源代码文件

预处理:把宏展开

-o 指定输出的可执行文件的文件名,如果没有,则默认输出文件名字为:a.out。 gcc hello.c -o hello

-c 只编译,不连接成为可执行文件,编译器只是由输入的.c等源文件代码,生成.o为后缀的目标文件。 gcc -c hello.c

-g产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。 gcc -g hello.c -o hello

-O -O2:对程序进行优化,后面的优化程度更深。

gcc optimize.c -o optimize

time ./optimize

gcc -O optimize.c -o optimize

time ./optimize

对比两种,优化后,明显变好。

-Idirname:将dirname所指出的目录加入到程序头文件目录列表中。

C程序中的头文件包含两种情况:

#include <A.h>

#include "B.h"

对于<>,预处理程序cpp在系统预设的头文件目录(/usr/include)中搜寻相应的文件;

对于“”,cpp在当前目录中搜寻头文件。如果在当前目录中没有找到需要的文件,就到指定的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 :静态连接库文件

默认是动态链接。

编译选项:

-Wall :生成所有警告信息

-w :   不生成任何警告

-DMACRO:-DYES:相当于在程序中使用#define YES

#include <stdio.h>

//#define YES

void main()

{

#ifdef YES

  printf("hello");

#endif

}

运行命令:

gcc -DYES hello.c -o hello

./hello

则,可以输出hello。

posted @ 2014-07-11 11:17  liu_ty10  阅读(226)  评论(0编辑  收藏  举报