スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

8.3.4 複数接続機能を使用する場合のコンパイルとリンケージ

<この項の構成>
(1) マルチスレッドの場合
(2) シングルスレッドの場合

(1) マルチスレッドの場合

OLTP用でない通常のUAPで複数接続機能を使用する場合の,UAPのコンパイルとリンケージについて説明します。

(a) UNIX環境の場合

HP-UX 11.0,Solaris,AIX,及びLinuxの場合,libcltk.a,libzcltk.slをリンケージします。複数接続機能使用時にリンケージするライブラリを次の表に示します。なお,マルチスレッドを利用するためにリンケージしなければならないライブラリについては,各OSのマニュアルを参照してください。

表8-21 複数接続機能使用時にリンケージするライブラリ

UAPが動作するOS UAPで使用するスレッド リンケージするライブラリ
共用ライブラリファイル アーカイブファイル
HP-UX 11.0
HP-UX 11i
HP-UX 11i V2 (PA-RISC)
カーネルスレッド
(ネイティブスレッド)

32ビットモードの場合:
libzcltk.sl

64ビットモードの場合:
libzcltk64.sl

32ビットモードの場合:
libcltk.a

64ビットモードの場合:
libcltk64.a
DCEスレッド libzcltm.sl libcltm.a
HP-UX 11i V2 (IPF)
HP-UX 11i V3 (IPF)
カーネルスレッド
(ネイティブスレッド)

32ビットモードの場合:
libzcltk.so

64ビットモードの場合:
libzcltk64.so
Solaris ソラリススレッド
(ネイティブスレッド)

32ビットモードの場合:
libzcltm.so
libzcltk.so

64ビットモードの場合:
libzcltk64.so

32ビットモードの場合:
libcltm.a
libcltk.a

64ビットモードの場合:
libcltk64.a
AIX 5L POSIXスレッド

32ビットモードの場合:
libzcltk.a

64ビットモードの場合:
libzcltk64.a

32ビットモードの場合:
libcltk.a

64ビットモードの場合:
libcltk64.a
AIX V6.1以降 POSIXスレッド

32ビットモードの場合:
libzclt6k.a

64ビットモードの場合:
libzclt6k64.a

Linux POSIXスレッド libzcltk.so libcltk.a
Linux(IPF) POSIXスレッド libzcltk64.so
Linux(EM64T) POSIXスレッド

32ビットモードの場合:
libzcltk.so

64ビットモードの場合:
libzcltk64.so

(凡例)
−:提供していません。

C言語の場合の例を次に示します。なお,下線で示す部分は,HiRDBのインストールディレクトリです。

<例1>HP-UX 11.0で,UAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c -D_REENTRANT -D_HP_UX_SOURCE -D_POSIX_C_SOURCE=199506L
    -L/HiRDB/client/lib/ -lzcltk -lpthread
     

<例2>HP-UX 11.0で,UAPと64ビットモード用の共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c +DD64 -D_REENTRANT -D_HP_UX_SOURCE -D_POSIX_C_SOURCE=199506L
    -L/HiRDB/client/lib/ -lzcltk64 -lpthread
     

<例3>Solarisで,Solarisスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c -D_REENTRANT -L/HiRDB/client/lib/ -lzcltk -lthread
    -lnsl -lsocket
     

<例4>Solarisで,POSIXスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS
    -L/HiRDB/client/lib/ -lzcltk -lthread -lnsl -lsocket
     

<例5>Solarisで,Solarisスレッド用のUAPと64ビットモード用の共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c -xarch=v9 -D_REENTRANT -L/HiRDB/client/lib/
    -lzcltk64 -lthread -lnsl -lsocket
     

<例6>Solarisで,POSIXスレッド用のUAPと4ビットモード用の共用ライブラリをンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c -xarch=v9 -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS
    -L/HiRDB/client/lib/ -lzcltk64 -lthread -lnsl -lsocket
     

<例7>Linuxで,UAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c -D_REENTRANT -L/HiRDB/client/lib/ -lzcltk -lthread
     

<例8>AIX 5Lで,UAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    xlc_r -I/HiRDB/include sample.c -L/HiRDB/client/lib/ -lzcltk
     

<例9>AIX 5Lで,UAPと64ビットモード用の共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    xlc_r -I/HiRDB/include sample.c -q64 -L/HiRDB/client/lib/ -lzcltk64
     

<例10>AIX V6.1以降で,UAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    xlc_r -I/HiRDB/include sample.c -L/HiRDB/client/lib/ -lzclt6k
     

<例11>AIX V6.1以降で,UAPと64ビットモード用の共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    xlc_r -I/HiRDB/include sample.c -q64 -L/HiRDB/client/lib/ -lzclt6k64
     

COBOL言語の場合,マルチスレッドに対応したバージョン(03-01以降)のCOBOL85コンパイラが必要となります。

コンパイル時には,-Mtオプション(POSIXスレッドの場合は-Mpも必要)を指定します。-Mtオプションを指定してコンパイルしたオブジェクトと,指定しないでコンパイルしたオブジェクトをリンクすると,動作は保証されません。COBOL言語の場合のコンパイルについては,マニュアル「COBOL85 使用の手引」を参照してください。

COBOL言語の場合の例を次に示します。なお,下線で示す部分は,HiRDBのインストールディレクトリです。

<例1>HP-UX 11.0でDCEスレッドを使用する場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    setenv CBLLIB /HiRDB/include
    ccbl -Mt sample.cbl -L/HiRDB/client/lib/ -lzcltm -ldce
     

<例2>HP-UX 11.0でカーネルスレッドを使用する場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lzcltk -lpthread
     

<例3>Solarisで,Solarisスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lzcltk -lpthread
     

<例4>Linuxで,POSIXスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lcltk -lpthread
     

<例5>AIX 5Lで,POSIXスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lzcltk -lpthread
     

<例6>AIX V6.1以降で,POSIXスレッド用のUAPと共用ライブラリをリンクする場合
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    setenv CBLLIB /HiRDB/include
    ccbl -Mt -Mp sample.cbl -L/HiRDB/client/lib/ -lzclt6k -lpthread
     
(b) Windows環境の場合

CLTDLL.LIBの代わりに,PDCLTM32.LIBをリンケージします。なお,OLTP下でX/Openに従ったAPIを使用したUAPの場合,PDCLTXM.LIBをリンケージします。

ここでは,Microsoft Visual C++ Version 4.2を前提として説明します。プロジェクトメニューから「設定」を選択して,各項目を設定します。「設定」で設定する項目を次の表に示します。マルチスレッドを利用するときに,リンケージする必要があるライブラリについては,各OSのマニュアルを参照してください。

表8-22 「設定」で設定する項目

項 目 カテゴリ カテゴリの設定 設 定 値
コンパイラ コード生成 構造体メンバのアライメント 8バイト
使用するランタイムライブラリ マルチスレッドDLL
プリプロセサ インクルードファイルのパス \HIRDB\INCLUDE
リンカ インプット ライブラリ \HIRDB\LIB\PDCLTM32.LIB

注 下線で示す部分は,HiRDBのインストールディレクトリを指定してください。


COBOL言語の場合,マルチスレッドに対応したバージョンのCOBOL85コンパイラが必要となります。ここでは,COBOL85 Version 5.0を前提に説明します。

コンパイル時には,コンパイラオプションダイアログボックスで-Mtオプションを指定します。-Mtオプションを指定してコンパイルしたオブジェクトと,指定しないでコンパイルしたオブジェクトをリンクすると,動作は保証されません。COBOL言語の場合のコンパイルについては,マニュアル「COBOL85 操作ガイド」を参照してください。

「オプション」メニューで設定する項目を次の表に示します。

表8-23 「オプション」メニューで設定する項目

サブメニュー ダイアログ 設定項目 設定値
コンパイラ COBOL85コンパイラオプション COBOL85コンパイラオプション -Mtの項目をチェック
環境変数設定 CBLLIB=C:\HIRDB\INCLUDE
リンカ リンカオプションの設定 インポート/ユーザ指定ライブラリ C:\HIRDB\LIB\PDCLTM32

注 下線で示す部分は,HiRDBのインストールディレクトリを指定してください。


(2) シングルスレッドの場合

シングルスレッドのUAPで複数接続機能を使用する場合の,コンパイルとリンケージの方法について説明します。なお,ここではHP-UX 11.0を例に説明します。

(a) HP-UX 11.0版でのコンパイルとリンケージ

libclt.a,libzclt.slの代わりに,libclts.a,libzclts.slをリンケージします。

コンパイル時には,次のマルチスレッド用のコンパイルオプション,及びライブラリは指定できません。

また,pthread関連のヘッダはインクルードできません。

C言語の場合の例を次に示します。なお,下線で示す部分は,HiRDBのインストールディレクトリです。

<例1>(共用ライブラリの場合)
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include  sample.c -L/HiRDB/client/lib/ -lzclts
     

<例2>(アーカイブライブラリの場合)
  • ポストソースファイルの名称がsampleで,実行形式ファイルの名称を指定しない場合
     
    cc -I/HiRDB/include sample.c -L/HiRDB/client/lib/libclts.a