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セクション)に設定してください。