ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(コンポーネントトランザクションサービス編)
FUJITSU Software

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

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

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

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

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

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

  -mt -D_REENTRANT

  -D_REENTRANT

  サーバアプリケーションのリンク時に指定するライブラリを以下に示します。

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

ライブラリ名

格納場所

用途

libtdalcapi_nt.so

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

TDランタイム(必須)

libextpapiskl_nt.so

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

TDランタイム(必須)

libOM.so

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

ODランタイム(注1)

libOMcn.so

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

ODランタイム(注2)

libsocket.so

/usr/lib

ソケットライブラリ(注1)

libnsl.so

/usr/lib

TLIライブラリ(注1)

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

  (注2)
  中継用サーバアプリケーションを作成するときに必要です。

  なお、リンカにより結合処理を行う場合、以下のオプションを指定してください。

  -dy -G

  サーバアプリケーションとスケルトンをコンパイル後、リンクする手順について例を以下に示します。

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

ライブラリ名

格納場所

用途

libtdalcapi_nt.so

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

TDランタイム(必須)

libextpapiskl_nt.so

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

TDランタイム(必須)

libOM.so

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

ODランタイム(注1

libOMcn.so

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

ODランタイム(注2

libnsl.so

/usr/lib

TLIライブラリ(注1

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

  (2)
  中継用サーバアプリケーションを作成するときに必要です。

  サーバアプリケーションとスケルトンをコンパイル後、リンクする手順について例を以下に示します。

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

  %cc -c -I/opt/FSUNod/include -I/opt/FSUNtd/include tdsample1_s.c
  %cc -c -I/opt/FSUNod/include -I/opt/FSUNtd/include TD_TDSAMPLE1_INTF_skel.c
  %cc -G -o libtdsample1_nt.so tdsample1_s.o TD_TDSAMPLE1_INTF_skel.o 
   -L/opt/FSUNtd/lib -ltdalcapi_nt -L/opt/FSUNextp/lib -lextpapiskl_nt
  %
注意

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

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

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

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

  % kill -9 プロセスID

注意

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

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

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

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

  % kill -9 プロセスID

リンク時の注意事項

  サーバアプリケーションのリンク時には、上記のライブラリのほかに、データベースや連携する他製品のライブラリなど、サーバアプリケーションで必要なライブラリがすべてリンクされていることを確認してください。また、リンクしたライブラリの格納先をワークユニット定義のアプリケーション使用ライブラリパス(Library for Applicationセクション)に設定してください。
  リンクが完全でない場合やワークユニット定義のアプリケーション使用ライブラリパスが完全でない場合は、ワークユニット起動処理において実行ファイルのオープン処理に失敗し、メッセージ(EXTP4640,EXTP4643,EXTP4645,EXTP4508)が出力されます。

  プロセスモードの場合でリンク時にlibOM.soを指定する場合には、必ず“/opt/FSUNod/lib/nt”を指定しなければなりません。

  プロセスモードの場合でリンク時にlibOM.soを指定する場合には、必ず“/opt/FJSVod/lib/nt”を指定しなければなりません。

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

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

  サーバアプリケーションの実行ファイルが“application1.so”、格納先が/application/lib、サーバアプリケーションにリンクされているライブラリの格納先が、それぞれ、“/product1/lib”、“/product2/lib”で、プロセスモードでかつリンク時にlibOM.soを指定する場合の定義例を以下に示します。

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

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

  [Application Program]
  …
  Executable File: application1.so

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

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

  [Application Program]
  …
  Executable File: application1.so

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