スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
8.3.2 UNIX環境でのコンパイルとリンケージ
SQLプリプロセサで生成したポストソースプログラムは,SQLを埋め込んだUAPの言語に従ったコンパイラで,コンパイル,及びリンケージをします。
ここでは,コンパイル,及びリンケージを実行するときのコマンドの指定方法について,言語別に説明します。
- <この項の構成>
- (1) C言語の場合
- (2) COBOL言語の場合
- (3) 注意事項
(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で,提供ライブラリがあるディレクトリを設定する必要があります。
(a) C言語の場合のコマンド指定例
C言語の場合の例を次に示します。なお,下線で示す部分はHiRDBのインストールディレクトリです。
- <例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
|
- <例1>(共用ライブラリの場合)
- ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
- HP-UX 11.0の場合
cc +DD64 -I/HiRDB/include sample.c -L/HiRDB/client/lib -lzclt64
|
- 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
|
- Solaris 8,及びSolaris 9の場合
cc -xarch=v9 -I/HiRDB/include sample.c -L/HiRDB/client/lib -lzclt64 -lnsl -lsocket
|
- AIXの場合
xlc -q64 -I/HiRDB/include sample.c -Wl,-L/HiRDB/client/lib -lzclt64
|
- Linux(IPF)版の場合
gcc -I /HiRDB/include sample.c -L/HiRDB/client/lib -lzclt64
|
- Linux(IPF)版のマルチスレッドの場合
gcc -I /HiRDB/include sample.c -D_REENTRANT -L/HiRDB/client/lib -lzcltk64
|
- 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で,実行形式ファイルの名称を指定しない場合
- HP-UX 11.0の場合
cc +DD64 -I/HiRDB/include sample.c /HiRDB/client/lib -libclt64.a
|
- Solaris 8,及びSolaris 9の場合
cc -xarch=v9 -I/HiRDB/include sample.c -L/HiRDB/client/lib -lclt64 -lnsl -lsocket
|
- AIXの場合
xlc -q64 -I/HiRDB/include sample.c -Wl,-L/HiRDB/client/lib -lclt64
|
(b) C++言語の場合のコマンド指定例
C++言語の場合の例を次に示します。なお,下線で示す部分はHiRDBのインストールディレクトリです。
- <例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
|
- <例1>(共用ライブラリの場合)
- ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
- HP-UX 11.0の場合
CC +DA2.0w -I/HiRDB/include sample.C -L/HiRDB/client/lib -lzclt64
|
- Solaris 8,及びSolaris 9の場合
CC -xarch=v9 -I/HiRDB/include sample.C -L/HiRDB/client/lib -lzclt64 -lnsl -lsocket
|
- AIXの場合
xlc -q64 -I/HiRDB/include sample.C -Wl,-L/HiRDB/client/lib,-lzclt64
|
- <例2>(アーカイブライブラリの場合)
- ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
- HP-UX 11.0の場合
CC +DA2.0w -I/HiRDB/include sample.C /HiRDB/client/lib -libclt64.a
|
- Solaris 8,及びSolaris 9の場合
CC -xarch=v9 -I/HiRDB/include sample.C -L/HiRDB/client/lib -lclt64 -lnsl -lsocket
|
- AIXの場合
xlc -q64 -I/HiRDB/include sample.C -Wl,-L/HiRDB/client/lib,-lclt64
|
(2) COBOL言語の場合
COBOL言語のポストソースプログラムは,COBOL85,COBOL2002,MicroFocus COBOL,又はSUN日本語COBOLコンパイラでコンパイルをし,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」となります。
- <例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
|
- <例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
|
Solaris版のHiRDBでUAPを作成した場合,次のすべての条件を満たすときは,そのUAPはHiRDBサーバに接続できません。
- HiRDBクライアントがバージョン07-00-/C以降のライブラリを使用していて,かつHiRDBサーバのバージョンが07-00-/Cより前の場合
- UAPと接続するHiRDBサーバが同一マシンの場合
この場合,HiRDBサーバのクライアントライブラリ(共用ライブラリ)を使用してください。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.