linux GCC命令

来源:互联网 发布:mac个人收藏添加桌面 编辑:程序博客网 时间:2024/05/18 00:00

GCC编程

linux 系统下的GCCGNU推出的功能强大、性能优越的平台编译器,是GNU的代表作之一。

GCC编译器能将CC++语言源程序、汇编程序编译、连接成可执行文件,在linux系统中,可执行文件没有后缀,系统从文件的属性来区分可执行文件和不可执行文件。

使用GCC编译程序时,编译过程可以分为四个阶段:

 *预处理(pre-processing)   -E

*编译(compiling)      -S

*汇编(assembling)    -c

*连接(lingking)

GCC通过后缀来区别输入文件的类别:

*.c ------- C语言源代码文件

*.a-------:   是由目标文件构成的库文件

*.C,.cc.cxx-----:  C++元代码文件

*.h------:    头文件

*.i------:  是已经与处理过的C源代码文件

*.ii----- 是已经处理过的C++源代码文件

*.o-----:   是编译后的目标文件

*.s-----:   是汇编语言源代码文件

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

基本用法

gcc最基本的用法是::

       gcc [options] filename

options  编译器所需要的编辑选项

filename 要编译的文件名


gcc编译器中最常用的参数有

* -o output_filename :  确定可执行文件的名称为output_filename.如果不给出这个选项,gcc就给出预设的可执行文件a.out

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

*-g :产生调试工具(GNUgdb)所必须的符号信息,要相对编译出的程序进行调试,就必须加入这个.3选项。

*-o : 对程序进行优化编译、连接,采用这个选项,整个代码会在编译、连接过程中进行优化处理,这样产生的课执行效率可以更高,但是时间就要花费更多。

*-o2 : -o更好的优化编译、连接,当然整个编译、连接过程会更慢。

例程:optimize.c

输入:gcc optimize.c –o optimize

     ./optimize

   即可得到运行结果,

   再运行gcc –O optimize.c –o optimize 程序性能会得到大幅度的改善。

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

 #include

#include”B.h”

    对于<> 预处理程序cpp在系统预设的头文件目录中搜寻文件;

   对于“” cpp在当前目录中搜寻头文件,若在当前目录中没有找到需要的头文件,则 就到指定的dirname中去寻找。

Idirname:dirname所指的目录加入到程序头文件目录列表中,

例:::

    gcc foo.c –I/home/include –o foo

Ldirname :  dirname所指出的目录加入到库文件的目录列表中。在默认的状态下,连接程序ld在系统的预设路径中需找需要的库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后再找到系统预设的路径中寻找。

-L:将指定的目录加入到库文件的目录列表中

-l:在连接时,装载函数库

-Static:静态链接库文件        库有动态与静态两种,动态用.so静态用.a,默认动态

-Wall : 生成所有警告信息

-w :   不生成任何告警信息。

-DMACRO  定义MACRO宏,等效于程序中使用#define MACRO