g++常用标志位

1)-static
在支持动态链接的系统上,这可防止与共享库链接。 在其他系统上,此选项无效
2)-shared
产生一个共享对象,然后可以将其与其他对象链接以形成可执行文件。 并非所有系统都支持此选项。为了获得可预测的结果,在指定此链接器选项时,还必须指定用于编译的相同选项集(-fpic,-fPIC或模型子选项)。
3)-fPIC
如果目标机器支持,则发出与位置无关的代码,该代码适用于动态链接并避免对全局偏移表的大小进行任何限制。 此选项对m68k,PowerPC和SPARC有所不同。 与位置无关的代码需要特殊的支持,因此仅在某些机器上有效。 设置此标志后,宏“ pic”和“ PIC”被定义为2
4)-fvisibility=default|internal|hidden|protected:
将默认的ELF图像符号可见性设置为指定的选项-除非代码中覆盖了所有符号,否则所有符号均以此标记。使用此功能可以极大地改善共享库的链接和加载时间,生成更优化的代码,提供近乎完美的API导出并防止符号冲突。强烈建议您在分发的所有共享对象中使用此功能。
尽管有命名法,“默认”始终表示公开。即可以从共享对象外部链接。在实际使用中,“受保护”和“内部”几乎没有用,因此唯一常用的选项是“隐藏”。如果未指定-fvisibility,则默认值为“默认”,即将每个符号设为公开-这会导致与以前版本的GCC相同的行为。
5)-mx32
将"int","long"和指针类型设置为32位,并生成可在任何i386系统上运行的代码。
6)-m64
将"int"设置为32位,将"long"和指针类型设置为64位,并为x86-64体系结构生成代码。 对于达尔文,仅-m64选项还会关闭-fno-pic和-mdynamic-no-pic选项。
7)-D name
预定义名称为宏,定义为1。
8)-D name=definition:
定义的内容被标记和处理,就像它们出现在#define指令的翻译阶段三中一样。 特别是,该定义将被嵌入的换行符截断
9)-U name
取消内置的或提供-D选项的名称的任何先前定义。
10)-undef
不要预定义任何特定于系统或GCC的宏。 标准的预定义宏保持定义状态。
11)-I dir
将目录dir添加到要搜索头文件的目录列表中。
12)-o file
将输出写入文件。
13)-ftemplate-depth=n
模板类的最大实例化深度为n。 模板实例化深度需要一个限制,以检测模板类实例化期间的无限递归。 符合ANSI / ISO C ++的程序不得依赖大于17的最大深度(在C ++ 11中更改为1024)。 默认值为900,因为在某些情况下编译器在达到1024之前可能会耗尽堆栈空间。
14)-Wl,option
通过选项作为链接器的选项。 如果option包含逗号,则会在逗号处将其拆分为多个选项。 您可以使用此语法将参数传递给选项。例如,-Wl,-Map,output.map将-Map output.map传递给链接器。 使用GNU链接器时,您还可以通过-Wl,-Map = output.map获得相同的效果。
15)-Bprefix
此选项指定在哪里可以找到编译器本身的可执行文件,库,包含文件和数据文件。
16)-pthread
使用pthreads库增加了对多线程的支持。 该选项为预处理器和链接器设置标志。目前gcc 4.5.2中已经没有了关于 -lpthread的介绍了。所以以后的多线程编译应该用-pthread,而不是-lpthread。
17)-l library
链接时搜索名为library的库。在命令中写入此选项的位置会有所不同。链接器按照指定的顺序搜索和处理库和目标文件。通常,以这种方式找到的文件是库文件-归档文件(lib和.a,其成员是目标文件)。
18)-Ldir
将目录dir添加到要搜索-l的目录列表中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值