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的主要内容,如果未能解决你的问题,请参考以下文章