共有ライブラリは、cob -z コマンドを使用して作成します。
共有ライブラリは直接実行することができないため、これらをシステムの実行可能プログラム、または呼び出し可能な共有オブジェクトにリンクする必要があります。このため、共有ライブラリは、リンクプロセスでシステムリンカーによって検索されます。つまり、共有ライブラリ名には必ずプレフィックス lib と拡張子 .so (HP-UX PA-RISC の場合は .sl)を付ける必要があります。
cob に -o フラグを指定しない場合は、cob で libname.so (HP-UX PA-RISC の場合は libname.sl ) という名前の共有ライブラリが作成されます。 name は cob に最初に指定されたアプリケーションの基本名になります。 次に例を示します。
cob -Z myprog.cbl
このように入力すると、プログラム、 myprog.cbl がネイティブオブジェクトコードにコンパイルされます。このオブジェクトコードがリンクされ、共有ライブラリ、 libmyprog.so が作成されます。
共有ライブラリは、COBOL、C、および C++ のソースファイル、.int ファイル、または様々なタイプの .o ファイルを組み合わせて作成することができます。次に例を示します。
cob -Z myprog.cbl mysub.int csub.c -o libmyapp.so
このように入力すると、COBOL プログラム、 myprog.cbl および mysub.int がネイティブオブジェクトコードにコンパイルされ、C ソースファイル、 mysub.c は、オブジェクトファイルにコンパイルされます。生成されたこれらのオブジェクトコード、およびオブジェクトファイルが互いにリンクされ、共有ライブラリ、 libmyapp.soが作成されます。
共有ライブラリにリンクさせる C++ コードがある場合は、cob に -Z,CC フラグを指定する必要があります。これにより、(システムリンカーではなく) C++ コンパイラが起動され、共有ライブラリファイルが作成されます。 次に例を示します。
cob -Z,CC myprog.cbl mysub.int csub.c cppsub.C
このように入力すると、COBOL プログラム、 myprog.cbl および mysub.int と、C ソースファイル、 csub.c、C++ ソースファイル、 cppsub.C を使用した、共有ライブラリ、 libmyprog.so が作成されます。