GCC使用手册

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GCC使用手册

1前言

GCC编译器的手册(GCC MANUAL)的英文版已经非常全面,并且结构也非常完善了,只是一直都没有中文的版本,我这次阅读了GCC编译器的主要内容,对手册的内容进行了结构性的了解,认为有必要对这次阅读的内容进行整理,为以后的工作做准备。

由于我对这个英文手册的阅读也仅仅是结构性的。因此有很多地方并没有看,所以这篇文档的内容我也只能写出部分,对于以后需要详细了解的地方,会再往这篇文档中增添内容,需要增添的内容主要是编译器的各种开关。

2GCC功能介绍

GCC编译器完成从C、C++、objective-C等源文件向运行在特定CPU硬件上的目标代码的转换(这是任何一个编译器需要完成的任务)。

GCC能够处理的源文件分为C、C++、Objective-C、汇编语言等。对于这些源文件,用他们的后缀名进行标示。GCC能够处理的后缀有:

a. *.c *.C (C语言)

b. *.cxx *.cc (C++语言)

c. *.m (面向对象的C)

d. *.i (预处理后的C语言源文件)

e. *.ii (预处理后的C++语言源文件)

f. *.s *.S (汇编语言)

h. *.h (头文件)

目标文件可以是:

a. *.o 编译连接后的目标文件

b. *.a 库文件

编译器把编译生成目标代码的任务分为以下4步:

a.预处理,把预处理命令扫描处理完毕;

b.编译,把预处理后的结果编译成汇编或者目标模块;

c.汇编,把编译出来的结果汇编成具体CPU上的目标代码模块;

d.连接,把多个目标代码模块连接生成一个大的目标模块;

3GCC开关

GCC的运行开关共分为11类,这是类开关从11个方面控制着GCC程序的运行,以达到特定的编译目的。

3.1 全局开关(OVERALL OPTIONS)

全局开关用来控制在“GCC功能介绍”中的GCC的4个步骤的运行,在缺省的情况下,这4个步骤都是要执行的,但是当给定一些全局开关后,这些步骤就会在某一步停止执行,这产生中间结果,例如可能你只是需要中间生成的预处理的结果或者是汇编文件(比如拟的目的是为了看某个CPU上的汇编语言怎么写)。

3.1.1–x language

对于源文件是用什么语言编写的,可以通过文件名的后缀来标示,也可以用这开关。指定输入文件是什么语言编写的,language 可以是如下的内容

a. c

b. objective-c

c. c-header

d. c++

e.cpp-output

f.assembler

g.assembler-with-cpp

3.1.2–x none

把上一节介绍的-x开关都给关掉了。

3.1.3–c

编译成把源文件目标代码,不做连接的动作。

3.1.4–S

把源文件编译成汇编代码,不做汇编和连接的动作。

3.1.5–E

只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作。

3.1.6–o file

指明输出文件名是file。

3.1.7–v

把整个编译过程的输出信息都给打印出来。

3.1.8–pipe

由于gcc的工作分为好几步才完成,所以需要在过程中生成临时文件,使用-pipe就是用管道替换临时文件。

3.2 语言相关开关(Language Options)

用来处理和语言相关的控制开关。

3.2.1–ansi

这个开关让GCC编译器把所有的gnu的编译器特性都给关掉,让你的程序可以和ansi标准兼容。

除了以上的开关外,语言相关开关还有很多,如果在以后的工作学习中遇到了再加不迟!3.3.预处理开关(Preprocessor Options)

3.3 用来控制预处理所设置的开关。

3.3.1–include file

在编译之前,把file包含进去,相当于在所有编译的源文件最前面加入了一个#include 语句,这样做更“省油”。

3.3.2–imacros file

同-include file 一样。不过这个文件在具体编译的时候只有里面定义的宏才起作用,所以值用来在file文件里面定义宏。

3.3.3–nostdinc

在搜寻include 的文件路径中去掉标准的c语言头文件搜索路径,例如stdio.h文件就是放在标准头文件搜索路径下。

3.3.4–nostdinc++

同上,只是去掉的是标准C++语言的头文件搜索路径。

3.3.5–C

同-E参数配合使用。让预处理后的结果,把注释保留,让人能够比较好读它。

3.3.6–Dmacro

把macro定义为字符串’1’。

3.3.7–Dmacro = defn

把macro定义为defn。

3.3.8–Umacro

把对macro的定义取消。

除了以上的开关外,预处理相关开关还有很多,如果在以后的工作学习中遇到了再加不迟!

3.4 汇编开关(Assembler Option)

用来控制汇编行为的开关。

3.4.1–Wa , option

把option作为开关送给汇编程序。如果option里面有逗号,则作为好几行进行处理。

3.5 连接开关(Linker Options)

用来控制连接过程的开关选项。

3.5.1object-file-name

3.5.2–llibrary

连接库文件开关。例如-lugl,则是把程序同libugl.a文件进行连接。

3.5.3–lobjc

这个开关用在面向对象的C语言文件的库文件处理中。

3.5.4–nostartfiles

在连接的时候不把系统相关的启动代码连接进来。

3.5.5–nostdlib

在连接的时候不把系统相关的启动文件和系统相关的库连接进来。

3.5.6–static

在一些系统上支持动态连接,这个开关则不允许动态连接。

3.5.7–shared

生成可共享的被其他程序连接的目标模块。

相关文档
最新文档