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