Sun Studio 12:C 用户指南

B.2.102 -xlinkopt[= level]

(SPARC) 指示编译器对可重定位的目标文件执行链接时优化。这些优化在链接时通过分析二进制目标代码来执行。虽然未重写目标文件,但产生的可执行代码可能与初始目标代码不同。

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

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

级别必须将执行的优化级别设置为 0、1 或 2。各优化级别如下所示:

表 B–27 -xlinkopt 标志

标志 

含义 

0

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

1

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

2

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

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

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

有关在编译和链接时都必须指定的所有编译器选项的完整列表,请参见表 A–2

注意,仅当链接编译器时才使用级别参数。在以上示例中,即使二进制目标代码是用隐含级别 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

有关使用配置文件反馈的详细信息,请参见B.2.131 -xprofile=p

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

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