8.3.2 UNIX環境でのコンパイルとリンケージ
SQLプリプロセサで生成したポストソースプログラムは,SQLを埋め込んだUAPの言語に従ったコンパイラで,コンパイル,及びリンケージをします。
ここでは,コンパイル,及びリンケージを実行するときのコマンドの指定方法について,言語別に説明します。
- 〈この項の構成〉
(1) C言語の場合
C言語のポストソースプログラムは,ANSI Cに従ったコンパイラでコンパイルをし,C++言語のポストソースプログラムは,C++に従ったコンパイラでコンパイルをします。ANSI Cに従ったコンパイラを起動するには,ccコマンドを使用し,C++に従ったコンパイラを起動するには,CCコマンドを使用します。ccコマンド,又はCCコマンドを実行すると,コンパイル,及びリンケージができます。
コンパイラを起動するコマンドの入力形式を次に示します。
cc [オプション] ファイル名称 ディレクトリ 提供ライブラリ
注 C++言語の場合,下線で示す部分をCCに置き換えてください。
- ファイル名称:
-
ポストソースファイルの名称を指定します。
サフィックスは,.c(C言語の場合),又は.C(C++言語の場合)にします。
- ディレクトリ:
-
インクルードディレクトリ(HiRDBが提供するライブラリのヘッダファイルがあるディレクトリ)を指定します。
- 提供ライブラリ:
-
HiRDBが提供するライブラリを指定します。
HiRDBが提供するライブラリには,共用ライブラリとアーカイブライブラリがあります。通常時は,共用ライブラリを使用してください。使用するライブラリのバージョンを限定したい場合や,共用ライブラリが使用できないときだけ,アーカイブライブラリを使用してください。
UAPがスレッドを使用する場合,そのスレッドに対応した複数接続用ライブラリをリンクしてください。
- オプション:
-
必要に応じて次に示すオプションを指定します。
- -o:
-
出力する実行形式ファイルの名称を指定する場合に指定します。このオプションを省略すると,ファイル名称はa.outになります。
- -I:
-
インクルードディレクトリを特定する場合に必ず指定します。このオプションを省略すると,コンパイルできません。
- -Wl,+s:
-
UAP作成時とUAP実行時とで,HiRDBの提供ライブラリのディレクトリが異なる場合に指定します。なお,このオプションはHP-UX版の場合で,かつ共用ライブラリを使用するときに指定してください。また,リンケージ時と実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATH※で,提供ライブラリがあるディレクトリを設定する必要があります。
注※ Linux版の場合はLD_LIBRARY_PATHに,AIX版の場合はLIBPATHになります。
(a) C言語の場合のコマンド指定例
C言語の場合の例を次に示します。なお,下線で示す部分はHiRDBのインストールディレクトリです。
●32ビットモード対応のUAPの場合
- <例1>(共用ライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
cc -I/HiRDB/include sample.c -L/HiRDB/client/lib -lzclt
-
- <例2>(アーカイブライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称をSAMPLEにする場合
aCC +DD32 -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzclt
-
- <例3>(HP-UX (IPF)版の場合)
aCC -Ae -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzclt
- <例4>(HP-UX (IPF)版のマルチスレッドの場合)
aCC -Ae -mt -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzcltk
- <例5>(Linux(EM64T)版の場合)
gcc -m32 -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzclt
- <例6>(Linux(EM64T)版のマルチスレッドの場合)
gcc -m32 -D_REENTRANT -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzcltk
●64ビットモード対応のUAPの場合
- <例1>(共用ライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
- HP-UX (IPF)版の場合
aCC -Ae +DD64 -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzclt64
- HP-UX (IPF)版のマルチスレッドの場合
aCC -Ae -mt +DD64 -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzcltk64
- AIXの場合
xlc -q64 -I/HiRDB/include sample.c -Wl,-L/HiRDB/client/lib -lzclt64
- Linux(EM64T)版の場合
gcc -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzclt64
- Linux(EM64T)版のマルチスレッドの場合
gcc -D_REENTRANT -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzcltk64
注 シングルスレッドのUAPで複数接続機能を使用する場合も,libzcltk64.soを使用してください。
-
- <例2>(アーカイブライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
- AIXの場合
xlc -q64 -I/HiRDB/include sample.c -Wl,-L/HiRDB/client/lib -lclt64
-
(b) C++言語の場合のコマンド指定例
C++言語の場合の例を次に示します。なお,下線で示す部分はHiRDBのインストールディレクトリです。
●32ビットモード対応のUAPの場合
- <例1>(共用ライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
CC -I/HiRDB/include sample.C -L/HiRDB/client/lib -lzclt
-
- <例2>(アーカイブライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称をSAMPLEにする場合
CC -o SAMPLE -I/HiRDB/include sample.C /HiRDB/client/lib/libclt.a
-
●64ビットモード対応のUAPの場合
- <例1>(共用ライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
- HP-UXの場合
aCC +DD64 -I/HiRDB/include sample.C -L/HiRDB/client/lib -lzclt64
- AIXの場合
xlc -q64 -I/HiRDB/include sample.C -Wl,-L/HiRDB/client/lib,-lzclt64
-
- <例2>(アーカイブライブラリの場合)
-
-
ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
- AIXの場合
xlc -q64 -I/HiRDB/include sample.C -Wl,-L/HiRDB/client/lib,-lclt64
-
(2) COBOL言語の場合
COBOL言語のポストソースプログラムは,COBOL85,又はCOBOL2002でコンパイルをし,OOCOBOL言語のポストソースプログラムは,OOCOBOLに従ったコンパイラでコンパイルをします。
COBOL85に従ったコンパイラを起動するには,ccblコマンドを使用し,OOCOBOLに従ったコンパイラを起動するには,ocblコマンドを使用します。ccblコマンド,又はocblコマンドを実行すると,コンパイル,及びリンケージができます。
コンパイラを起動するときのコマンドの入力形式を次に示します。
ccbl [オプション] ファイル名称 ディレクトリ 提供ライブラリ
注 OOCOBOL言語の場合,下線で示す部分をocblに置き換えてください。
- ファイル名称:
-
ポストソースファイルの名称を指定します。
サフィックスは,.cbl(COBOL言語の場合),又は.ocb(OOCOBOL言語の場合)にします。
- ディレクトリ:
-
インクルードディレクトリ(HiRDBが提供するライブラリのヘッダファイルがあるディレクトリ)を指定します。
- 提供ライブラリ:
-
HiRDBが提供するCOBOL言語,又はOOCOBOL言語のライブラリを指定します。
- オプション:
-
次に示すオプションを指定します。
また,注意が必要なオプションについては「注意事項」を参照してください。
- -Wl,+s:
-
UAP作成時とUAP実行時とで,HiRDBの提供ライブラリのディレクトリが異なる場合に指定します。なお,このオプションはHP-UX版の場合で,かつ共用ライブラリを使用するときに指定してください。また,リンケージ時と実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。
- -o:
-
出力する実行形式ファイルの名称を指定する場合に指定します。
このオプションを省略すると,ファイル名称はa.outになります。
オプションには,-Kl,又は-Xbオプションは指定しないでください。また,-Xcオプションと-Hf,-Hv,又は-V3を同時に指定しないでください。
- 環境変数:
-
次に示す環境変数を指定します。
- CBLLIB:
-
インクルードディレクトリを指定します。
(a) COBOL言語の場合のコマンド指定例
COBOL言語の場合の例を次に示します。下線で示す部分はHiRDBのインストールディレクトリです。なお,HP-UX (IPF)版のCOBOL2002の場合は,「ccbl」が「ccbl2002」となります。
●32ビットモード対応のUAPの場合
- <例1>(共用ライブラリの場合)
-
-
ポストソースファイルの名称がsampleの場合
CBLLIB=/HiRDB/include export CBLLIB ccbl sample.cbl -L/HiRDB/client/lib -lzclt
-
- <例2>(アーカイブライブラリの場合)
-
-
ポストソースファイルの名称がsampleの場合
CBLLIB=/HiRDB/include export CBLLIB ccbl sample.cbl /HiRDB/client/lib/libclt.a
-
●64ビットモード対応のUAPの場合
- <例1>(共用ライブラリの場合)
-
-
ポストソースファイルの名称がsampleの場合
CBLLIB=/HiRDB/include export CBLLIB ccbl2002 sample.cbl -L/HiRDB/client/lib -lzclt64
-
(b) OOCOBOL言語の場合のコマンド指定例
OOCOBOL言語の場合の例を次に示します。なお,下線で示す部分はHiRDBのインストールディレクトリです。
- <例1>(共用ライブラリの場合)
-
-
ポストソースファイルの名称がsampleの場合
CBLLIB=/HiRDB/include export CBLLIB ocbl sample.ocb -L/HiRDB/client/lib -lzclt
-
- <例2>(アーカイブライブラリの場合)
-
-
ポストソースファイルの名称がsampleの場合
CBLLIB=/HiRDB/include export CBLLIB ocbl sample.ocb /HiRDB/client/lib/libclt.a
-
(3) 注意事項
(a) COBOL2002のコンパイラオプション-DynamicLinkについて
HiRDBクライアントライブラリを使用するアプリケーションのコンパイルでは,COBOL2002のコンパイラオプション-DynamicLinkの指定を次のどちらかにしてください。
-
-DynamicLinkオプションを指定しない
-
-DynamicLink,IdentCallオプションを指定する(一意名指定のCALL文だけを動的なリンクとする)
なお,-DynamicLink,Callオプションを指定した場合は,次の点に注意してください。
-
AIXの場合,HiRDBクライアントライブラリは,アーカイブ化された共用ライブラリです。そのため,COBOL2002の実行時環境変数CBLLTAGにNOARMBRを指定しないでください。NOARMBRを指定すると,アーカイブ化された共用ライブラリは動的なリンク時の検索対象になりません。
COBOL2002コンパイラオプション,実行時環境変数の詳細は,マニュアル「COBOL2002 使用の手引 手引編」を参照してください。