GCC参数详解

     转自:http://www.cnblogs.com/fence/archive/2009/12/18/1627138.html  

    GCC参数详解

        gcc and g++分别是gnu的c & c++编译器


  gcc/g++在执行编译工作的时候,总共需要4步
  1.预处理,生成.i的文件[预处理器cpp]
  2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]
  3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
  4.连接目标代码,生成可执行程序[链接器ld]
  [参数详解]
  -x language filename
  设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根
  据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果
  你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这
  个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数
  的使用。
  可以使用的参数吗有下面的这些
  `c', `objective-c', `c-header', `c++', `cpp-output',
  `assembler', and `assembler-with-cpp'.
  看到英文,应该可以理解的。
  例子用法:
  gcc -x c hello.pig
  -x none filename
  关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型
  例子用法:
  gcc -x c hello.pig -x none hello2.c
  -c
  只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
  例子用法:
  gcc -c hello.c
  他将生成.o的obj文件
  -S
  只激活预处理和编译,就是指把文件编译成为汇编代码。
  例子用法
  gcc -S hello.c
  他将生成.s的汇编代码,你可以用文本编辑器察看
  -E
  只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里
  面.
  例子用法:
  gcc -E hello.c > pianoapan.txt
  gcc -E hello.c | more
  慢慢看吧,一个hello word 也要与处理成800行的代码
  -o
  制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果
  你和我有同感,改掉它,哈哈
  例子用法
  gcc -o hello.exe hello.c (哦,windows用习惯了)
  gcc -o hello.asm -S hello.c
  -pipe
  使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问
  题
  gcc -pipe -o hello.exe hello.c
  -ansi
  关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一
  些asm inline typeof关键字,以及UNIX,vax等预处理宏,
  -fno-asm
  此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作
  关键字。
  -fno-strict-prototype
  只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式
  的对参数的个数和类型说明,而不是没有参数.
  而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说
  明的类型
  -fthis-is-varialble
  就是向传统c++看齐,可以使用this当一般变量使用.
  -fcond-mismatch
  允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型
  -funsigned-char
  -fno-signed-char
  -fsigned-char
  -fno-unsigned-char
  这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前
  两个参数)或者 signed char(后两个参数)
  -include file
  包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以
  用它设定,功能就相当于在代码中使用#include<filename>
  例子用法:
  gcc hello.c -include /root/pianopan.h
  -imacros file
  将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件
  中
  -Dmacro
  相当于C语言中的#define macro
  -Dmacro=defn
  相当于C语言中的#define macro=defn
  -Umacro
  相当于C语言中的#undef macro
  -undef
  取消对任何非标准宏的定义
  -Idir
  在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头
  文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
  回先在你所制定的目录查找,然后再按常规的顺序去找.
  对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系
  统的缺省的头文件目录查找
  -I-
  就是取消前一个参数的功能,所以一般在-Idir之后使用
  -idirafter dir
  在-I的目录里面查找失败,讲到这个目录里面查找.
  -iprefix prefix
  -iwithprefix dir
  一般一起使用,当-I的目录查找失败,会到prefix+dir下查找
  -nostdinc
  使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确
  限定头文件的位置
  -nostdin C++
  规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建
  libg++库使用
  -C
  在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很
  方便的
  -M
  生成文件关联的信息。包含目标文件所依赖的所有源代码
  你可以用gcc -M hello.c来测试一下,很简单。
  -MM
  和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。
  -MD
  和-M相同,但是输出将导入到.d的文件里面
  -MMD
  和-MM相同,但是输出将导入到.d的文件里面
  -Wa,option
  此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选
  项,然后传递给会汇编程序
  -Wl.option
  此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选
  项,然后传递给会连接程序.
  -llibrary
  制定编译的时候使用的库
  例子用法
  gcc -lcurses hello.c
  使用ncurses库编译程序
  -Ldir
  制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然
  编译器将只在标准库的目录找。这个dir就是目录的名称。
  -O0
  -O1
  -O2
  -O3
  编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最
  高
  -g
  只是编译器,在编译的时候,产生条是信息。
  -gstabs
  此选项以stabs格式声称调试信息,但是不包括gdb调试信息.
  -gstabs+
  此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.
  -ggdb
  此选项将尽可能的生成gdb的可以使用的调试信息.
  -static
  此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
  动态连接库,就可以运行.
  -share
  此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
  -traditional
  试图让编译器支持传统的C语言特性

转载于:https://www.cnblogs.com/Harry-Lord/archive/2011/11/05/4002912.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

真效率神器,UI稿智能转换成前端代码,准确率极高

大家好&#xff0c;我是若川。在这充满网络促销活动的几个月&#xff0c;倍感压力的&#xff0c;除了你的口袋&#xff0c;是否还有程序员的发量呢&#xff1f;每年的双十一、双十二购物狂欢节&#xff0c;各大电商平台都会上线让消费者充满购买欲望的活动页面&#xff0c;而这…

PPT图标的正确使用和插入与编辑形状

PPT图标的正确使用和插入与编辑形状 通过图标可以以符号的形式直观地传递信息。 一&#xff0c;实战&#xff1a;在销售工作计划中插入图标 PowerPoint 2016中提供了多种类型的图标&#xff0c;用户可根据需要在幻灯片中插入所需的图标。 二&#xff0c;实战&#xff1a;更改销…

几个用于序列化的代码片段

参考JavaScriptSerializer,一般用来做JSON格式化http://msdn.microsoft.com/zh-cn/library/system.web.script.serialization.javascriptserializer.aspx http://msdn.microsoft.com/zh-cn/library/system.web.script.serialization.javascriptconverter.aspxDataContractSeria…

桌面图标摆放图案_用图标制作醒目的图案

桌面图标摆放图案Level up your video calls with a custom backdrop created using Noun Project icons.使用使用Noun Project图标创建的自定义背景来升级视频通话。 The only thing more visually pleasing than a well-designed icon is a neat, eye-catching pattern made…

3个多月,近3000人参与的源码共读,诚邀加入~

大家好&#xff0c;我是若川。众所周知&#xff0c;从8月份开始&#xff0c;我组织了源码共读活动&#xff0c;每周学习200行左右的源码&#xff0c;到现在持续了3个多月&#xff0c;坚持答疑解惑。帮助了不少人&#xff0c;还是挺开心的。另外&#xff0c;涌现了很多优秀的读者…

upc 组队赛18 STRENGTH【贪心模拟】

STRENGTH 题目链接 题目描述 Strength gives you the confidence within yourself to overcome any fears, challenges or doubts. Feel the fear and do it anyway! If you have been going through a rough time and feel burnt out or stressed, the Strength card encourag…

JSONNull

最近用JSONObject&#xff0c;感觉比xml好用一些&#xff0c;json的打包和解包都比较清晰和容易&#xff0c;最近遇到一个问题&#xff0c;将一个JSON对象解析&#xff0c;存到hashmap中去&#xff0c;然后再从hashmap取出数据&#xff0c;遇到jsonnull的问题&#xff0c;本以为…

“这张图告诉你什么?”

For data to be impactful, it must be understood.为了使数据具有影响力&#xff0c;必须理解它。 I’ve happily spent hundreds and hundreds of hours of my life watching users misunderstand data visualizations. I’m strangely hooked on it.我快乐地度过了数百个小…

我们从 UmiJS 迁移到了 Vite

大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以点此加我微信ruochuan12 进群参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。已进行三个月了&#xff0c;很多小伙伴表示收获颇丰。我们从 UmiJS迁移到 Vite 已经上线半年…

将DataTable的内容以EXCEl的形式导出到本地

1.在搞项目的时候一般会遇到&#xff0c;将GridView或者Repeater的内容以Excel的形式保存到本地&#xff0c;即导出功能。我总结了两个方法。 方法一&#xff1a; 1 DataTable dt query.GetItems().GetDataTable();2 if (dt ! null)3 {4 …

智能家居数据库设计_设计更智能的数据表

智能家居数据库设计重点 (Top highlight)Data tables are hard. There are many different ways to think about them. So, naturally, the first step would be to figure out what your users need.数据表很难。 有许多不同的方式来考虑它们。 因此&#xff0c;自然地&#x…

可能是全网首个前端源码共读活动,诚邀你加入一起学习

大家好&#xff0c;我是若川。众所周知&#xff0c;从8月份开始&#xff0c;我组织了源码共读活动&#xff0c;每周学习200行左右的源码&#xff0c;到现在持续了3个多月&#xff0c;坚持答疑解惑。帮助了不少人&#xff0c;还是挺开心的。另外&#xff0c;涌现了很多优秀的读者…

vsftpd 的配置项目

基本配置说明&#xff1a; 1&#xff09;local_root/ftpfile(当本地用户登入时&#xff0c;将被更换到定义的目录下&#xff0c;默认值为各用户的家目录) 2&#xff09;anon_root/ftpfile(使用匿名登入时&#xff0c;所登入的目录) 3&#xff09;use_localtimeYES(默认是GMT时…

线段树专辑——pku 3667 Hotel

http://poj.org/problem?id3667 哈哈&#xff0c;经典中的经典题啊。利用线段树求最大连续空闲区间&#xff0c;并返回空闲区间的起点坐标。 View Code 1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 6 …

houseparty不流畅_重新设计Houseparty –用户体验案例研究

houseparty不流畅Houseparty has become very popular during the COVID-19 period because it helps you connect with others in a fun way. The concept is simple, you open the app and jump on a video call with your friends. You can even play online games with the…

你不知道的 Node.js 工具函数

从类型判断说起在 JavaScript 中&#xff0c;进行变量的类型校验是一个非常令人头疼的事&#xff0c;如果只是简单的使用 typeof 会到各种各样的问题。举几个简单的&#x1f330;&#xff1a;console.log(typeof null) // object console.log(typeof new Array) // object cons…

Java应用集群下的定时任务处理方案(mysql)

今天来说一个Java多机部署下定时任务的处理方案。 需求: 有两台服务器同时部署了同一套代码&#xff0c; 代码中写有spring自带的定时任务&#xff0c;但是每次执行定时任务时只需要一台机器去执行。 当拿到这个需求时我脑子中立马出现了两个简单的解决方案&#xff1a; 利用ip…

概念验证_设置成功的UX概念验证

概念验证用户体验/概念证明/第1部分 (USER EXPERIENCE / PROOF OF CONCEPT / PART 1) This is the first article of a four-part series. Please read Part 2 and Part 3.这是由四个部分组成的系列文章的第一篇。 请阅读 第2 部分 和 第3部分 。 How do today’s top UX desi…

从 vue3 和 vite 源码中,我学到了一行代码统一规范团队包管理器的神器

1. 前言大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。已进行四个月了&#xff0c;很多小伙伴表示收获颇丰。想学源码&#xff0c;极力推荐之前我写…

什么事接口

假设你设计一个和人交流的程序。 先建立一个接口 interface 人 //定义接口&#xff0c;它代表一个人&#xff0c; {void Hello(); }//接口虚函数&#xff0c;用来跟这个人说话 但不同的人有不用的交流方式&#xff0c;具体方式用类来实现&#xff0c;比如。 class 美国人&#…