Interstage Application Server アプリケーション作成ガイド (コンポーネントトランザクションサービス編)
目次 索引 前ページ次ページ

第3章 サーバアプリケーションの作成(C++言語)> 3.4 ソースのコンパイル・リンク

3.4.5 プロセスモードのアプリケーションのコンパイルとリンク

[コンパイル時に指定するインクルードパス]

IDLコンパイルを実施したディレクトリ

TDのインストールディレクトリ/include

ODのインストールディレクトリ/include

EXTPのインストールディレクトリ/include

 アプリケーションをプロセスモードで動作させる場合は、以下のオプションは指定しないでください。

 -mt -D_REENTRANT

 -D_REENTRANT

[リンク時に指定するライブラリ]

Sun WorkShop C++ 4.2 Compilersを使用する場合

ライブラリ名

格納場所

用途

libsocket.so

/usr/lib

ソケットライブラリ(必須)

libnsl.so

/usr/lib

TLIライブラリ(必須)

libC.so

/usr/lib

Cライブラリ(必須)

libOM.so

ODのインストールディレクトリ/lib/nt

ODランタイム(注)

libOMcncpp.so

ODのインストールディレクトリ/lib

ODランタイム(注)

libextpapiskl_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libtdalcapi_nt.so

TDのインストールディレクトリ/lib

TDランタイム(必須)

libtdapicpp_nt.so

TDのインストールディレクトリ/lib

TDランタイム(必須)

libOMcpp.so

ODのインストールディレクトリ/lib

ODランタイム(必須)

libextpapmcom_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libextpapmbase_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libextpapmlibTDNORM_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用する場合

ライブラリ名

格納場所

用途

libsocket.so

/usr/lib

ソケットライブラリ(必須)

libnsl.so

/usr/lib

TLIライブラリ(必須)

libOM.so

ODのインストールディレクトリ/lib/nt

ODランタイム(注)

libOMcncpp50.so

ODのインストールディレクトリ/lib

ODランタイム(注)

libextpapiskl_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libtdalcapi_nt.so

TDのインストールディレクトリ/lib

TDランタイム(必須)

libtdapicpp50_nt.so

TDのインストールディレクトリ/lib

TDランタイム(必須)

libOMcpp50.so

ODのインストールディレクトリ/lib

ODランタイム(必須)

libextpapmcom50_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libextpapmbase50_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libextpapmlibTDNORM50_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

ライブラリ名

格納場所

用途

libnsl.so

/usr/lib

TLIライブラリ(必須)

libC.so

/usr/lib

Cライブラリ(必須)

libOM.so

ODのインストールディレクトリ/lib/nt

ODランタイム(注)

libOMcncpp.so

ODのインストールディレクトリ/lib

ODランタイム(注)

libextpapiskl_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libtdalcapi_nt.so

TDのインストールディレクトリ/lib

TDランタイム(必須)

libtdapicpp_nt.so

TDのインストールディレクトリ/lib

TDランタイム(必須)

libOMcpp.so

ODのインストールディレクトリ/lib

ODランタイム(必須)

libextpapmcom_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libextpapmbase_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

libextpapmlibTDNORM_nt.so

EXTPのインストールディレクトリ/lib

TDランタイム(必須)

(注)
 
中継用サーバアプリケーションを作成するとき、および、例外を使用するときに必要です。

[コンパイル・リンク手順の例]

Sun WorkShop Compilers C++ 4.2を使用する場合

  %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include tdsample1_s.C
  %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include -I/opt/FSUNextp/include 
  TD_TDSAMPLE1_INTF_skel_c++.C
  %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include TD_tdsample1_c++.C
  %CC -o tdsample1_s_nt tdsample1_s.o TD_TDSAMPLE1_INTF_skel_c++.o TD_tdsample1_c++.o
  -lsocket -lnsl -lC -L/opt/FSUNod/lib/nt -L/opt/FSUNod/lib -lOMcpp
  -L/opt/FSUNtd/lib -ltdalcapi_nt -ltdapicpp_nt -L/opt/FSUNextp/lib -lextpapiskl_nt
  -lextpapmlibTDNORM_nt -lextpapmcom_nt -lextpapmbase_nt
  %

Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用する場合

  %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include tdsample1_s.C
  %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include -I/opt/FSUNextp/include 
  TD_TDSAMPLE1_INTF_skel_c++.C
  %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include TD_tdsample1_c++.C
  %CC -o tdsample1_s_nt tdsample1_s.o TD_TDSAMPLE1_INTF_skel_c++.o TD_tdsample1_c++.o
  -lsocket -lnsl -L/opt/FSUNod/lib/nt -L/opt/FSUNod/lib -lOMcpp50 -L/opt/FSUNtd/lib
  -ltdalcapi_nt -ltdapicpp50_nt -L/opt/FSUNextp/lib -lextpapiskl_nt 
  -lextpapmlibTDNORM50_nt -lextpapmcom50_nt -lextpapmbase50_nt
  %

注意

 Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用してアプリケーションを作成する場合、リンクオプションに“-lC”および“-lCrun”を指定しないでください。
 また、Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用して、Sun WorkShop Compilers C++4.2互換性モードのアプリケーションを作成する場合、コンパイル時およびリンク時に“ -compat”オプションを設定してください。

 作成したアプリケーションライブラリにスレッドライブラリが結合されていないことを確認してください。
 アプリケーションのコンパイル/リンクの手順に誤りがあった場合や、libthread.soがリンクされている場合、ワークユニット起動/停止処理またはクライアントとの通信が無応答状態となる可能性があります。その場合、以下の対処を行ってください。

1. 当該ワークユニット配下で動作しているアプリケーションプロセスのプロセスIDを特定します。

 % ps -ef | grep ワークユニット名

2. 当該ワークユニット配下で動作しているアプリケーションプロセスを強制停止します。

 % kill -9 プロセスID

  %g++ -c -I/opt/FJSVod/include -I/opt/FJSVtd/include tdsample1_s.C
  %g++ -c -I/opt/FJSVod/include -I/opt/FJSVtd/include -I/opt/FJSVextp/include 
  TD_TDSAMPLE1_INTF_skel_c++.C
  %g++ -c -I/opt/FJSVod/include -I/opt/FJSVtd/include TD_tdsample1_c++.C
  %g++ -o tdsample1_s_nt tdsample1_s.o TD_TDSAMPLE1_INTF_skel_c++.o TD_tdsample1_c++.o
  -lnsl -lC -L/opt/FJSVod/lib/nt -L/opt/FJSVod/lib -lOMcpp
  -L/opt/FJSVtd/lib -ltdalcapi_nt -ltdapicpp_nt -L/opt/FJSVextp/lib -lextpapiskl_nt
  -lextpapmlibTDNORM_nt -lextpapmcom_nt -lextpapmbase_nt
  %

注意

 作成したアプリケーションライブラリにスレッドライブラリが結合されていないことを確認してください。
 アプリケーションのコンパイル/リンクの手順に誤りがあった場合や、libpthread.soがリンクされている場合、ワークユニット起動/停止処理またはクライアントとの通信が無応答状態となる可能性があります。その場合、以下の対処を行ってください。

1. 当該ワークユニット配下で動作しているアプリケーションプロセスのプロセスIDを特定します。

 % ps -ef | grep ワークユニット名

2. 当該ワークユニット配下で動作しているアプリケーションプロセスを強制停止します。

 % kill -9 プロセスID

リンク時の注意事項

 サーバアプリケーションのリンク時には、上記のライブラリのほかに、データベースや連携する他製品のライブラリなど、サーバアプリケーションで必要なライブラリがすべてリンクされていることを確認してください。また、リンクしたライブラリの格納先をワークユニット定義のアプリケーション使用ライブラリパス(Library for Applicationセクション)に設定してください。

 サーバアプリケーションがC++言語の場合には、必ず“/opt/FSUNod/lib/nt”を指定しなければなりません。
 サーバアプリケーションがC++言語の場合には、必ず“/opt/FJSVod/lib/nt”を指定しなければなりません。

 リンクが完全でない場合やワークユニット定義のアプリケーション使用ライブラリパスが完全でない場合は、ワークユニット起動処理において実行ファイルのオープン処理に失敗し、メッセージ(EXTP4640,EXTP4643,EXTP4645,EXTP4508)が出力されます。

 以下に必要なワークユニット定義の設定例を示します。

ワークユニット定義の設定例

 サーバアプリケーションの実行ファイルが“application1”、格納先が/application/bin、サーバアプリケーションにリンクされているライブラリの格納先が、それぞれ、“/product1/lib”、“/product2/lib”の場合の定義例を以下に示します。

 [WORK UNIT]
 Name: SAMPLEWU
 Kind: ORB
 [APM]
 Name: TDNORM

 [Control Option]
 …
 Path: /application/bin
 Library for Application: /product1/lib
 Library for Application: /product2/lib
 Library for Application: /opt/FSUNod/lib/nt
 …

 [Application Program]
 …
 Executable File: application1

 [WORK UNIT]
 Name: SAMPLEWU
 Kind: ORB
 [APM]
 Name: TDNORM

 [Control Option]
 …
 Path: /application/bin
 Library for Application: /product1/lib
 Library for Application: /product2/lib
 Library for Application: /opt/FJSVod/lib/nt
 …

 [Application Program]
 …
 Executable File: application1

 サーバアプリケーションにリンクされているライブラリの格納先が複数存在する場合は、アプリケーション使用ライブラリパス(Library for Applicationセクション)を複数設定してください。
 また、出口プログラムにリンクされているライブラリの格納先についても、同様にアプリケーション使用ライブラリパス(Library for Applicationセクション)に設定してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2005