随想录(被低估的gccg++)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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++)相关推荐
- python3 namedtuple_你不能低估的Python数据结构Namedtuple(二)
上篇你不能低估的Python数据结构Namedtuple(一)讲了namedtuple的一些基本用法,本篇继续. namedtuples和数据类(Data Class)之间有什么区别? 功能 在Pyt ...
- 校准曲线(calibration curve)是什么?如何绘制校准曲线(calibration curve)?如何通过过校准曲线进行分析?什么是高估?什么是低估?
校准曲线(calibration curve)是什么? 如何绘制校准曲线(calibration curve)? 如何通过过校准曲线进行分析? 什么是高估? 什么是低估? 注意:横纵坐标的差异,但是本 ...
- 恭喜《软件随想录》得到了大家的一致认可!
恭喜<软件随想录>得到了大家的一致认可! <软件随想录> 自2009.12出版至今已近一个半月,首印5000册即将售罄,重印已经发出.此销量在现今计算机类图书中,可谓相当不错了 ...
- 谷歌AI研究院:被低估的数据,被高估的模型
编译 | 戚路北 校对 | 维克多 转自:AI科技评论 得益于算法.算力和数据这三驾马车,人工智能在2006年后获得了巨大的发展.近日,来自谷歌的研究员在一篇题为"Everyone want ...
- 机器学习隐私研究新进展:数据增强风险被低估,新算法“降服”维数依赖
编者按:如今,数据是推动人工智能创新的核心要素.但数据的安全和隐私问题限制了数据充分释放其潜能.一直以来,微软都倡导打造负责任的人工智能,并正在开发和利用多种技术以提供更强大的隐私保护.确保数据安全. ...
- 人类倾向于高估人工智能的进步,低估自身智能的复杂性-读《AI 3.0》
有很多关于人工智能的书.亚马逊网站上就有20,000本.其中很多书都有戏剧性的标题,比如<生命3.0> ,<终极算法> ,尤其是<奇点来临>.梅勒妮 · 米切尔的新 ...
- 一个小度科技就估值200亿,百度现在被低估了吗?
雷刚 发自 凹非寺 量子位 报道 | 公众号 QbitAI 投后估值200亿. 这就是百度AI音箱出品方--小度科技的最新进展. 百度今日(9月30日)官宣,旗下智能生活事业群组业务,完成独立融资, ...
- 墙裂推荐!卡神力作《代码随想录》,上架首日卖爆!
刚开始学习数据结构与算法,或者在力扣(LeetCode)上刷题的读者都有这种困惑--从何学起,先学什么,再学什么.很多人刷题的效率低,主要体现在以下三点: 难以寻找适合自己的题目. 找到了不合适现阶段 ...
- Postman 最被低估的功能!
作者 | _wiky_ 来源 | https://blog.csdn.net/cai_iac/article/details/81030619 Postman 最被低估的功能,自动化接口测试效率简直无 ...
最新文章
- 竞赛专题(四)特征工程-竞赛中的必杀技
- jS四种函数的调用方式
- hash 建表 query 统计重复个数
- 数据结构与算法 总结
- 中文电子病例命名实体识别项目
- php读取js为文本,PHP / JS文本差异
- oracle字符串处理substr、dbms_lob.substr、case when
- SpringAOP 通知(adivce)- methodIntercepor
- websocket 带头部信息请求 header_BeetleX之Websocket协议分析详解
- 【LeetCode】【数组】题号:*453,数组元素相等的最小操作次数
- 正点原子STM32F4探索者开发板HAL库TFT LCD屏幕例程移植到STM32CubeMX+CLion
- 【转】完美:photoshop cs6 破解版下载[序列号+破解补丁+破解教程+官方原版]
- SEUS 转换XML到JAVA
- Maven2部署构件到Nexus时出现的Failed to transfer file错误
- ChatGPT套壳网站汇总-5月22日更新
- 别让懒惰,毁了你的努力!从上班混日子到月入2万
- 高通MSM8953 LK阶段配置使用I2C8
- win10计算机盘符如何,WIN10修改盘符怎么更改
- 2021届 美的笔试 C++开发工程师
- Windows文本框星号密码查看器