Oracle® Developer Studio 12.5:C 用户指南

退出打印视图

更新时间: 2016 年 7 月
 
 

3.2.1 选择原子库

可以选择使用 Oracle Developer Studio 原子库 (libstatomic.so) 或 GCC 原子库 (libatomic.so),但是在链接在一起的可执行文件和库之间务必将此保持一致。在正在运行的进程中,应当仅使用一个原子库。


注 -  如果不需要与 gcc 生成的使用原子的库兼容,则应该将 libstatomic.so 与 Oracle Developer Studio 编译器一起使用。

要控制在链接时使用的库,请使用 –xatomic 选项。要链接到 Oracle Developer Studio 的库 libstatomic,请使用 –xatomic=studio;要链接到 GCC 的库 libatomic,请使用 –xatomic=gcc。要阻止与某个库进行链接,请使用 –xatomic=none

为了帮助移植使用 GCC 编译器的现有 Makefile 或源代码,如果向编译器传递了 –latomic,该选项将转换为 –xatomic=studio

对于 C++ 程序,当需要时,缺省情况下会链接原子支持库。


注 -  –xatomic=none 选项可确保应用程序不会将 Oracle Developer Studio libstatomic 安装目录作为运行路径。为了生成使用 –xatomic=none 调用库函数的应用程序,在生成时应该显式链接 libstatomic.so

部署使用 libstatomic.so 的应用程序

作为 Oracle Developer Studio 产品的一部分,捆绑的原子库 libstatomic.so 完全受支持。您可以部署使用该库的应用程序,但是除非应用程序在已安装了 Oracle Developer Studio 的系统上运行,否则需要包括该库。

  1. 确定从您的可执行文件到 listatomic.so 的运行时路径。

    例如:

    ./lib
  2. 确定 libstatomic.so 的生成时路径。

    例如:

    build-path/import/libstatomic.so
  3. –xatomic=none 添加到链接步骤。
  4. 添加新的链接时选项。

    例如:

    –R runtime-path build-path-to-atomics/libstatomic.so.1
  5. 将 libstatomic 库复制到您自己的产品安装树中。
示例 1  myprog 可执行文件包含 libstatomic.so

以下示例在未安装 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