Chinaunix首页 | 论坛 | 博客
  • 博客访问: 338039
  • 博文数量: 45
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 111
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-31 12:31
文章分类

全部博文(45)

文章存档

2015年(2)

2014年(19)

2013年(14)

2012年(10)

我的朋友

分类: C/C++

2013-08-28 23:22:08

原文地址:Linux gcc参数说明 作者:asteriskchina

记录常用的gcc参数说明:
-g 生成调试信息
-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
-lLIBRARY 连接时搜索指定的函数库LIBRARY。
-o FILE 生成指定的输出文件。用在生成可执行文件时。
-O0 不进行优化处理。
-O 或 -O1 优化生成代码。
-O2 进一步优化。
-O3 比 -O2 更进一步优化,包括 inline 函数。
-shared 生成共享目标文件。通常用在建立共享库时。
-static 禁止使用共享连接。
-Wall 生成所有警告信息。
-Wmissing-prototypes 当函数在使用前没有函数原型时
-Wmissing-declarations 遗失声明
-D_REENTRANT 
_REENTRANT宏
       在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。在一个线程准备获取刚才的错误代码时,该变量很容易被另一个线程中的函数调用所改变。类似的问题还存在于fputs之类的函数中,这些函数通常用一个单独的全局性区域来缓存输出数据。
       为解决这个问题,需要使用可重入的例程。可重入代码可以被多次调用而仍然工作正常。编写的多线程程序,通过定义宏_REENTRANT来告诉编译器我们需要可重入功能,这个宏的定义必须出现于程序中的任何#include语句之前。
       _REENTRANT为我们做三件事情,并且做的非常优雅:
(1)它会对部分函数重新定义它们的可安全重入的版本,这些函数名字一般不会发生改变,只是会在函数名后面添加_r字符串,如函数名gethostbyname变成gethostbyname_r。
(2)stdio.h中原来以宏的形式实现的一些函数将变成可安全重入函数。
(3)在error.h中定义的变量error现在将成为一个函数调用,它能够以一种安全的多线程方式来获取真正的errno的值。
 
 -D_GNU_SOURCE 使用标准C来编译 ,但链接时候使用GNU的库
 -pipe  使用管道代替临时文件。
 -rdynamic 可用来通知链接器将所有符号添加到动态符号表中
 -c 只编译产生目标文件,不产生可执行文件

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