共有ライブラリの作成

共有ライブラリを直接実行することはできません。システム実行可能プログラムまたは呼び出し可能な共有オブジェクトにリンクする必要があります。共有ライブラリ名には必ずプレフィックス lib および拡張子 .so を付ける必要があります。

デフォルトでは、libname.so という名前の共有ライブラリが作成されます。name は cob に最初に指定されたアプリケーションのベース名になります。たとえば、次のコマンドでは、プログラム myprog.cbl がネイティブ オブジェクト コードにコンパイルされます。このオブジェクト コードがリンクされ、共有ライブラリ libmyprog.so が作成されます。

cob -Z myprog.cbl

共有ライブラリ ファイルはそれ自体を実行することはできません。cob のコマンド ラインで、-l フラグを使用して、システム実行可能プログラムにリンクする必要があります。たとえば、次のコマンドでは、実行時に libmyprog.so をロードするシステム実行可能プログラム myapp が作成されます。

cob -x myapp.o -L. -lmyprog

共有ライブラリは、COBOL、C、および C++ のソース ファイル、.int ファイル、またはさまざまなタイプの .o ファイルを組み合わせて作成することができます。たとえば、次のコマンドでは、COBOL プログラム myprog.cbl および mysub.int がネイティブ オブジェクト コードにコンパイルされ、C ソース ファイル mysub.c がオブジェクト ファイルにコンパイルされます。生成されたこれらのオブジェクト コードおよびオブジェクト ファイルが互いにリンクされ、共有ライブラリ libmyapp.so が作成されます。

cob -Z myprog.cbl mysub.int csub.c -o libmyapp.so

共有ライブラリにリンクさせる C++ コードがある場合は、cob に -Z,CC フラグを指定する必要があります。これにより、(システム リンカーではなく) C++ コンパイラが起動され、共有ライブラリ ファイルが作成されます。たとえば、次のコマンドでは、COBOL プログラムの myprog.cblmysub.int、C ソース ファイルの csub.c、および C++ ソース ファイルの cppsub.C を使用した共有ライブラリ libmyprog.so が作成されます。

cob -Z,CC myprog.cbl mysub.int csub.c cppsub.C