如果您的应用程序或库使用原子,且它需要与使用 GCC 版本的 libatomic 的可执行文件和库互操作,则必须将您的 Oracle Developer Studio 程序与 GCC 版本的 libatomic 链接在一起。请务必确保程序中只有一个版本的原子运行时库。
要将 Oracle Developer Studio C 和 C++ 程序与 GCC 版本的 libatomic 链接在一起,请使用编译器选项 –xatomic=gcc。
如果您在较旧的系统上(/usr/lib 中没有 GCC 版本的 libatomic)链接和运行,则不必担心不兼容的原子支持。在这种情况下,可以将 libstatomic 与该系统上的 GCC 二进制文件组合使用,因为没有其他原子库在使用中。
Oracle Developer Studio 编译器最适合 libstatomic 库,但是与 GCC 的 libatomic 版本 1.1 兼容,且具有下面列出的已知问题:
GCC 4.8 包括 libatomic 1.0.0。- 如果在 C 11 程序中避免使用浮点原子,则此版本的 libatomic 支持 C11 和 C++11 原子。在更高版本的发行版推出之前,GCC 4.8 编译器本身不支持 C11。
GCC 4.9 和 5.1 包括 libatomic 1.1。- 此版本包括 C11 的浮点原子,具有这些版本的 GCC 编译器支持 C11 原子关键字。
Oracle Linux 7.x 和 Oracle Solaris 11.3 包括带有 libatomic 1.0.0 的 GCC 4.8。