UNIX版Datareplicatorで反映情報編集UOCを作成する手順について説明します。
反映情報編集UOCではSQLを使う場合,直接コンパイルを実行できません。いったんCコンパイラがコンパイルできるソースに変換した後,コンパイルする必要があります。UOCを実行するまでの手順を次の図に示します。
図8-3 反映情報編集UOCの実行手順
![[図データ]](figure/rz08s030.gif)
なお,次の表に示すように,Datareplicatorの種類によって作成する反映情報編集UOCのロードモジュールの種類は異なります。
Datareplicatorの種類 | 反映情報編集UOCのロードモジュールの種類 |
---|
32ビット版 | HP-UX版 Solaris版 AIX 5L版 Linux版 | 32ビット版※1 |
64ビット版 | HP-UX版 Solaris版 AIX 5L版 | 32ビット版※1 |
IPF版 | HP-UX版 | 32ビット版※1 |
64ビット版※2 |
Linux版 | 64ビット版※2 |
- 注※1
- 32ビットモードで動作するUOCをコーディングしてください。
- 注※2
- 64ビットモードで動作するUOCをコーディングしてください。コーディングでの注意点を次に示します。
- long型は8バイトの整数として認識されます。そのため,long型はint型に修正してください。
- ポインタは8バイトとなります。UOC内でポインタの長さを特に意識した処理がなければ,修正の必要はありません。
- 反映情報編集UOCを作成するときに使用する関数が,32ビットモードと異なる場合があります。64ビットモードで使用できる関数かどうか確認してください。
- long型を使用した埋込み変数の宣言はできません。埋込み変数のlong型はint型に修正してください。
- <この項の構成>
- (1) 作成方法
- (2) コンパイル及びリンケージ
コンパイル及びリンケージについてOSごとに説明します。
なお,リンケージの未解決エラーが発生する場合は,リンケージのときに必要なライブラリすべてを指定してください。
(a) HP-UX版の場合
- IPF版の環境での32ビット版のUOCのコンパイル方法
cc -c +DD32 -I /HiRDB/include -I /opt/hirdbds/include/32 UOCソースファイル名 |
- IPF版の環境での64ビット版のUOCのコンパイル方法
cc -c +DD64 -I /HiRDB/include -I /opt/hirdbds/include UOCソースファイル名 |
- 32ビット版,又は64ビット版の環境でのUOCのコンパイル方法
cc -c -I /HiRDB/include -I /opt/hirdbds/include UOCソースファイル名 |
- -c:
- オブジェクト作成オプション
- -I /HiRDB/include:
- 下線部分に,反映側HiRDBのインストールディレクトリを指定します。
- -I /opt/hirdbds/include:
- Datareplicatorが提供するヘッダファイル格納ディレクトリを指定(/opt/hirdbds/include固定)。UOC自身がほかのヘッダファイルを必要とする場合は,複数指定できます。
- UOCソースファイル名:
- SQLプリプロセサを使って,Cコンパイラがコンパイルできるソースファイルに変換した名称を指定します。
コンパイルコマンドの文法については,該当するOSのリファレンスマニュアルを参照してください。
- IPF版の環境での32ビット版のUOCのリンケージ方法
ld -o UOC名 -u main UOCオブジェクト名 /opt/hirdbds/lib/32/libhdsuif.a /opt/hirdbds/lib/32/libhdsulb.so /opt/hirdbds/lib/32/libhdscom.so /opt/hirdbds/lib/32/libhdspck.so -lc※ |
- IPF版の環境での64ビット版のUOCのリンケージ方法
ld -o UOC名 -u main UOCオブジェクト名 /opt/hirdbds/lib/libhdsuif.a /opt/hirdbds/lib/libhdsulb.so /opt/hirdbds/lib/libhdscom.so /opt/hirdbds/lib/libhdspck.so -lc※ |
- 32ビット版,又は64ビット版の環境でのUOCのリンケージ方法
ld -o UOC名 -u main UOCオブジェクト名 /opt/hirdbds/lib/libhdsuif.a /opt/hirdbds/lib/libhdsulb.sl /opt/hirdbds/lib/libhdscom.sl /lib/crt0.o -lc ※ |
- 注1
- UOC名には,実行形式ファイル名を指定します。この実行形式ファイル名を,反映定義に指定します。UOCの実行時には,実行形式ファイルを格納したディレクトリのパス名を環境変数PATHに設定しておいてください。
- UOCオブジェクト名には,コンパイルして作成したオブジェクトファイル名を指定します。
- /opt/hirdbds/lib下のライブラリは,反映側Datareplicatorが用意しているライブラリです。これらのライブラリは必ず指定してください。
- 注2
- リンケージのコマンドに指定する実行ファイル名は,hdsで始まる名称 又はシステムにインストール済みのプログラムで禁止している名称を指定しないでください。
- 注※
- UOC内からSQLを実行するときは,これ以降のコマンド文字列に次に示すライブラリを指定してください。
- ・IPF版で32ビット版のロードモジュールを作成する場合
+s -L HiRDBをインストールしたディレクトリ/client/lib -lzcltk
- ・IPF版で64ビット版のロードモジュールを作成する場合
+s -L HiRDBをインストールしたディレクトリ/client/lib -lzcltk64
- ・32ビット版,又は64ビット版の場合
+s -L HiRDBをインストールしたディレクトリ/client/lib -lzclt
- +sは,反映側HiRDBのインストールディレクトリと反映側HiRDBの運用ディレクトリを分けて使うことを示します。+sを指定するときは,環境変数SHLIB_PATHも指定してください。
- -Lは,SHLIB_PATHを省略したときのデフォルトのサーチパスを示します。
- -lは,反映側HiRDBのリンケージライブラリ名を指定します。
(b) Solaris版の場合
- UOCのコンパイル方法
cc -c -I /HiRDB/include -I /opt/hirdbds/include UOCソースファイル名 |
- -c:
- オブジェクト作成オプション
- -I /HiRDB/include:
- 下線部分に,反映側HiRDBのインストールディレクトリを指定します。
- -I /opt/hirdbds/include:
- Datareplicatorが提供するヘッダファイル格納ディレクトリを指定(/opt/hirdbds/include固定)。UOC自身がほかのヘッダファイルを必要とする場合は,複数指定できます。
- UOCソースファイル名:
- SQLプリプロセサを使って,Cコンパイラがコンパイルできるソースファイルに変換した名称を指定します。
- UOCのリンケージ方法
/opt/SUNWspro/bin/cc -o UOC名 -u main UOCオブジェクト名 /opt/hirdbds/lib/libhdsuif.a /opt/hirdbds/lib/libhdscom.so /opt/hirdbds/lib/libhdsulb.so /opt/hirdbds/lib/libhdspck.so -L /HiRDB/libl -R /HiRDB/lib -lzclt -lsocket -lnsl -lc -ldl |
- 注1
- -Lオプションの行は,UOC内からSQLを実行するときに指定するライブラリです。下線で示す部分には,反映側HiRDBをインストールしたディレクトリを指定します。
- 注2
- -Rオプションは省略できます。ただし,省略した場合は,LD_LIBRARY_PATHに「HiRDBをインストールしたディレクトリ/lib」を追加しておく必要があります。
(c) AIX版の場合
- UOCのコンパイル方法
xlc -c -I /HiRDB/include -I /opt/hirdbds/include UOCソースファイル名 |
- -c:
- オブジェクト作成オプション
- -I /HiRDB/include:
- 下線部分に,反映側HiRDBのインストールディレクトリを指定します。
- -I /opt/hirdbds/include:
- Datareplicatorが提供するヘッダファイル格納ディレクトリを指定(/opt/hirdbds/include固定)。UOC自身がほかのヘッダファイルを必要とする場合は,複数指定できます。
- UOCソースファイル名:
- SQLプリプロセサを使って,Cコンパイラがコンパイルできるソースファイルに変換した名称を指定します。
コンパイルコマンドの文法については,該当するOSのリファレンスマニュアルを参照してください。
- UOCのリンケージ方法
xlc -o UOC名 -u main UOCオブジェクト名 /opt/hirdbds/lib/libhdspck.a /opt/hirdbds/lib/libhdsulb.a /opt/hirdbds/lib/libhdscom.a -L /HiRDB/client/lib -Wl,-blibpath:.:/usr/lib:/lib:/HiRDB/client/lib -lzclt /opt/hirdbds/lib/libhdsuif.a -lm -lc |
- 注1
- UOC名には,実行形式ファイル名を指定します。この実行形式ファイル名を,反映定義に指定します。UOCの実行時には,実行形式ファイルを格納したディレクトリのパス名を環境変数PATHに設定しておいてください。
- UOCオブジェクト名には,コンパイルして作成したオブジェクトファイル名を指定します。
- /opt/hirdbds/lib下のライブラリは,反映側Datareplicatorが用意しているライブラリです。これらのライブラリは必ず指定してください。
- 注2
- リンケージのコマンドに指定する実行ファイル名は,hdsで始まる名称 又はシステムにインストール済みのプログラムで禁止している名称を指定しないでください。
- 注3
- -Lオプションの行は,UOC内からSQLを実行するときに指定するライブラリです。下線で示す部分には,反映側HiRDBをインストールしたディレクトリを指定します。
(d) Linux版の場合
- 32ビット版又はIPF版の環境でのUOCのコンパイル方法
gcc -c -I /HiRDB/include -I /opt/hirdbds/include UOCソースファイル名 |
- EM64T版の環境でのUOCのコンパイル方法
gcc -c -m32 -I /HiRDB/include -I /opt/hirdbds/include UOCソースファイル名 |
- -c:
- オブジェクト作成オプション
- -I /HiRDB/include:
- 下線部分に,反映側HiRDBのインストールディレクトリを指定します。
- -I /opt/hirdbds/include:
- Datareplicatorが提供するヘッダファイル格納ディレクトリを指定(/opt/hirdbds/include固定)。UOC自身がほかのヘッダファイルを必要とする場合は,複数指定できます。
- UOCソースファイル名:
- SQLプリプロセサを使って,Cコンパイラがコンパイルできるソースファイルに変換した名称を指定します。
コンパイルコマンドの文法については,該当するOSのリファレンスマニュアルを参照してください。
- 32ビット版又はIPF版の環境でのUOCのリンケージ方法
gcc -o UOC名 -u main UOCオブジェクト名 /opt/hirdbds/lib/libhdsuif.a /opt/hirdbds/lib/libhdsulb.so /opt/hirdbds/lib/libhdscom.so /opt/hirdbds/lib/libhdspck.so -lpthread※1 -ldl -L/HiRDB/client/lib -lzcltk64※2 -Wl,-R/HiRDB/client/lib |
- 注※1
- 32ビット版の場合,-lpthreadは不要です。
- 注※2
- 32ビット版の場合,-lzcltk64は-lzcltに読み替えてください。
- EM64T版の環境でのUOCのリンケージ方法
gcc -o UOC名 -m32 -u main UOCオブジェクト名 /opt/hirdbds/lib/libhdsuif.a /opt/hirdbds/lib/libhdsulb.so /opt/hirdbds/lib/libhdscom.so /opt/hirdbds/lib/libhdspck.so -lpthread -ldl -L/HiRDB/client/lib -lzclt -Wl,-R/HiRDB/client/lib |
- 注1
- -Rオプションは省略できます。ただし,省略した場合は,LD_LIBRARY_PATHに「HiRDBをインストールしたディレクトリ/lib」を追加しておく必要があります。
- 注2
- -lは,反映側HiRDBのリンケージライブラリ名を指定します。
- 注3
- -Lオプションの行は,UOC内からSQLを実行するときに指定するライブラリです。下線で示す部分には,反映側HiRDBをインストールしたディレクトリを指定します。