Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30064
  • 博文数量: 15
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-27 20:52
文章分类

全部博文(15)

文章存档

2010年(15)

我的朋友

分类: C/C++

2010-01-27 21:55:02

预处理阶段参数:
-M 读取每一个源文件,并检查源文件中是否还include了其他文件,最终列出make时需要的依赖关系列表。(即生成makefile)
-C 保留原预处理阶段会被删除的注释内容

针对特定库的参数:
-nostartfiles 链接时不使用标准系统的启动文件,主要用于交叉编译时。
-nostdlib 链接时不使用标准库和标准系统启动文件,主要用于当需要用自己编写的库文件来代替系统标准库时。
-static 仅链接静态库
-shared 若动态库可用,则使用(此项为默认参数)

调试参数:
(这些参数主要用于对代码调试修改阶段,不建议release时使用)
-p 链接程序生成简表(profile),当使用这个参数时,会在当前目录下生成一个包含程序执行统计信息的mon.out文件,分析器会读取这个文件,并生成一个描述程序运行状态的简表
-pg 使用gprof做-p处理
-g 生成一个扩展的调试信息符号表

优化参数:
-O 相当于做-O1
-OO 不做代码优化(默认值)但生成的程序易于调试
-O1 编译器在代码体积和运行时间上都做优化
-O2 比—O1做级别更深入的优化
-ffast-math 浮点算术优化,使用这个参数优化后可能会产生错误的运算结果
-finline-functions 把所有的简单函数扩展为内联函数
-fno-inline 抑制内联函数(即使源代码中含有inline关键字)
-funroll-loops gcc会展开所有的在编译阶段已知循环次数的循环,但也存在优化风险,会使得生成的目标文件变得庞大。

传递给汇编器和连接器的参数:
gcc允许将参数传递给链接器和汇编器
-Wa,option-list 传递option-list中列出的参数给汇编器
-Wl,option-list 传递option-list中列出的参数给链接器

汇编器的参数:
-ah 仅生成高级代码列表
-al 金生成汇编代码列表
-as 仅生成符号表列表

链接阶段参数:
-lname 那么其中name部分必须是/lib/libname.a 或者 /usr/lib/libname.a的库
-o name 用name来取代默认生成的可执行文件名a.out
-Ldir dir为搜索非标准库的路径
-s 移除生成的可执行文件中的符号表
-x 移除生成的可执行文件中的所有本地符号
-n 使text段为只读
-r 生成可进一步被链接的目标文件
-e name 使用name作为程序执行的入口
-M 生成一个包含每个函数在最终目标文件中的位置、每一节开始和结束、全局符号的值的“加载图”(详细清单)
-b format 用给定格式读取目标模块
-oformat format 用给定格式生成目标模块


PS:翻译自gnu文档 programing with gnu software,不是完全直译,为读后笔记类型,仅供参考,不免错误,质疑部分请参院gnu原始文档




阅读(420) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~