Oracle® Solaris Studio 12.4:C++ 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

2.4.3 一致编译和链接

如果在不同的步骤中进行编译和链接,在使用编译时选项和链接时选项中所列的编译器选项时,一定要在编译和链接时保持一致。

如果使用其中任何选项编译子程序,必须在链接时也使用相同的选项:

  • 如果使用 -library-m64/-m32 选项进行编译,则必须在所有 CC 命令中使用相同的选项。

  • 如果使用 -compat-std 选项进行编译,则必须在所有 CC 命令中使用相同或等效选项。例如,-compat=5-std=sun03 是等效的。

  • 如果使用 -p-xpg-xprofile,则在一个阶段中包括选项而在其他阶段中不包括相应选项并不影响程序的正确性,但不能进行分析。

  • 如果使用 -g[n] 和 -xdebuginfo,则在一个阶段中包括选项而在其他阶段中不包括相应选项并不影响程序的正确性,但会影响调试程序的能力。对于没有使用其中任一选项编译但使用 -g[n] 或 -xdebuginfo 链接的模块,将无法正确调试。请注意,要对包含函数 main 的模块进行调试,通常必须使用 –g[n] 选项或 -xdebuginfo 选项对其进行编译。

在以下示例中,使用 -library=stlport4 编译器选项编译程序。

example% CC -library=stlport4 sbr.cc -c
example% CC -library=stlport4 main.cc -c
example% CC -library=stlport4 sbr.o main.o -o myprogram 

如果没有一致地使用 -library=stlport4,程序的某些部分将使用缺省的 libCstd,其他部分将使用可选的替换 STLport 库。生成的程序可能不进行链接,因此在任何情况下都不能正常运行。

如果程序使用模板,某些模板可能会在链接时实例化。在这种情况下,来自最后一行(链接行)的命令行选项将用于编译实例化的模板。