针对 x86 平台进行编译时,请注意几个重要问题。
编译时 xarch 设置为 –sse、sse2、sse2a、sse3 或更高的程序只能在提供这些扩展和功能的平台上运行。
在 Oracle Developer Studio 12.5 中,-xarch=generic 的缺省指令集和含义已更改为 sse2。现在,如果在不指定目标平台选项的情况下进行编译,会导致 sse2 二进制与早期的 Pentium III 或早期的系统不兼容。
如果在不同的步骤中进行编译和链接,请始终使用编译器和相同的 –xarch 设置进行链接,以确保链接正确的启动例程。
在 x86 上得到的数值结果可能与在 SPARC 上得到的结果不同,这是由 x86 80 位浮点寄存器造成的。为了最大限度减少这些差异,请使用 –fstore 选项或使用 -xarch=sse2 进行编译(如果硬件支持 SSE2)。
因为内部数学库(例如,sin(x))不同,所以 Oracle Solaris 和 Oracle Linux 之间的数值结果可能也不同。