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

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

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

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

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

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

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.6.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.6.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.6.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”を設定しておく必要があります。設定されていない場合、アプリ誤動作の要因となります。