サポートされているすべてのオペレーティング・システム用に、C のユーザー定義拡張機能をコンパイルします。
独自のユーザー定義ノード、パーサー、およびユーザー出口を C によって作成する場合、それらをターゲット・ブローカーが稼働しているオペレーティング・システム上でコンパイルしてください。
ノードとパーサーの両方についてサンプルが提供され、サンプル・ノード・ファイルおよびサンプル・パーサー・ファイルで説明されています。
ここにある指示を使用して、サンプルをコンパイルしてください。
独自の拡張機能を作成する場合、以下のトピックを参照してください。
これらの指示では、提供されるサンプルのファイル名を使用しています。 独自のユーザー定義拡張機能をコンパイルする場合は、自分のファイル名に置き換えてください。
C で書かれたユーザー定義拡張機能をコンパイルする場合には、互換性のあるコンパイラーが必要です。 サポートされるコンパイラーについての詳細は、オプションのソフトウェア・サポートを参照してください。
サポートされている各オペレーティング・システム上でユーザー定義拡張機能のソースをコンパイルし、実行可能ファイルを作成します。このファイルは、ブローカーがユーザー定義拡張機能をインプリメントするために呼び出すファイルです。 Linux®、UNIX®、および z/OS® システムの場合、このファイルはロード可能実装ライブラリー・ファイル (LIL) で、Windows® システムの場合にはダイナミック・ロード・ライブラリー (DLL) です。
ユーザー定義ノードやパーサーを組み込むために作成するライブラリーには、ブローカーがそれらをロードできるようにするため、すべてのオペレーティング・システム上で .lil という拡張子がなければなりません。ユーザー出口が含まれるライブラリーには、すべてのオペレーティング・システム上で .lel という拡張子がなければなりません。このトピックでの例には、拡張子 .lil のライブラリーが示されています。
使用するプログラムで必要となることのあるコンパイルおよびリンクの使用可能なオプションについての詳細は、使用するコンパイラーの文書を参照してください。
ユーザー定義拡張のソース・コードがあるディレクトリーまでナビゲートし、以下のオペレーティング・システムごとの指示に従ってください。
C で書かれたユーザー定義拡張機能をコンパイルする場合には、サポートされるコンパイラーを使用してください。
xlc_r -q32 ¥ -I. \ -I/install_dir/include/plugin ¥ -c SwitchNode.c ¥ -o SwitchNode.o xlc_r -q32 ¥ -I. \ -I/install_dir/include/plugin ¥ -c BipSampPluginUtil.c ¥ -o BipSampPluginUtil.o xlc_r -q32 ¥ -I. \ -I/install_dir/include/plugin ¥ -c Common.c ¥ -o Common.o xlc_r -q32 ¥ -I. \ -I/install_dir/include/plugin ¥ -c NodeFactory.c ¥ -o NodeFactory.o xlc_r -q32 ¥ -qmkshrobj ¥ -bM:SRE ¥ -bexpall ¥ -bnoentry ¥ -o SwitchNode.lil SwitchNode.o ¥ BipSampPluginUtil.o Common.o NodeFactory.o ¥ -L /install_dir/lib ¥ -l imbdfplg chmod a+r SwitchNode.lil
C で書かれたユーザー定義拡張機能をコンパイルする場合には、サポートされるコンパイラーを使用してください。
cc +z -DD32 ¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c BipSampPluginUtil.c ¥ -o output_dir/BipSampPluginUtil.o ¥ -Ae cc +z -DD32 ¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c Common.c ¥ -o output_dir/Common.o ¥ -Ae cc +z -DD32 ¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c NodeFactory.c ¥ -o output_dir/NodeFactory.o ¥ -Ae cc +z -DD32 ¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c SwitchNode.c ¥ -o output_dir/SwitchNode.o ¥ -Ae cc +z -DD32 ¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c TransformNode.c ¥ -o output_dir/TransformNode.o ¥ -Ae ld -b ¥ -o output_dir/SwitchNode.lil ¥ output_dir/BipSampPluginUtil.o ¥ output_dir/Common.o ¥ output_dir/NodeFactory.o ¥ output_dir/SwitchNode.o ¥ output_dir/TransformNode.o ¥ -L install_dir/lib ¥ -L install_dir/xml4c/lib ¥ -L install_dir/merant/lib ¥ -L install_dir/jre/lib/PA_RISC2.0 ¥ -L install_dir/jre/lib/PA_RISC2.0/server ¥ -l imbdfplg chmod a+r output_dir/SwitchNode.lil
C で書かれたユーザー定義拡張機能をコンパイルする場合には、サポートされるコンパイラーを使用してください。
aCC -O +DD64 -AA -mt +z¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c BipSampPluginUtil.c ¥ -o output_dir/BipSampPluginUtil.o aCC -O +DD64 -AA -mt +z¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c Common.c ¥ -o output_dir/Common.o aCC -O +DD64 -AA -mt +z¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c NodeFactory.c ¥ -o output_dir/NodeFactory.o aCC -O +DD64 -AA -mt +z¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c SwitchNode.c ¥ -o output_dir/SwitchNode.o aCC -O +DD64 -AA -mt +z¥ -I. \ -I/install_dir/include ¥ -I/install_dir/include/plugin ¥ -c TransformNode.c ¥ -o output_dir/TransformNode.o ld -b ¥ -o output_dir/SwitchNode.lil ¥ output_dir/BipSampPluginUtil.o ¥ output_dir/Common.o ¥ output_dir/NodeFactory.o ¥ output_dir/SwitchNode.o ¥ output_dir/TransformNode.o ¥ -L install_dir/lib ¥ -L install_dir/xml4c/lib ¥ -L install_dir/merant/lib ¥ -L install_dir/jre/lib/IA64N¥ -L install_dir/jre/lib/IA64N/server ¥ -l imbdfplg chmod a+r output_dir/SwitchNode.lil
C で書かれたユーザー定義拡張機能をコンパイルする場合には、サポートされるコンパイラーを使用してください。
/usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/install_dir/include -I/install_dir/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE TransformNode.c /usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/install_dir/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE SwitchNode.c /usr/bin/gcc -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/install_dir/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE BipSampPluginUtil.c /usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/install_dir/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE Common.c /usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/install_dir/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE NodeFactory.c /usr/bin/g++ -o samples.lil TransformNode.o SwitchNode.o BipSampPluginUtil.o Common.o NodeFactory.o -shared -lc -lnsl -ldl -L/install_dir/lib -limbdfplg
これらのコマンドでは、 TransformNode オブジェクトと SwitchNode オブジェクトを含む、ファイル samples.lil が作成されます。
g++ を使用して C ユーザー定義拡張機能を構築する場合は、多少の変更が必要です。interface 関数を C++ コンパイラーに対する C スタイル関数として定義する必要があります。 以下の例では、ifdefs は、コードを移植可能にしておき extern "C" ディレクティブを C コンパイラーから隠蔽します。
#ifdef __cplusplus extern "C"{ #endif void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory() { ... ... } #ifdef __cplusplus } #endif
C で書かれたユーザー定義拡張機能をコンパイルする場合には、サポートされるコンパイラーを使用してください。
cc -mt ¥
-I. \
-I/install_dir/include ¥
-I/install_dir/include/plugin ¥
-c SwitchNode.c ¥
-o output_dir/SwitchNode.o
cc -mt ¥
-I. \
-I/install_dir/include ¥
-I/install_dir/include/plugin ¥
-c BipSampPluginUtil.c ¥
-o output_dir/BipSampPluginUtil.o
cc -mt ¥
-I. \
-I/install_dir/include ¥
-I/install_dir/include/plugin ¥
-c NodeFactory.c ¥
-o output_dir/NodeFactory.o
cc -mt ¥
-I. \
-I/install_dir/include ¥
-I/install_dir/include/plugin ¥
-c Common.c ¥
-o output_dir/Common.o
cc -G ¥
-o output_dir/SwitchNode.lil ¥
output_dir/SwitchNode.o ¥
output_dir/BipSampPluginUtil.o ¥
output_dir/NodeFactory.o ¥
output_dir/Common.o ¥
-L /install_dir/lib ¥
-l imbdfplg
chmod a+r output_dir/SwitchNode.lil
C で書かれたユーザー定義拡張機能をコンパイルする場合には、サポートされるコンパイラーを使用してください。
SwitchNode.c と BipSampPluginUtil.c の間、さらに -link と /DLL の間に必ずスペースを含めてください。
実際に入力する際は、コマンドを 1 行に入力してください。以下の例では、読みやすくするために行を分割しています。
cl /VERBOSE /LD /MD /Zi /GX /I. /Iinstall_dir¥include¥plugin SwitchNode.c BipSampPluginUtil.c Common.c NodeFactory.c TransformNode.c -link /DLL install_dir¥lib¥imbdfplg.lib /OUT:SwitchNode.lil
LIB 環境変数を正しく設定した場合には、LIB ファイルへの絶対パスを指定する必要はありません。
C で書かれたユーザー定義拡張機能をコンパイルする場合には、サポートされるコンパイラーを使用してください。
export _CC_STEPS=-1別の方法として、 次のように、以下の 2 行を MAKE ファイルに追加してエクスポートします。
_CC_STEPS=-1 .EXPORT : _CC_STEPS
最適化されたビルドを作成するには、以下のコマンドの -g の場所に -2 を使用します。
cc -c ¥ -Wc,DLL -g -W0,long,langlvl¥(extended¥),EXPORTALL,float¥(ieee¥) ¥ -Wc,xplink ¥ -W0,LIST¥(./SwitchNode.lst¥) ¥ -I. -I${install_dir}/include ¥ -I${install_dir}/include/plugin ¥ -I${install_dir}/sample/include ¥ -I${install_dir}/sample/plugin ¥ -o ./SwitchNode.o ./SwitchNode.c
cc -c ¥ -Wc,DLL -g -W0,long,langlvl¥(extended¥),EXPORTALL,float¥(ieee¥) ¥ -Wc,xplink ¥ -W0,LIST¥(./SwitchNode.lst¥) ¥ -I. -I${install_dir}/include ¥ -I${install_dir}/include/plugin ¥ -I${install_dir}/sample/include ¥ -I${install_dir}/sample/plugin ¥ -o ./BipSampPluginUtil.o ./BipSampPluginUtil.c
cc -c ¥ -Wc,DLL -g -W0,long,langlvl¥(extended¥),EXPORTALL,float¥(ieee¥) ¥ -Wc,xplink ¥ -W0,LIST¥(./SwitchNode.lst¥) ¥ -I. -I${install_dir}/include ¥ -I${install_dir}/include/plugin ¥ -I${install_dir}/sample/include ¥ -I${install_dir}/sample/plugin ¥ -o ./Common.o ./Common.c
cc -c ¥ -Wc,DLL -g -W0,long,langlvl¥(extended¥),EXPORTALL,float¥(ieee¥) ¥ -Wc,xplink ¥ -W0,LIST¥(./SwitchNode.lst¥) ¥ -I. -I${install_dir}/include ¥ -I${install_dir}/include/plugin ¥ -I${install_dir}/sample/include ¥ -I${install_dir}/sample/plugin ¥ -o ./NodeFactory.o ./NodeFactory.c
cc ¥ -Wl,DLL -g -Wl,p,map -Wl,LIST=ALL,MAP,XREF,REUS=RENT ¥ -Wl,xplink ¥ -o ./SwitchNode.lil ./SwitchNode.o ./BipSampPluginUtil.o ¥ ./Common.o ./NodeFactory.o ¥ ${install_dir}/lib/libimbdfplg.x
以下のコマンドを発行することにより、ユーザー定義拡張機能のファイル許可を、グループ読み取りおよび実行に設定します。
chmod a+rx {output_dir}/SwitchNode.lil