本节介绍影响 Oracle Developer Studio 和 GCC 之间兼容性的对象文件功能。
部分 Oracle Developer Studio 工具依赖于编译器发出的有关已生成代码的其他结构信息。此信息称为“注解”,而注解会发送至名为 ".annotations" 的 ELF 部分。代码分析器的某些功能依赖于注解。生成此数据时可使用 –xannotate 选项进行控制。使用此信息的命令包括 binopt、code-analyzer、discover、collect 和 uncover。
C++ 编译器会生成在其中编码了类型信息的 ELF 符号。这些符号称为“改编名称”。改编名称的格式属于实现细节,因此在 compat=5 (Sun ABI) 模式下编译的 Oracle Developer Studio 代码不会与使用 g++ 编译的代码正确混合。在 gnu 模式下使用 Oracle Developer Studio C++ 编译器会使得对象文件兼容。有关更多信息,请参见Oracle Developer Studio 12.5:C++ 用户指南。
需要检测对象代码的编译器功能也要求在链接时包含额外的库或对象文件。使用这些功能时,您需要将可执行文件或库与 Oracle Developer Studio 编译器链接起来。请注意,将 gcc 编译的代码混合到程序或库中时不会进行检测,因此结果将不完整。
此类别中的功能包括:
分析反馈-包括选项 –xprofile 和 –xlinkopt。
传统分析-包括编译时和链接时选项 –xpg。
传统覆盖-包括选项 –xprofile=tcov 和 tcov 实用程序。
dbx 和其他 Oracle Developer Studio 工具会使用编译器生成的调试信息。这些信息大多以 DWARF 格式记录,但一些附加索引信息以名为 STABS 的旧格式记录。dwarf 的 ELF 部分以 ".debug" 开始,而 stabs 的 ELF 部分以 ".stab" 开始。