gcc

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc相关的知识,希望对你有一定的参考价值。

By francis_hao    Feb 9,2017

概要

这里只列出了最常用的选项

技术分享

选项解释

-c|-S|-E

启动gcc编译器时,它会顺序执行预处理、编译、汇编和连接(四个阶段的详细介绍见【参考1】)。这几个选项可以指定gcc停止位置。

-c    程序不执行连接阶段,生成.o目标文件

-S    程序不执行汇编阶段,生成汇编格式.s的文件(编译阶段即将源文件编译成汇编格式文件)

-E    程序不执行编译阶段,生成预处理过的源文件

 

-std=standard

指定语言标准,目前只支持c和c++。

standard可能的取值如下

c89

iso9899:1990

iso9899:199409

c99

c9x

iso9899:1999

iso9899:199x

gnu89 (This is the default for C code)

gnu99

gnu9x

其中-std=c89和-ansi在c语言中等价,-std=c++98和-ansi在c++中等价

 

-g

产生调试信息,以便GDB调试。

 

-pg

生成额外的程序,用于记录程序运行的相关信息,以便为分析程序gprof使用。gprof的使用见【参考2】。需要注意的是,你必须在编译你想生成运行信息的程序的源文件时使用该选项,同时在连接时也要使用该选项。

 

-Olevel

优化等级,分别有O0、O1、O2、O3和Os五个等级。其中默认的优化等级是O0,推荐的优化等级是O2。更详细的信息见man手册

 

-Wwarn...

-Wall        打开所有的警告

-Werror        将警告以错误来处理

 

-pedantic

对所有不符合ISO C和ISO C++标准的代码发出警告。

 

-Idir...

将dir添加到搜索头文件的目录列表中,-I指定的目录优先于标准的系统头文件目录。如果dir以"="开始,"="会被sysroot前缀替换掉。see --sysroot and -isysroot

 

-llibrary

连接时搜索library库,需要注意的是,连接时会按照其出现的顺序来进行,需要注意库之间的依赖关系。搜索时实际搜索的名字是liblibrary.a

 

-Ldir...

为-l添加搜索路径。

 

 

-Dmacro[=defn]...

有两种形式

-Dmacro:等同于#define macro 1

-Dmacro=defn:等同于#define macro defn

 

-Umacro

取消之前的macro的宏定义,不管是程序里的还是-D指定的。

 

-mmachine-option...

-f和-m很少用到,-m可能的用法如下:

-mcpu=cpu -mtext=text-section -mdata=data-section -mrodata=readonly-data-section

 

-o outfile

将输出文件指定为outfile,outfile可能是可执行文件、汇编文件或与处理过的源文件。如果-o没有被指定,默认输出的可执行文件为a.out,如果源文件为source.suffix,那么默认的目标文件名是source.o,汇编文件名是source.s,

 

@file

从文件file中读取选项,文件种的选项以空格分隔。(几乎用不上),

 

infile...

正如其字面意思,输入文件,可以有多个。

 

路径搜索

 

 

 

 

 

 

 

 

 

 

 

 

 

 

技术分享
本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/6384452.html

 

 

参考

【1】Randal E.Bryant David R.O‘Hallaron著 龚奕利 雷迎春 译 《深入理解计算机系统》北京:机械工业出版社,2011

【2】CSDN http://blog.csdn.net/stanjiang2010/article/details/5655143 Linux性能评测工具—gprog篇

 

 

 

 

 



以上是关于gcc的主要内容,如果未能解决你的问题,请参考以下文章

Mac OSX 上的 GCC——多个版本的 gcc

mingw和gcc的关系?mingw具有gcc的全部核心编译功能吗

gcc 和 g++/gcc-c++ 有啥区别?

ubuntu系统下怎么安装gcc编译器

GCC:在 GCC 版本之间伪装

arm gcc 内嵌汇编,gcc该是啥选项呢