GCC编译选项参数介绍
gcc和g++分别是gnu的c和c++编译器,下面是整理的常用编译选项参数:
#(1). -x: 设定文件所使用的语言,使文件后缀名无效,如下,执行完后生成test.o
gcc -c -x c++ test.jpg
#(2). -c: 只编译生成目标文件即*.o,只编译不链接生成可执行文件,如下,执行完后生成test.o
gcc -c test.cpp
#(3). -S: 把文件编译成为汇编源文件,如下,执行完后生成test.s
gcc -S test.cpp
#(4). -o: 指定生成的可执行文件,输出文件名称,gcc编译出来的文件缺省的是a.out,如下,执行完后生成test执行文件
gcc -o test -c test.cpp
#(5). -ansi: 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof关键字,以及UNIX,vax等预处理宏),仅支持ANSI标准的C语法,如下
gcc -ansi -c test.cpp
#(6). -fno-asm: 禁止将asm,inline和typeof用作关键字,如下
gcc -fno-asm -c test.cpp
#(7). -funsigned-char或-fno-signed-char: 对char类型进行设置,将char类型设置成unsigned char,如下
gcc -funsigned-char -c test.cpp
gcc -fno-signed-char -c test.cpp
#(8). -fsigned-char或-fno-unsigned-char: 对char类型进行设置,将char类型设置成signed char,如下
gcc -fsigned-char -c test.cpp
gcc -fno-unsigned-char -c test.cpp
#(9). -include file_name: 在编译test.cpp文件需要aa.hpp文件的时候使用,而此时test.cpp文件中并没有#include "../aa.hpp",相当于在代码中使用#include "../aa.hpp",如下
gcc -c test.cpp -include ../aa.hpp
#(10). -Dmacro_name: 相当于C语言中的#define macro_name,如下
gcc -DTEST_MAIN -c test.cpp
#(11). -Dmacro_name=value: 相当于C语言中的#define macro_name value,如下
gcc -DTEST_MAIN=2 -c test.cpp
#(12). -Umacro_name: 相当于C语言中的#undef macro_name,如下
gcc -Umax -c test.cpp
#(13). -Idir_name: 在test.cpp文件中#include "aa.hpp"文件,而aa.hpp又没有和test.cpp在同一目录下时使用,gcc/g++会到-I指定的目录下查找,即指定额外的头文件搜索路径,如下
gcc -c test.cpp -I../
#(14). -dirafter dir_name: 如果-I指定的目录查找失败,将到这个目录里查找,如下
gcc -c test.cpp -I../../ -idirafter ../
#(15). -nostdinc: 使编译器不再系统缺省的目录里查找头文件,一般和-I一起使用,明确限定头文件的位置
gcc -c test.cpp -I../ -nostdinc
#(16). -C: 在预处理的时候,不删除注释信息,如下
gcc -C -c test.cpp -I../
#(17). -M: 生成文件关联信息,目标文件依赖的所有文件,如下
gcc -M -c test.cpp -I../
#(18). -MM: 生成文件关联信息,与-M相似,但是它将忽略由#include <file>造成的依赖关系,如下
gcc -MM -c test.cpp -I../
#(19). -Wa,option: 此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序
#(20). -Wl.option: 此选项传递option给链接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会链接程序
#(21). -llibrary_name: 指定链接时搜索指定的库,如下
gcc -c test.cpp -I../ -lpthread
#(22). -Ldir: 指定额外的库搜索路径,如下
gcc -c test.cpp -I../ -L../
#(23). -O0或-O1或-O2或-O3:编译器优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高,如下
gcc -O3 -c test.cpp -I../ -L../
#(24). -g: 指示编译器在编译的时候产生调试信息,如下
gcc -O3 -g -c test.cpp -I../ -L../
#(25). -gstabs: 此选项以stabs格式生成调试信息,但是不包括gdb调试信息,如下
gcc -O3 -gstabs -c test.cpp -I../ -L../
#(26). -gstabs+: 此选项以stabs格式生成调试信息,并且包含仅供gdb使用的额外调试信息,如下
gcc -O3 -gstabs+ -c test.cpp -I../ -L../
#(27). -ggdb: 此选项将尽可能的生成gdb可以使用的调试信息,如下
gcc -O3 -ggdb -c test.cpp -I../ -L../
#(28). -static: 此选项将禁止使用动态库,一般编译出来的文件比较大,不需要什么动态链接库就可以运行,如下
cc -static -o test -c test.cpp -I../
#(29). -shared: 此选项将尽可能使用动态库,一般编译出来的文件比较小,如下
gcc -shared -o test -c test.cpp -I../
#(30). -tradional: 试图让编译器支持传统的C语言特性,如下
gcc -traditional -o test -c test.cpp -I../
#(31). -E: 预编译后停下来,生成后缀为*.i的预编译文件,如下
gcc -E -o test.i test.cpp -I../
#(32). -w: 不生成任何警告信息,如下
gcc -w -o test -c test.cpp -I../
#(33). -Wall: 生成所有警告信息,如下
gcc -Wall -o test -c test.cpp -I../
#(34). -pedantic: 当gcc在编译不符合ANSI/ISO C语言标准的源代码时,将产生相应的警告信息,如下
gcc -pedantic -o test test.cpp
#(35). -Werror: 要求gcc将所有的警告信息当成错误进行处理,如下
gcc -Werror -o test test.cpp
#(36). -Wcast-align: 当源程序中地址不需要对齐的指针指向一个地址需要对齐的变量地址时则产生一个警告,如下
gcc -Wcast-align -o test test.cpp
#(37). -p或-pg: 会将剖析(profiling)信息加入到最终生成的二进制文件中,剖析信息对于找出程序的性能瓶颈很有帮助,如下
gcc -p -o test test.cpp
gcc -pg -o test test.cpp
#(38). -save-temps: 保存编译过程中生成的一些中间文件,如test.s, test.ii,如下
gcc -save-temps -o test test.cpp
#(40). -pipe: 使用管道代替编译中临时文件,如下
gcc -pipe -o test test.cpp
#(41). -ftime-report: 统计编译消耗的时间并显示报告,如下
gcc -ftime-report -o test test.cpp
#(42). -fmem-report: 显示所有的静态内存分配,如下
gcc -fmem-report -o test test.cpp
#(43). -march: 指定目标架构选项,如下
gcc -march=native -Q --help=target | grep march
#(44). -fpic或-fPIC: 如果支持目标机,编译器就生成位置无关目标码,适用于共享库,如下
gcc -fpic -o test test.cpp
#(45). -fno-rtti: 禁用运行时类型信息,如下
gcc -fno-rtti -o test test.cpp
#(46). -fno-exceptions: 禁用异常机制,如下
gcc -fno-exceptions -o test test.cpp
更详细的GCC编译选项参数介绍可以参考官网: https://gcc.gnu.org/onlinedocs/gcc/
GitHub: https://github.com/fengbingchun/Linux_Code_Test
相关文章:

程序员自学到底有没有用?网友们吵翻了...
最近就有个程序员吐槽说,自己大学没怎么听老师讲课,老师讲的知识要么太旧,要么老师不会讲,自己大部分时间是在网上看视频学的。引发了以下激烈的讨论。很多网友觉得,学校老师的代码能力不行,现在技术更新又…

更新 FrameWork
这里把想要改变的东西封装到FrameWork以便实现热更新,提一下关于BundiD 一定要一致,在打包的时候一定在Edit scheme —— >Run 选择Release如图: 因为你要跑在真机上,所以这个要选择Release 另外将包含你想要放出的方法类添加…

把Illustrator矢量图转化为代码:Drawscript
2019独角兽企业重金招聘Python工程师标准>>> DrawScript是一款Illustrator插件,可以将Illustrator的矢量图片转换成代码,目前免费,支持转换的语言有 OBJ-CCJAVASCRIPTCREATEJS/EASELJSPROCESSINGACTIONSCRIPT 3JSONRAW BEZIER PO…

必读:ICLR 2020 的50篇推荐阅读论文
来源 | 香侬科技本文整理了ICLR2020的相关论文,此次分享的是从Openreview中选取的部分论文,共50篇,其中大部分为NLP相关。文中涉及的相关论文推荐指数与推荐理由仅为个人观点,利益无关,亦不代表香侬科技立场。希望大家…

14个Xcode中常用的快捷键操作
在Xcode 6中有许多快捷键的设定可以使得你的编程工作更为高效,对于在代码文件中快速导航、定位Bug以及新增应用特性都是极有效的。 当然,你戳进这篇文章的目的也在于想要快速的对代码文件进行操作,或者是让Xcode的各面板更为适应你小本子的屏…

C++中标准模板库std::pair的实现
以下用C实现了标准模板库中的std::pair实现,参考了 cplusplus 和 vs2013中的utility文件。关于std::pair的介绍和用法可以参考: https://blog.csdn.net/fengbingchun/article/details/52205149 实现代码pair.hpp如下: #ifndef FBC_STL_PAIR_H…

【人在职场】能力与价值
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yunli.blog.51cto.com/831344/1547051 最近给团队(指#UC浏览器电脑版#开发团队)分享了我的《基层技术管理原则》。…
Windows与Linux之间互传文件的方法
以下方法均是以Windows为操作机:1. 通过WinSCP:WinSCP是一款开源的SFTP客户端,运行于Windows系统下,遵照GPL发布。WinSCP除了SFTP,还支持SSH、SCP(SecureCopy Protocol)。WinSCP的开发始于2000年4月,由布拉格经济大学所…

一文读懂简化的图卷积网络GCN(SGC)| ICML 2019
作者 | yyl424525来源 | CSDN博客文章目录1 相关介绍1.1 Simple Graph Convolution (SGC)提出的背景1.2 SGC效果2 Simple Graph Convolution 简化的图卷积2.1 符号定义2.2 图卷积网络GCNGCN vs MLPFeature propagation 特征传播Feature transformation and nonlinear transitio…

iOS UITableViewCell重用问题
TableView的重用机制,为了做到显示和数据分离,iOS tableView的实现并且不是为每个数据项创建一个tableCell。而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell,对cell做单独的显示配置,来达到既不影响显示效果…

NLP常用工具
为什么80%的码农都做不了架构师?>>> NLP常用工具 各种工具包的有效利用可以使研究者事半功倍。 以下是NLP版版友们提供整理的NLP研究工具包。 同时欢迎大家提供更多更好用的工具包,造福国内的NLP研究。 *NLP Toolbox CLT http://compl…

Swift快速入门之getter 和 setter
属性可以用getter和setter方法的形式提供。 <code class"hljs lasso has-numbering" style"display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: Source Code Pro, monospace;font-size:u…

Linux下getopt函数的使用
getopt为解析命令行参数函数,它是Linux C库函数。使用此函数需要包含系统头文件unistd.h。 getopt函数声明如下: int getopt(int argc, char * const argv[], const char * optstring); 其中函数的argc和argv参数通常直接从main的参数直接传递而来。o…

20行Python代码说清“量子霸权”
作者 | 马超 来源 | 程序人生(ID:coder_life)近日谷歌的有关量子霸权(Quantum Supremacy)的论文登上了Nature杂志150年刊的封面位置,而再次罢占各大媒体的头条位置,其实这篇文章之前曾经短暂上过NASA的网站…

Android组件系列----BroadcastReceiver广播接收器
【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3960623.html 【正文】 一、广播的功能和特征 广播的生命周期很短,经过调用对象-->…

Swift 代码调试-善用XCode工具(UI调试,五种断点,预览UIImage...)
原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmodelist 我的stackoverflow 工欲善其事,必先利其器,强烈建议新手同学好好研究下XCode这个工具。比如Build Settings,Build Info Rules,Build Parse…

Linux下getopt_long函数的使用
getopt_long为解析命令行参数函数,它是Linux C库函数。使用此函数需要包含系统头文件getopt.h。 getopt_long函数声明如下: int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);…

Expect自动化控制简单介绍
telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用…

C++中标准模板库std::vector的实现
以下实现了C标准模板库std::vector的部分实现,参考了 cplusplus. 关于C中标准模板库std::vector的介绍和用法可以参考 https://blog.csdn.net/fengbingchun/article/details/51510916 实现代码vector.hpp内容如下: #ifndef FBC_STL_VECTOR_HPP_ #defi…
Swift学习 OOP三大特性:继承、多态、封装
先看个例子 从上面的例子可以总结那么一句话:”学生是人”。也就是Student类继承People类。简而言之,学生是人,这句话是说得通的,但是”人是学生”这句话是说不通的,不是学生就不是人了嘛? 从代码中,我们可以看出S…

5折票倒计时3天 | 超干货议程首度曝光!2019 中国大数据技术大会邀您共赴
(大会官网https://t.csdnimg.cn/U1wA)2019年,大数据与人工智能的热度已经蔓延到了各个领域,智能交通、AIoT、智慧城市,智慧物流、AI中台、工业制造等各种黑科技成为热搜名词。而在今年的乌镇互联网大会上,大…

mysql select * f
mysql> select * from tb;-------------| id | name |-------------| 1 | tbone || 3 | 2d2 || 5 | 55 || 6 | 66 |-------------4 rows in set (0.00 sec)转载于:https://www.cnblogs.com/bashala/p/3974088.html

C++/C++11中用于定义类型别名的两种方法:typedef和using
类型别名(type alias)是一个名字,它是某种类型的同义词。使用类型别名有很多好处,它让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的。在C中,任何有效类型都可以有别名。 有两种方法…
iOS学习笔记--01swift实现提示框第三方库:MBProgressHUD
本文使用swift语言使用MBProgressHUD。 开源项目MBProgressHUD可以实现多种形式的提示框。使用简单,方便。GitHud的下载地址是:https://github.com/jdg/MBProgressHUD/ 下载完成后,将MBProgressHUD.h和MBProgressHUD.m拖入已经新建好的Swift项…

2019北京智源大会在京开幕, 中外学术大咖共话人工智能研究前沿
10月31日,由北京智源人工智能研究院主办的2019北京智源大会在国家会议中心开幕,会期两天。智源大会是北京创建全球人工智能学术和创新最优生态的标志性学术活动,定位于“内行的AI盛会”,以国际性、权威性、专业性和前瞻性为特色&a…

linux中登录类型及配置文件
linux中登录shell的类型1.交互式登录:直接通过终端输入用户信息登录1)login:2)在shell中 su - usernamesu -l username2.非交互式登录1)su username2)图形界面的终端3)执行脚本的过程用户配置文…

Swift项目引入第三方库的方法
分类:iOS(55) 目录(?)[] Swift项目引入第三方库的方法 转自 http://blog.shiqichan.com/How-To-Import-3rd-Lib-Into-Swift-Project/ 以下,将创建一个Swift项目,然后引入3个库: Snappy 简化autolayout代码…

最新NLP架构的直观解释:多任务学习– ERNIE 2.0(附链接)| CSDN博文精选
作者 | Michael Ye翻译 | 陈雨琳,校对 | 吴金笛来源 | 数据派THU(ID:DatapiTHU)百度于今年早些时候发布了其最新的NLP架构ERNIE 2.0,在GLUE基准测试中的所有任务上得分均远高于XLNet和BERT。NLP的这一重大突破利用了一…

C++中的内存对齐介绍
网上有很多介绍字节对齐或数据对齐或内存对齐的文章,虽然名字不一样,但是介绍的内容大致都是相同的。这里以内存对齐相称。注:以下内容主要来自网络。 内存对齐,通常也称为数据对齐,是计算机对数据类型合法地址做出了…

__cplusplus的用处
经常在/usr/include目录下看到这种字句: #ifdef __cplusplus extern "C" { #endif ... #ifdef __cplusplus } #endif 不太明白是怎么用的。今天阅读autobook,在第53页看到了作者的解释:C/C编译器对函数和变量名的命名方法不一样…