COBOL2002 使用の手引 手引編


26.2.2 マルチスレッド対応COBOLプログラムのリンク

マルチスレッド対応COBOLプログラムは,ccbl2002コマンド,またはcc/ldコマンドでリンクします。

リンク時には,システムごとのスレッド制御方式に対応したスレッド関数ライブラリを指定する必要があります。また,cc/ldコマンドを使用してリンクするときは,さらに,COBOL2002スレッド関数インタフェースライブラリを指定する必要があります。

なお,cc/ldコマンドを使用して実行可能ファイルを生成する方法については,「34.1.5 ccコマンドおよびldコマンドの-lオプション」を参照してください。

〈この項の構成〉

(1) マルチスレッド対応COBOLプログラムのリンク時に指定するライブラリ

マルチスレッド対応COBOLプログラムで使用するスレッド関数ライブラリとCOBOL2002スレッド関数インタフェースライブラリとの対応を次に示します。

使用できるOS

スレッド関数ライブラリ

COBOL2002スレッド関数

インタフェースライブラリ

AIX(32)

libpthreads.a

libcbl2kmp.a

AIX(64)

libpthreads.a

libcbl2kmp64.a

Linux

libpthread.so

libcbl2kmp.so

(2) リンク方法

(a) AIX(32)の場合

AIX(32)の場合,スレッド関数ライブラリにはlibpthreads.aを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kmp.aを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合

-MultiThread,-lpthreadsオプションを指定します。

(例)
ccbl2002 -MultiThread  cmain.o SUBCBL.o -lpthreads
cc/ldコマンドを使用する場合

-lcbl2kmp,-lpthreadsオプションを指定します。

(例)
cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k/lib -lcbl2k 
   -lcbl2kml -lcbl2kmp -lpthreads -lm

(b) AIX(64)の場合

AIX(64)の場合,スレッド関数ライブラリにはlibpthreads.aを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kmp64.aを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合

-MultiThread,-lpthreadsオプションを指定します。

(例)
ccbl2002 -MultiThread  cmain.o SUBCBL.o -lpthreads
cc/ldコマンドを使用する場合

-lcbl2kmp64,-lpthreadsオプションを指定します。

(例)
cc cmain.o SUBCBL.o -q64 -L/opt/HILNGcbl2k64/lib -lcbl2k64 
   -lcbl2kml64 -lcbl2kmp64 -lpthreads -lm

(c) Linuxの場合

Linuxの場合,スレッド関数ライブラリにはlibpthread.soを,COBOL2002スレッド関数インタフェースライブラリにはlibcbl2kmp.soを使用します。指定するオプション,および指定例を次に示します。

ccbl2002コマンドを使用する場合

-MultiThread,-lpthreadオプションを指定します。

(例)
ccbl2002 -MultiThread -UniObjGen cmain.o SUBCBL.o -lpthread
cc/ldコマンドを使用する場合

-lcbl2kmp,-lpthreadオプションを指定します。

(例)Linux(x86)の場合
cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k/lib -lcbl2k
   -lcbl2kml -lcbl2kmp -lpthread -lm
(例)Linux(x64)の場合
cc cmain.o SUBCBL.o -L/opt/HILNGcbl2k64/lib -lcbl2k
   -lcbl2kml -lcbl2kmp -lpthread -lm

(3) 注意事項