ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

2.2.5 サーバアプリケーションのコンパイル・リンク例 (Solaris)

2.2.5.1 Cサーバアプリケーション(スレッドモード)の場合

例1 ( 実行可能ファイルとして作成する場合 )

odsvapl.c:サーバアプリケーションソース
IDL_skel.c:スケルトンソース
odsvapl:サーバアプリケーション実行可能ファイル

% IDLc IDL.idl
% cc -c -D_REENTRANT -DNeedFunctionPrototypes -I/opt/FSUNod/include -o odsvapl.o odsvapl.c
% cc -c -D_REENTRANT -DNeedFunctionPrototypes -I/opt/FSUNod/include -o IDL_skel.o IDL_skel.c
% cc -lthread -lsocket -lnsl -L/opt/FSUNod/lib -lOM -o odsvapl odsvapl.o IDL_skel.o

例2 ( 共有オブジェクトとして作成する場合 )

odsvapl.c:サーバアプリケーションソース
IDL_A_B_skel.c:スケルトンソース
libA_B.so:サーバアプリケーション共有オブジェクト

% cat IDL.idl
module A {
    interface B {
        :
    }
}
% IDLc -dy IDL.idl
% cc -c -D_REENTRANT -DNeedFunctionPrototypes -I/opt/FSUNod/include -o odsvapl.o odsvapl.c
% cc -c -D_REENTRANT -DNeedFunctionPrototypes -I/opt/FSUNod/include -o IDL_A_B_skel.o IDL_skel.c
% cc -G -Kpic -lthread -lsocket -lnsl -L/opt/FSUNod/lib -lOM -o libA_B.so odsvapl.o IDL_A_B_skel.o

  使用可能なコンパイラについては“使用上の注意”の“アプリケーション開発時に必要なソフトウェア”を参照してください。

  スレッドライブラリ(libthread.so)は、他のライブラリ群の中で必ず先頭にくるよう指定してください。リンク後、lddコマンドによりシステムライブラリ"libc.so" より上方に"libthread.so" がリンクされていることを確認してください。"libthread.so" が"libc.so" より下方にリンクされている場合、スレッドライブラリが正常に機能せず、アプリケーション誤動作の要因となるため、注意が必要です。

% ldd odsvapl
libthread.so.1 =>      /usr/lib/libthread.so.1
        :                        :
libc.so.1 =>            /usr/lib/libc.so.1
        :                        :

2.2.5.2 Cサーバアプリケーション(プロセスモード)の場合

odsvapl.c:サーバアプリケーションソース
IDL_skel.c:スケルトンソース
odsvapl:サーバアプリケーション実行可能ファイル

% IDLc IDL.idl
% cc -c -DNeedFunctionPrototypes -I/opt/FSUNod/include -o odsvapl.o odsvapl.c
% cc -c -DNeedFunctionPrototypes -I/opt/FSUNod/include -o IDL_skel.o IDL_skel.c
% cc -lsocket -lnsl -L/opt/FSUNod/lib/nt -lOM -o odsvapl odsvapl.o IDL_skel.o

  使用可能なコンパイラについては“使用上の注意”の“アプリケーション開発時に必要なソフトウェア”を参照してください。

  プロセスモードのアプリケーションでは、リンクの際にスレッドライブラリ(libthread.so)を付加しないでください。誤ってスレッドライブラリを付加していた場合、アプリケーションが誤動作する要因となります。スレッドライブラリが混在していないかは、lddコマンドにより確認できます。

  プロセスモードのアプリケーションを動作させる場合は、環境変数LD_LIBRARY_PATH に“/opt/FSUNod/lib/nt”を設定しておく必要があります。設定されていない場合、アプリ誤動作の要因となります。


2.2.5.3 COBOLサーバアプリケーション(スレッドモード)の場合

odsvapl.cbl:主プログラムソース(初期化処理部)
odsvapl_sub.cbl:副プログラムソース(I/F実装部)
IDL_A_B_skel.cbl:スケルトンソース
IDL_cdr.cbl:CDRソース
odsvapl:サーバアプリケーション実行可能ファイル
libA-B.so: サーバアプリケーション共有オブジェクト

% cat IDL.idl
module A {
    interface B {
        :
    }
}
% IDLc -cobol IDL.idl
% CORBA=/opt/FSUNod/include/COBOL
% export CORBA
% cobol -c -M -Tm odsvapl.cbl
% cobol -Tm -L/opt/FSUNod/lib -lOMcblMT -o odsvapl odsvapl.o
% cobol -G -Tm -o libIDL_cdr.so IDL_cdr.cbl
% cobol -G -Tm -o libIDL_A_B_skel.so IDL_A_B_skel.cbl
% cobol -G -Tm -L/opt/FSUNod/lib -lOMcblMT -lIDL_cdr -lIDL_A_B_skel -o libA-B.so odsvapl_sub.cbl

  COBOLで作成するCORBAアプリケーションは、動的リンク構造である必要があります。動的プログラム構造は動作保証されないため、翻訳オプションとして“DLOAD”は指定しないでください

  COBOLソースをコンパイルする際、“-dy”オプションは指定しないでください。誤って指定していた場合、アプリケーション実行時にCORBAサービスが提供するCOBOL用ライブラリ("libOMcblMT.so","libOMircblMT.so")の呼び出しに失敗し、“BAD_OPERATION”例外が発生します。


2.2.5.4 COBOLサーバアプリケーション(プロセスモード)の場合

odsvapl.cbl:主プログラムソース(初期化処理部)
odsvapl_sub.cbl:副プログラムソース(I/F実装部)
IDL_A_B_skel.cbl:スケルトンソース
IDL_cdr.cbl:CDRソース
odsvapl:サーバアプリケーション実行可能ファイル
libA-B.so: サーバアプリケーション共有オブジェクト

% cat IDL.idl 
module A {
    interface B {
        :
    }
}
% IDLc -cobol IDL.idl
% CORBA=/opt/FSUNod/include/COBOL
% export CORBA
% cobol -c -M odsvapl.cbl
% cobol -L/opt/FSUNod/lib -lOMcbl -o odsvapl odsvapl.o
% cobol -G -o libIDL_cdr.so IDL_cdr.cbl
% cobol -G -o libIDL_A_B_skel.so IDL_A_B_skel.cbl
% cobol -G -L/opt/FSUNod/lib -lOMcbl -lIDL_cdr -lIDL_A_B_skel -o libA-B.so odsvapl_sub.cbl

  COBOLで作成するCORBAアプリケーションは、動的リンク構造である必要があります。動的プログラム構造は動作保証されないため、翻訳オプションとして“DLOAD”は指定しないでください

  COBOLソースをコンパイルする際、“-dy”オプションは指定しないでください。誤って指定していた場合、アプリケーション実行時にCORBAサービスが提供するCOBOL用ライブラリ("libOMcbl.so","libOMircbl.so")の呼び出しに失敗し、“BAD_OPERATION”例外が発生します。

  プロセスモードのアプリケーションを動作させる場合は、環境変数LD_LIBRARY_PATH に“/opt/FSUNod/lib/nt”を設定しておく必要があります。設定されていない場合、アプリ誤動作の要因となります。