自己格納式の呼び出し可能共有オブジェクト

自己格納式の呼び出し可能共有オブジェクトは、実行ファイルに似ていますが、COBOL 以外の実行ファイルによってロードされるように設計されています。このオブジェクトは、cob コマンドを使用してオブジェクトをメインの実行可能ファイル (DB2 のようなサードパーティの実行可能ファイルなど) に再リンクできない場合にのみ使用します。

次のように、-y cob フラグを使用して、自己格納式の呼び出し可能共有オブジェクトを作成します。

cob -y obj1.o obj2.o obj3.o

デフォルトでは、生成されるファイルのベース名にはリンクされる最初のファイルの名前が使用され、ファイル拡張子 .soが付けられます。上記の例では、ファイル obj1.so になります。ベース名により、メイン エントリ ポイントが形成されますが、-e フラグを使用してこれを上書きすることはできません。

入力ファイルとしては、.gnt ファイル以外のタイプのファイルを指定できます。オブジェクト モジュール ファイル (.o) を使用する場合、これらのファイルはシステム リンカー (ld) を使用してリンクされます。また、CC オプションを使用して、C++ オブジェクトをライブラリ ファイルにリンクすることもできます。C++ ソース ファイルが指定されると、はじめに C++ コンパイラが起動されてこれらをオブジェクトにコンパイルします。

自己格納式の呼び出し可能共有オブジェクトをロードするには、次のようにdlopen() 関数を使用する必要があります。

handle=dlopen("obj1.so", RTLD_GLOBAL|RTLD_NOW);
制限事項:一度にプロセスにロードできる自己格納式の呼び出し可能共有オブジェクトは 1 つだけです。したがって、同じプロセスに別の自己格納式の呼び出し可能共有オブジェクトをロードする前に、現在の自己格納式の呼び出し可能共有オブジェクトをアンロードする必要があります。