Oracle® Developer Studio 12.5: C ユーザーズガイド

印刷ビューの終了

更新: 2016 年 7 月
 
 

3.2.1 不可分ライブラリの選択

Oracle Developer Studio 不可分ライブラリ (libstatomic.so) または GCC 不可分ライブラリ (libatomic.so) のいずれかを使用できますが、一緒にリンクされる実行可能ファイルおよびライブラリの間で一貫性を保つことが重要です。実行中のプロセスで使用される不可分ライブラリは 1 つだけにします。


注 -  不可分機能を使用する gcc 組み込みライブラリとの互換性を確保する必要がない場合、Oracle Developer Studio コンパイラと一緒に libstatomic.so を使用します。

リンク時に使用されるライブラリを制御するには、–xatomic オプションを使用します。Oracle Developer Studio のライブラリ libstatomic にリンクするには –xatomic=studio を使用し、GCC のライブラリ libatomic にリンクするには –xatomic=gcc を使用します。ライブラリとのリンクを行わない場合は、–xatomic=none を使用します。

GCC コンパイラを使用する既存のメイクファイルまたはソースコードの移植に役立つように、–latomic がコンパイラに渡された場合、そのオプションは –xatomic=studio に変換されます。

C++ プログラムの場合、不可分サポートライブラリは必要なときにデフォルトでリンクされます。


注 -  –xatomic=none オプションにより、アプリケーションは Oracle Developer Studio libstatomic インストールディレクトリを実行パスとして持たなくなります。–xatomic=none でライブラリ関数を呼び出すアプリケーションを構築するには、libstatomic.so を構築時に明示的にリンクするようにします。

libstatomic.so を使用するアプリケーションの配備

バンドルされている不可分ライブラリ libstatomic.so は、Oracle Developer Studio 製品の一部として完全にサポートされています。ライブラリを使用するアプリケーションを配備できますが、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.soinstall-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