2.12.1.3 新しいtm_typeswのコンパイルとリンク

インストールを簡単に行うには、バッファ・タイプ・スイッチを共有オブジェクトに格納します。

ノート:

一部のプラットフォームでは、「共有オブジェクト」ではなく「共有ライブラリ」という言葉が使用されています。Windows 2003プラットフォームでは、「共有オブジェクト」ではなく「動的リンク・ライブラリ」と呼ばれています。この3つの用語が示す機能は同じなので、ここでは「共有オブジェクト」を使用します。

ここでは、アプリケーション内のすべてのOracle Tuxedoプロセスに、変更後のバッファ・タイプ・スイッチを認識させる方法について説明します。これらのプロセスには、Oracle Tuxedoシステムで提供されるサーバーとユーティリティのほかに、アプリケーション・サーバーおよびアプリケーション・クライアントも含まれています。

  1. 「tm_typeswへの新しいバッファ・タイプの追加」の説明に従って、$TUXDIR/lib/tmtypesw.cをコピーして変更します。関数を追加する場合は、それらの関数をtmtypesw.cに記述するか、別のCソース・ファイルに記述します。
  2. 共有オブジェクトに必要なフラグを設定し、tmtypesw.cをコンパイルします。
  3. すべてのオブジェクト・ファイルをリンクして、共有オブジェクトを生成します。
  4. libbuft.so.71をカレント・ディレクトリから別のディレクトリにコピーします。コピー先のディレクトリとしては、アプリケーションがlibbuft.so.71を認識でき、Oracle Tuxedoシステムで提供されるデフォルトの共有オブジェクトより先にlibbuft.so.71が処理されるディレクトリを選択します。$APPDIRまたは$TUXDIR/libディレクトリ、または$TUXDIR/bin (Windows 2003プラットフォームの場合)のいずれかを使用することをお薦めします。

オペレーティング・システムの規則に従うために、プラットフォームが異なる場合は、バッファ・タイプ・スイッチ共有オブジェクトには異なる名前が使用されます。

表2-13 バッファ・タイプ・スイッチ共有オブジェクトのOS別の名前

プラットフォーム バッファ・タイプ・スイッチ共有オブジェクトの名前
UNIXシステム(大部分はSVR4) libbuft.so.71
HP-UX libbuft.sl
Sun OS libbuft.so.71
Windows (16ビット) wbuft.dll
Windows (32ビット) wbuft32.dll
OS/2 (16ビット) obuft.dll
OS/2 (32ビット) obuft.dll

共有オブジェクト・ライブラリのビルド方法については、お使いのプラットフォームのソフトウェア開発ドキュメントを参照してください。

別の方法として、すべてのクライアント・プロセスとサーバー・プロセスで新しいバッファ・タイプ・スイッチを静的にリンクすることもできます。ただし、この方法ではエラーが発生しやすくなり、効率も共有オブジェクト・ライブラリをビルドするより劣ります。