可以选择使用 Oracle Developer Studio 原子库 (libstatomic.so) 或 GCC 原子库 (libatomic.so),但是在链接在一起的可执行文件和库之间务必将此保持一致。在正在运行的进程中,应当仅使用一个原子库。
要控制在链接时使用的库,请使用 –xatomic 选项。要链接到 Oracle Developer Studio 的库 libstatomic,请使用 –xatomic=studio;要链接到 GCC 的库 libatomic,请使用 –xatomic=gcc。要阻止与某个库进行链接,请使用 –xatomic=none。
为了帮助移植使用 GCC 编译器的现有 Makefile 或源代码,如果向编译器传递了 –latomic,该选项将转换为 –xatomic=studio。
对于 C++ 程序,当需要时,缺省情况下会链接原子支持库。
作为 Oracle Developer Studio 产品的一部分,捆绑的原子库 libstatomic.so 完全受支持。您可以部署使用该库的应用程序,但是除非应用程序在已安装了 Oracle Developer Studio 的系统上运行,否则需要包括该库。
例如:
./lib
例如:
build-path/import/libstatomic.so
例如:
–R runtime-path build-path-to-atomics/libstatomic.so.1
以下示例在未安装 Oracle Developer Studio 的 64 位 SPARC 平台上部署应用程序。
在生成计算机上生成应用程序之前,请确定要将 libstatomic 放置到的相对于可执行文件的位置。例如,如果应用程序位于 app_root,而 libstatomic 库在 app_root/lib 中,则该库的相对目录是 ./lib。
bash-4.1$ ls app_root/ lib myprog bash-4.1$ ls app_root/lib/ libstatomic.so libstatomic.so.1
在生成计算机上,确定 libstatomic.so 的位置。例如,如果 Oracle Developer Studio 安装在 install-dir/ 中,则 libstatomic.so 位于 install-dir/lib/compilers/atomic/sparcv9/libstatomic.so 中。
使用以下命令编译程序:
$ install-dir/bin/CC -m64 [compiler-options] -xatomic=none myprog.cc -o myprog -R./lib install-dir/lib/compilers/atomic/sparcv9/libstatomic.so
在部署计算机上,创建软件包目录。
然后将 64 位 libstatomic.so 库复制到 app_root/lib。
$ cp install-dir/lib/compilers/atomic/sparcv9/libstatomic.so app_root/lib
将为 myprog 生成的可执行文件复制到 app_root 目录。这样,在执行 myprog 时,运行时链接程序就可以在 ./lib 下找到 libstatomic.so。
$ cp myprog.out app_root