Oracle Solaris Studio 12.2:C++ 用户指南

A.2.142 -xlinkopt[= level]

指示编译器在对目标文件进行优化的基础上对生成的可执行文件或动态库执行链接时优化。这些优化在链接时通过分析二进制目标代码来执行。虽然未重写目标文件,但生成的可执行代码可能与初始目标代码不同。

必须至少在部分编译命令中使用 -xlinkopt,才能使 -xlinkopt 在链接时有效。优化器仍可以对未使用 -xlinkopt 进行编译的二进制目标文件执行部分受限的优化。

-xlinkopt 优化出现在编译器命令行上的静态库代码,但会跳过出现在命令行上的共享(动态)库代码而不对其进行优化。生成共享库时(使用 -G 编译),也可以使用 -xlinkopt

A.2.142.1 值

级别设置执行的优化级别,必须为 0、1 或 2。优化级别为:

表 A–37 -xlinkopt

值 

含义  

禁用链接优化器。(这是缺省情况。) 

在链接时根据控制流分析执行优化,包括指令高速缓存着色和分支优化。 

在链接时执行附加的数据流分析,包括无用代码删除和地址计算简化。 

如果在不同的步骤中编译,-xbinopt 必须同时出现在编译和链接步骤中:

example% cc -c -xlinkopt a.c b.c
example% cc -o myprog -xlinkopt=2 a.o

请注意,仅当编译器链接时才使用级别参数。在以上示例中,即使编译二进制目标文件时使用的是隐含的级别 1,链接优化器的级别仍然是 2。

缺省值

指定 -xlinkopt 时若不带级别参数,则表示 -xlinkopt=1

交互

当编译整个程序并且使用配置文件反馈时,该选项才最有效。文件配置会显示代码中最常用和最少用的部分并相应地指导优化器集中其努力方向。这对大型应用程序尤为重要,因为在链接时执行代码优化放置可降低指令高速缓存未命中数。通常,编译如下所示:


example% cc -o progt -xO5 -xprofile=collect:prog file.c
example% progt
example% cc -o prog -xO5 -xprofile=use:prog -xlinkopt file.c

有关使用配置文件反馈的详细信息,请参见A.2.170 –xprofile=p

警告

使用 -xlinkopt 编译时,请不要使用 -zcombreloc 链接程序选项。

注意,使用该选项编译会略微延长链接的时间,目标文件的大小也会增加,但可执行文件的大小保持不变。使用 -xlinkopt-g 编译会将调试信息包括在内,从而增加了可执行文件的大小。