【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

很多同学喜欢看代码,比如操作系统、数据库、脚本语言、android、虚拟软件什么的。但是却很少人会喜欢去研究编译器、连接器。其实编译器非常重要。一方面,它可以用来支持os、middle ware、app等各种软件的编译,另一方面它可以支持调试、调优和系统性能分析。这些额外生成的信息对于readelf、nm、strip、objdump、gdb非常有用。下面,我们就说说gcc&g++常用的一些选项。

1、-c

编译c文件

2、-o

生成目标文件

3、-S

将c文件生成汇编文件

4、-include

包含特定头文件

5、-I(大写的i)

指明头文件目录

6、-l(小写的l)

指明具体的动态库名称

7、-L

指明动态库目录

8、-D

添加默认macro定义

9、-static

强制生成一个exe文件,不依赖动态库,调试动态库问题时非常有效

10、-shared -fPIC

生成动态库

11、-g

生成调试信息

12、-Werror

将warning看成是error,代码静态检查的时候非常有效

13、-O1, -O2, -O3

基于速度的优化

14、-Os

基于大小的优化

15、-MM

获取当前文件依赖的头文件,编写Makefile的时候非常有效

16、-E

完成文件预处理,此选项可以完成macro的翻译

17、-fprofile-arcs -ftest-coverage

在每一行代码后生成统计信息,用于gcov,主要分析代码覆盖率等

18、-pg

在一个函数的入口和出口添加额外代码,用于gprof,主要分析代码性能,kernel中ftrace的静态分析也是这个原理

19、-T

确认lds连接脚本

20、-nostartfiles -nostdlib

没有起始文件,没有标准库,此选项主要用于firmware的编译,不依赖于os

21、-m32, -m64

生成32位程序,生成64位程序

22、-std=c99

确定c或者cpp语言支持的语法标准

23、-v

显示编译全过程

24、-fstack-check,-fstack-protector,-fstack-protector-all

添加堆栈检测代码

25、--help

显示帮助信息,如果实在记不得了,就用用这个选项好了

ps:

a、编译交叉编译器的时候,gcc被编译了两次,一次的编译选项比较简单,主要用来支持编译glibc,所以一些编译选项都是禁止的,比如--disable-threads, --disable-decimal-float,--disable-shared,这些都是需要glibc支持的,但是我们glibc还没有编译好,所以不能放开。另外一次复杂一点,主要支持c、c++、posix等多项功能,编译选项更复杂,既然glibc已经编译好了,那么之前禁止的编译选项都可以放开了。但是第一次生成的gcc是不可能编译gcc代码的,因为是交叉编译器,所以无法用来编译在主机上运行的gcc。两次的选用的编译器都是主机编译器。

b、关于编译gcc的部分,可以参考这个链接,主要是制作交叉编译工具。

随想录(被低估的gccg++)相关推荐

  1. python3 namedtuple_你不能低估的Python数据结构Namedtuple(二)

    上篇你不能低估的Python数据结构Namedtuple(一)讲了namedtuple的一些基本用法,本篇继续. namedtuples和数据类(Data Class)之间有什么区别? 功能 在Pyt ...

  2. 校准曲线(calibration curve)是什么?如何绘制校准曲线(calibration curve)?如何通过过校准曲线进行分析?什么是高估?什么是低估?

    校准曲线(calibration curve)是什么? 如何绘制校准曲线(calibration curve)? 如何通过过校准曲线进行分析? 什么是高估? 什么是低估? 注意:横纵坐标的差异,但是本 ...

  3. 恭喜《软件随想录》得到了大家的一致认可!

    恭喜<软件随想录>得到了大家的一致认可! <软件随想录> 自2009.12出版至今已近一个半月,首印5000册即将售罄,重印已经发出.此销量在现今计算机类图书中,可谓相当不错了 ...

  4. 谷歌AI研究院:被低估的数据,被高估的模型

    编译 | 戚路北 校对 | 维克多 转自:AI科技评论 得益于算法.算力和数据这三驾马车,人工智能在2006年后获得了巨大的发展.近日,来自谷歌的研究员在一篇题为"Everyone want ...

  5. 机器学习隐私研究新进展:数据增强风险被低估,新算法“降服”维数依赖

    编者按:如今,数据是推动人工智能创新的核心要素.但数据的安全和隐私问题限制了数据充分释放其潜能.一直以来,微软都倡导打造负责任的人工智能,并正在开发和利用多种技术以提供更强大的隐私保护.确保数据安全. ...

  6. 人类倾向于高估人工智能的进步,低估自身智能的复杂性-读《AI 3.0》

    有很多关于人工智能的书.亚马逊网站上就有20,000本.其中很多书都有戏剧性的标题,比如<生命3.0> ,<终极算法> ,尤其是<奇点来临>.梅勒妮 · 米切尔的新 ...

  7. 一个小度科技就估值200亿,百度现在被低估了吗?

    雷刚 发自 凹非寺  量子位 报道 | 公众号 QbitAI 投后估值200亿. 这就是百度AI音箱出品方--小度科技的最新进展. 百度今日(9月30日)官宣,旗下智能生活事业群组业务,完成独立融资, ...

  8. 墙裂推荐!卡神力作《代码随想录》,上架首日卖爆!

    刚开始学习数据结构与算法,或者在力扣(LeetCode)上刷题的读者都有这种困惑--从何学起,先学什么,再学什么.很多人刷题的效率低,主要体现在以下三点: 难以寻找适合自己的题目. 找到了不合适现阶段 ...

  9. Postman 最被低估的功能!

    作者 | _wiky_ 来源 | https://blog.csdn.net/cai_iac/article/details/81030619 Postman 最被低估的功能,自动化接口测试效率简直无 ...

最新文章

  1. 竞赛专题(四)特征工程-竞赛中的必杀技
  2. jS四种函数的调用方式
  3. hash 建表 query 统计重复个数
  4. 数据结构与算法 总结
  5. 中文电子病例命名实体识别项目
  6. php读取js为文本,PHP / JS文本差异
  7. oracle字符串处理substr、dbms_lob.substr、case when
  8. SpringAOP 通知(adivce)- methodIntercepor
  9. websocket 带头部信息请求 header_BeetleX之Websocket协议分析详解
  10. 【LeetCode】【数组】题号:*453,数组元素相等的最小操作次数
  11. 正点原子STM32F4探索者开发板HAL库TFT LCD屏幕例程移植到STM32CubeMX+CLion
  12. 【转】完美:photoshop cs6 破解版下载[序列号+破解补丁+破解教程+官方原版]
  13. SEUS 转换XML到JAVA
  14. Maven2部署构件到Nexus时出现的Failed to transfer file错误
  15. ChatGPT套壳网站汇总-5月22日更新
  16. 别让懒惰,毁了你的努力!从上班混日子到月入2万
  17. 高通MSM8953 LK阶段配置使用I2C8
  18. win10计算机盘符如何,WIN10修改盘符怎么更改
  19. 2021届 美的笔试 C++开发工程师
  20. Windows文本框星号密码查看器

热门文章

  1. onsyscommand
  2. 2月第3周全球五大顶级域名总量净减6.1万个 降幅明显
  3. VMware下 Fedora 14安装VMWare Tools
  4. xml文件中若没有子节点,则删除文件
  5. virtual析构函数(作用)
  6. VS2010下如何改变Button颜色、背景、边框
  7. STM32 GPIO应用
  8. VC里的project panel窗口如何实现(转载)
  9. WSGI协议主要包括server和application两部分:
  10. tomcat 内存溢出问题