binopt [-binstrument[=on|off]] [-bdata=datafile] [-bmt[=on|off]] [-o filename] [-V] [-flags] [-Q[y|n]] [-xinline=[[,v...]]] binfile
binopt [-buse[=on|off]] [-blevel=0|1|2] [-bdata=datafile] [-bfinal[=on|off]] [-o filename] [-V] [-flags] [-Q[y|n]] [-xinline=[[,v...]]] binfile
binopt 命令用于优化(SPARC 和 x86/x64)Oracle Solaris 二进制文件(可执行文件或共享对象)。无论二进制文件使用哪种源代码语言,它都可以优化它们。它还可以优化混合源代码语言二进制文件。为了能够有效地进行优化,必须在安装了修补程序 127111-07 的较新 Solaris 10 系统中通过明确指定某种级别的优化 (-xOn) 来生成二进制文件。
二进制文件优化器还可用于检测二进制文件以进行分析收集。然后必须使用表示典型用户数据的输入数据训练集运行检测的二进制文件。此训练运行将使用分析数据创建二进制文件。然后必须将该文件重新提供给二进制文件优化器,以创建分析优化的二进制文件。
binopt 命令执行多个级别的优化。优化级别越高,执行的优化越多,得到的二进制文件可能越理想。可能的负面影响是生成时间增加。
缺省情况下,如果未指定输出文件名称,则会使用优化的二进制文件覆盖输入文件。除非指定 -bfinal 选项,否则将来可以通过调用二进制文件优化器来优化 binopt 命令创建的二进制文件。
二进制文件优化器采用单线程执行来检测应用程序二进制文件。如果应用程序启动线程,请使用 -bmt=on 启用线程安全的分析计数。
binopt 仅可在 Oracle Solaris 平台上使用。
binopt 不能用于检测使用 -xpg 标志编译以进行 gprof 分析的二进制文件。binopt 与 gprof 不兼容。
binopt 命令与使用以下任何标志构建的二进制文件不兼容:-p、-pg、-qp、-xpg 和 -xlinkopt。
检测二进制文件以进行分析收集。将自动关闭所有优化。可以使用 -bdata 选项修改用于存储分析数据的缺省文件。此选项不能与 -buse 标志一起使用。
使用分析数据执行分析引导的优化。同样,可以使用 -bdata 标志修改缺省文件位置。此选项不能与 -binstrument 标志一起使用。
执行不同级别的优化。如果级别为 0,则不执行优化。如果级别为 1,则执行代码重新排序优化(这是缺省行为)。如果级别为 2,则构造数据流信息并执行更主动的优化,例如内联和与地址相关的优化。
指定存储分析数据的文件。此选项只能与 -binstrument 或 -buse 一起使用,否则会被忽略。如果未使用此选项,则缺省文件名为 binfile.instrdata。
完成最终的输出二进制文件,以便将来无法执行二进制文件优化。此选项在最后的生成步骤中非常有用,在最后的生成步骤之后将不再规划进一步的转换。例如,在生成最终的最佳二进制文件时,可以将此选项与 -buse 选项一起使用。缺省值为 -bfinal=off。
启用线程安全的分析计数。如果可执行文件启动线程,请将该选项与 -binstrument 一起使用。如果在未指定 -bmt=on 的情况下检测可执行文件并且可执行文件在运行时启动线程,则检测将终止应用程序并显示一条消息。缺省值为 -bmt=on。例如:
% binopt -binstrument -bmt=on binfile -o binoutfile
将输出文件命名为 filename,而不是采用缺省设置,即覆盖 binfile 输入文件。
在标准错误输出中输出工具的版本号。
输出可用选项的一行摘要信息。
将或不将二进制文件优化器版本标识信息发送到输出文件。如果使用 -Qy,则会将标识信息添加到输出文件(缺省行为)。-Qn 禁止显示该信息。
v 可以是 %auto、func_name 或 no%func_name。
-xinline 尝试只内联列表中指定的函数。该列表包含逗号分隔的函数名称列表、逗号分隔的 no%func_name 值列表或者值 %auto。如果指定 %nofunc_name,则编译器将不内联指定的函数。如果指定 %auto,binopt 将尝试自动内联函数。缺省情况下,在优化级别 2 启用自动内联。
要优化的二进制文件。
以下条目为优化准备创建的二进制文件,然后使用 binopt 命令进行优化,以覆盖相应的二进制文件。
% cc -O -xbinopt=prepare *.c -o a.out % binopt a.outExample 2 检测、运行和执行分析引导的优化。
以下示例检测二进制文件、执行训练运行,然后使用分析数据执行分析引导的优化。
% binopt -binstrument -bdata=a.out.data -o a.out.instr a.out % ./a.out.instr % binopt -buse -bdata=a.out.data -o a.out.opt a.outExample 3 执行第 2 级优化并完成。
以下示例在级别 2 执行二进制文件优化,然后完成最终的二进制文件,以便将来无法优化二进制文件。
% binopt -blevel=2 -bfinal a.out
cc(1)、CC(1)、f95(1)