level 设置执行的优化级别,必须为 0、1 或 2。优化级别如下:
表 A–37 -xlinkopt 值
值 |
含义 |
---|---|
0 |
禁用链接优化器。(这是缺省情况。) |
1 |
在链接时根据控制流分析执行优化,包括指令高速缓存着色和分支优化。 |
2 |
在链接时执行附加的数据流分析,包括无用代码删除和地址计算简化。 |
如果在不同的步骤中编译,-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 编译会将调试信息包括在内,从而增加了可执行文件的大小。