WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Benutzerdefinierte C-Erweiterung kompilieren

Sie können für alle unterstützten Betriebssysteme benutzerdefinierte Erweiterungen in C kompilieren.

Bevor Sie beginnen:

Wenn Sie Ihre eigenen benutzerdefinierten Knoten, Parser und Benutzerexits in der Programmiersprache C erstellen, kompilieren Sie diese auf dem Betriebssystem, auf dem der Zielbroker ausgeführt wird. Mustercodes für Knoten und Parser finden Sie unter Musterknotendateien und Musterparserdateien. Kompilieren Sie die Beispiele mit den hier gezeigten Anweisungen. Wenn Sie Ihre eigenen Erweiterungen erstellen möchten, lesen Sie die folgenden Abschnitte:

In diesen Anweisungen werden die Dateinamen der bereitgestellten Mustercodes verwendet. Wenn Sie Ihre eigenen benutzerdefinierten Erweiterungen kompilieren, müssen Sie diese Dateinamen durch Ihre eigenen Dateinamen ersetzen.

Wenn Sie eine in der Programmiersprache C geschriebene benutzerdefinierte Erweiterung kompilieren, benötigen Sie einen kompatiblen Compiler. Ausführliche Informationen zu unterstützten Compilern finden Sie unter Unterstützung von Zusatzsoftware.

Headerdateien

Die folgenden Headerdateien definieren die C-Schnittstellen:
BipCni.h
Nachrichtenverarbeitungsknoten
BipCpi.h
Nachrichtenparser
BipCci.h
Schnittstellen, die von Knoten und Parsern verwendet werden
BipCos.h
Plattformspezifische Definitionen

Kompilieren

Kompilieren Sie die Quelle für Ihre benutzerdefinierten Erweiterungen auf jedem der unterstützten Betriebssysteme, um die ausführbare Datei zu erstellen, die vom Broker zur Implementierung der benutzerdefinierten Erweiterung aufgerufen wird. Auf Linux-, UNIX- und z/OS-Systemen handelt es sich bei dieser Datei um eine ladbare Implementierungsbibliothek (LIL); auf Windows-Systemen handelt es sich um eine dynamische Ladebibliothek (DLL).

Die Bibliotheken, die Sie für benutzerdefinierte Knoten oder Parser erstellen, müssen auf allen Betriebssystemen die Erweiterung .lil haben, sodass der Broker sie laden kann. Bibliotheken, die Benutzerexits enthalten, müssen auf allen Betriebssystemen über die Erweiterung .lel verfügen. Die Beispiele in diesem Abschnitt zeigen Bibliotheken mit der Erweiterung .lil.

Weitere Informationen finden Sie in der Dokumentation zu dem von Ihnen verwendeten Compiler; dort finden Sie die vollständigen Einzelheiten der verfügbaren Kompilier- und Linkoptionen, die möglicherweise für Ihre Programme erforderlich sind.

Navigieren Sie zu dem Verzeichnis, in dem sich Ihr benutzerdefinierter Erweiterungsquellcode befindet, und befolgen Sie die Anweisungen für Ihr Betriebssystem:

Kompilierung unter AIX

Wenn Sie eine in der Programmiersprache C geschriebene benutzerdefinierte Erweiterung kompilieren, müssen Sie einen unterstützten Compiler verwenden.

Die folgenden Anweisungen gelten für die Kompilierung einer Erweiterung für eine 64-Bit-Ausführungsgruppe; 32-Bit-Ausführungsgruppen werden nicht unterstützt.

xlc_r -q64 \
   -I. \
   -I/Installationsverzeichnis/include/plugin \
   -c SwitchNode.c \
   -o SwitchNode.o

xlc_r -q64 \
   -I. \
   -I/Installationsverzeichnis/include/plugin \
   -c TransformNode.c \
   -o TransformNode.o

xlc_r -q64 \
   -I. \
   -I/Installationsverzeichnis/include/plugin \
   -c BipSampPluginUtil.c \
   -o BipSampPluginUtil.o

xlc_r -q64 \
   -I. \
   -I/Installationsverzeichnis/include/plugin \
   -c Common.c \
   -o Common.o

xlc_r -q64 \
   -I. \
   -I/Installationsverzeichnis/include/plugin \
   -c NodeFactory.c \
   -o NodeFactory.o

xlc_r -q64 \
      -qmkshrobj \
      -bM:SRE \
      -bexpall \
      -bnoentry \
      -o SwitchNode.lil SwitchNode.o \
         BipSampPluginUtil.o Common.o NodeFactory.o \
      -L /Installationsverzeichnis/lib \
      -l imbdfplg

chmod a+r SwitchNode.lil

Kompilierung unter HP-Itanium

Wenn Sie eine in der Programmiersprache C geschriebene benutzerdefinierte Erweiterung kompilieren, müssen Sie einen unterstützten Compiler verwenden.

Die folgenden Anweisungen gelten für die Kompilierung einer Erweiterung für eine 64-Bit-Ausführungsgruppe; 32-Bit-Ausführungsgruppen werden nicht unterstützt.

cc +z +e +DD64 -D_HPUX_SOURCE -DTHREADS -D_REENTRANT -Ae \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c BipSampPluginUtil.c \
   -o Ausgabeverzeichnis/BipSampPluginUtil.o

cc +z +e +DD64 -D_HPUX_SOURCE -DTHREADS -D_REENTRANT -Ae \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c Common.c \
   -o Ausgabeverzeichnis/Common.o

cc +z +e +DD64 -D_HPUX_SOURCE -DTHREADS -D_REENTRANT -Ae \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c NodeFactory.c \
   -o Ausgabeverzeichnis/NodeFactory.o

cc +z +e +DD64 -D_HPUX_SOURCE -DTHREADS -D_REENTRANT -Ae \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c SwitchNode.c \
   -o Ausgabeverzeichnis/SwitchNode.o

cc +z +e +DD64 -D_HPUX_SOURCE -DTHREADS -D_REENTRANT -Ae \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c TransformNode.c \
   -o Ausgabeverzeichnis/TransformNode.o


ld -b \
   -o Ausgabeverzeichnis/SwitchNode.lil \
   Ausgabeverzeichnis/BipSampPluginUtil.o \
   Ausgabeverzeichnis/Common.o \
   Ausgabeverzeichnis/NodeFactory.o \
   Ausgabeverzeichnis/SwitchNode.o \
   Ausgabeverzeichnis/TransformNode.o \
   -L Installationsverzeichnis/lib \
   -L Installationsverzeichnis/xml4c/lib \
   -L Installationsverzeichnis/merant/lib \
   -L Installationsverzeichnis/jre16/lib/IA64N\
   -L Installationsverzeichnis/jre16/lib/IA64N/server \
   -l imbdfplg

chmod a+r Ausgabeverzeichnis/SwitchNode.lil

Kompilierung unter Linux

Wenn Sie eine in der Programmiersprache C geschriebene benutzerdefinierte Erweiterung kompilieren, müssen Sie einen unterstützten Compiler verwenden.

Wenn Sie Programme unter Linux on POWER kompilieren, ersetzen Sie die Option -fpic durch -fPIC, falls Sie das dynamische Verbinden verwenden und eine Begrenzung der Größe der globalen Offset-Tabelle vermeiden möchten.

Die folgenden Anweisungen gelten für die Kompilierung einer Erweiterung für eine 64-Bit-Ausführungsgruppe unter Linux on x86-64, Linux on POWER und Linux on System z. Auf diesen Plattformen werden keine 32-Bit-Ausführungsgruppen unterstützt. Zum Kompilieren der Erweiterung für eine 32-Bit-Ausführungsgruppe unter Linux on x86 ersetzen Sie in den Kompilier- und Linkbeispielen -m64 durch -m32. Zum Kompilieren der Erweiterung für Linux on POWER fügen Sie den Parameter -O2 zu den Kompilier- und Linkbeispielen hinzu.

g++ -c -m64 -Wall -Wno-format-y2k -fpic \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -DLINUX -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT \
   TransformNode.c

g++ -c -m64 -Wall -Wno-format-y2k -fpic \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -DLINUX -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT \
   SwitchNode.c 

g++ -c -m64 -Wall -Wno-format-y2k -fpic \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -DLINUX -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT \
   BipSampPluginUtil.c 

g++ -c -m64 -Wall -Wno-format-y2k -fpic \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -DLINUX  -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT \
   Common.c 

g++ -c -m64 -Wall -Wno-format-y2k -fpic \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -DLINUX -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT \
   NodeFactory.c

g++ -m64 -o samples.lil \
   TransformNode.o \
   SwitchNode.o \
   BipSampPluginUtil.o \
   Common.o NodeFactory.o \
   -shared -lc -lnsl -ldl \
   -L/Installationsverzeichnis/lib -limbdfplg 

Mit diesen Befehlen wird die Datei samples.lil erstellt, die die Objekte 'Umsetzungsknoten' und 'Umschaltungsknoten' bereitstellt.

Kompilierung unter Solaris

Wenn Sie eine in der Programmiersprache C geschriebene benutzerdefinierte Erweiterung kompilieren, müssen Sie einen unterstützten Compiler verwenden.

Die folgenden Anweisungen gelten für die Kompilierung einer Erweiterung für eine 64-Bit-Ausführungsgruppe unter Solaris on SPARC; 32-Bit-Ausführungsgruppen werden nicht unterstützt. Zum Kompilieren der Erweiterung für eine standardmäßige 64-Bit-Ausführungsgruppe unter Solaris on x86-64 ersetzen Sie in den Kompilierbeispielen -xarch=v9 durch -xarch=amd64; 32-Bit-Ausführungsgruppen werden nicht unterstützt.

cc -xarch=v9 -mt \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c SwitchNode.c \
   -o Ausgabeverzeichnis/SwitchNode.o

cc -xarch=v9 -mt \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c TransformNode.c \
   -o Ausgabeverzeichnis/TransformNode.o

cc -xarch=v9 -mt \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c BipSampPluginUtil.c \
   -o Ausgabeverzeichnis/BipSampPluginUtil.o

cc -xarch=v9 -mt \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c NodeFactory.c \
   -o Ausgabeverzeichnis/NodeFactory.o

cc -xarch=v9 -mt \
   -I. \
   -I/Installationsverzeichnis/include \
   -I/Installationsverzeichnis/include/plugin \
   -c Common.c \
   -o Ausgabeverzeichnis/Common.o

cc -xarch=v9  -xcode=pic32 -mt -G \
   -o Ausgabeverzeichnis/SwitchNode.lil \
      Ausgabeverzeichnis/SwitchNode.o \
      Ausgabeverzeichnis/BipSampPluginUtil.o \
      Ausgabeverzeichnis/NodeFactory.o \
      Ausgabeverzeichnis/Common.o \
   -L /Installationsverzeichnis/lib \
   -l imbdfplg

chmod a+r Ausgabeverzeichnis/SwitchNode.lil

Kompilierung unter Windows

Wenn Sie eine in der Programmiersprache C geschriebene benutzerdefinierte Erweiterung kompilieren, müssen Sie einen unterstützten Compiler verwenden.

Achten Sie darauf, dass Sie einen Leerschritt zwischen SwitchNode.c und BipSampPluginUtil.c sowie zwischen -link und /DLL setzen.

Geben Sie den Befehl in einer einzigen Zeile ein; im folgenden Beispiel wurden die Zeilen zur besseren Lesbarkeit umgebrochen.

cl /VERBOSE /LD /MD /Zi /EHsc /I. 
   /IInstallationsverzeichnis\include\plugin 
   SwitchNode.c BipSampPluginUtil.c Common.c 
   NodeFactory.c TransformNode.c 
   -link /DLL Installationsverzeichnis\lib\imbdfplg.lib 
   /OUT:SwitchNode.lil

Wenn Sie die Umgebungsvariable LIB richtig festgelegt haben, müssen Sie nicht die vollständigen Pfade der LIB-Dateien angeben.

Kompilierung unter z/OS

Wenn Sie eine in der Programmiersprache C geschriebene benutzerdefinierte Erweiterung kompilieren, müssen Sie einen unterstützten Compiler verwenden.

Setzen Sie die Variable _CC_STEPS auf -1, damit die von Ihnen verwendete Verknüpfung Prelinker oder Linker verwendet:
export _CC_STEPS=-1
Alternativ dazu können Sie diese zwei Zeilen für den Export zur Makefile hinzufügen:
_CC_STEPS=-1
.EXPORT : _CC_STEPS

Wenn Sie optimierte Builds erstellen möchten, verwenden Sie in den folgenden Befehlen -2 anstelle von -g:

cc -c \
 -Wc,LP64 -g -W0,langlvl\(extended\),EXPORTALL,float\ieee\) \
 -Wc,xplink \
 -W0,LIST\(./SwitchNode.lst\) \
 -I. -I${Installationsverzeichnis}/include \
 -I${Installationsverzeichnis}/include/plugin \
 -I${Installationsverzeichnis}/sample/include \
 -I${Installationsverzeichnis}/sample/plugin \
 -o ./SwitchNode.o ./SwitchNode.c
cc -c \
 -Wc,LP64 -g -W0,langlvl\(extended\),EXPORTALL,float\ieee\) \
 -Wc,xplink \
 -W0,LIST\(./TransformNode.lst\) \
 -I. -I${Installationsverzeichnis}/include \
 -I${Installationsverzeichnis}/include/plugin \
 -I${Installationsverzeichnis}/sample/include \
 -I${Installationsverzeichnis}/sample/plugin \
 -o ./SwitchNode.o ./TransformNode.c
cc -c \
 -Wc,LP64 -g -W0,langlvl\(extended\),EXPORTALL,float\ieee\) \
 -Wc,xplink \
 -W0,LIST\(./BipSampPluginUtil.lst\) \
 -I. -I${Installationsverzeichnis}/include \
 -I${Installationsverzeichnis}/include/plugin \
 -I${Installationsverzeichnis}/sample/include \
 -I${Installationsverzeichnis}/sample/plugin \
 -o ./BipSampPluginUtil.o ./BipSampPluginUtil.c
cc -c \
 -Wc,LP64 -g -W0,langlvl\(extended\),EXPORTALL,float\ieee\) \
 -Wc,xplink \
 -W0,LIST\(./Common.lst\) \
 -I. -I${Installationsverzeichnis}/include \
 -I${Installationsverzeichnis}/include/plugin \
 -I${Installationsverzeichnis}/sample/include \
 -I${Installationsverzeichnis}/sample/plugin \
 -o ./Common.o ./Common.c
cc -c \
  -Wc,LP64 -g -W0,langlvl\(extended\),EXPORTALL,float\ieee\) \
 -Wc,xplink \
 -W0,LIST\(./NodeFactory.lst\) \
 -I. -I${Installationsverzeichnis}/include \
 -I${Installationsverzeichnis}/include/plugin \
 -I${Installationsverzeichnis}/sample/include \
 -I${Installationsverzeichnis}/sample/plugin \
 -o ./NodeFactory.o ./NodeFactory.c
cc \
 -Wl,DLL,LP64 -g -Wl,p,map -Wl,LIST=ALL,MAP,XREF,REUS=RENT \
 -Wl,xplink \
 -o ./SwitchNode.lil ./SwitchNode.o ./BipSampPluginUtil.o \
 ./Common.o ./NodeFactory.o \
 ${Installationsverzeichnis}/lib/libimbdfplg.x

Setzen Sie die Dateiberechtigungen der benutzerdefinierten Erweiterung auf group read (Leseberechtigung für Gruppe) und führen Sie das Programm aus, indem Sie den folgenden Befehl ausgeben:

chmod a+rx {Ausgabeverzeichnis}/SwitchNode.lil
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:22:06


TaskthemaTaskthema | Version 8.0.0.5 | as10000_