Benutzerdefinierte C-Erweiterung kompilieren

Vorbereitungen

Sie müssen über eine benutzerdefinierte Erweiterung verfügen, die in C geschrieben ist. Dies kann einer der unter Beispielknotendateien beschriebenen bereitgestellten Beispielknoten, der unter Beispielparserdateien beschriebene Beispiel-Parser oder ein Knoten oder Parser sein, den Sie selbst mit Hilfe der Anweisungen unter Nachrichtenverarbeitungs- oder Sendeknoten in C erstellen, Empfangsknoten in C erstellen oder Parser in C erstellen erstellt haben. Der Name des benutzerdefinierten Knotens muss das Format <Knotenname>.lil haben.

Dieser Abschnitt enthält Informationen zur Vorgehensweise bei der Kompilierung von benutzerdefinierten Erweiterungen für alle unterstützten Plattformen.

Die in diesen Anweisungen verwendeten Dateinamen entsprechen den Dateinamen der bereitgestellten Beispiele. Wenn Sie Ihre eigenen benutzerdefinierten Erweiterungen kompilieren, müssen Sie diese Dateinamen durch Ihre eigenen Dateinamen ersetzen.

Voraussetzungen

Bevor Sie versuchen, Ihre benutzerdefinierte Erweiterung zu kompilieren, stellen Sie sicher, dass Sie über einen geeigneten Compiler verfügen, der von Ihrem Betriebssystem unterstützt wird. Beispiele für geeignete Compiler:

Beginn der ÄnderungFür Windows, Microsoft Visual C++ .NET 2003Ende der Änderung

Beginn der ÄnderungFür AIX, VisualAge C++ for AIX Version 6.0Ende der Änderung

Beginn der ÄnderungFür HP-UX, HP ANSI C 03.52Ende der Änderung

Beginn der ÄnderungFür Linux (x86-Plattform) und Linux (zSeries-Plattform) 2.4 Kernel und 2.6 Kernel, Gnu g++, minimale Versionsnummer 3.2Ende der Änderung

Beginn der ÄnderungFür Linux (POWER-Plattform), Gnu g++, minimale Versionsnummer 3.3Ende der Änderung

Beginn der ÄnderungFür Solaris SPARC:
  • Sun ONE Studio 7, Enterprise Edition for Solaris
  • Sun ONE Studio 8, Compiler Collection
Ende der Änderung

Beginn der ÄnderungFür Solaris x86-64, Sun Studio 10Ende der Änderung

Beginn der ÄnderungFür z/OS Language Environment (LE) z/OS 1.5, z/OS 1.6, z/OS C/C++ 1.5 oder höherEnde der Änderung

Headerdateien

Die C-Schnittstellen werden durch folgende Headerdateien definiert:
BipCni.h
Nachrichtenverarbeitungsknoten
BipCpi.h
Nachrichtenparser
BipCci.h
Gemeinsame Schnittstellen von Knoten und Parsern
BipCos.h
Plattformspezifische Definitionen

Vorhandene, von Kunden oder Fremdanbietern bereitgestellte Bibliotheken für benutzerdefinierte Erweiterungen werden auf einem WebSphere Message Broker-Broker ohne Änderung oder Neukompilierung ausgeführt, Sie müssen sie jedoch manuell in der Workbench erstellen.

Kompilierung

Durch die Kompilierung der Quelle für Ihre benutzerdefinierte Erweiterung auf den einzelnen unterstützten Plattformen wird die LIL-Datei (Loadable Implementation Library, ladbare Implementierungsbibliothek) erstellt, die der Broker für die Implementierung der benutzerdefinierten Erweiterung benötigt.

Wechseln Sie in das Verzeichnis, in dem sich der Code der benutzerdefinierten Erweiterung befindet. Beispiel:
cd Installationsverzeichnis\sample\extensions\nodes\  (Windows)
 
cd Installationsverzeichnis/sample/extensions/nodes (Linux- und UNIX-Plattformen)

Kompilierung unter Windows

Kompilieren Sie den benutzerdefinierten Knoten unter Windows (Voraussetzung: Microsoft 32-Bit-C/C++-Compiler, in Microsoft Visual Studio C++ Version 7.1 verfügbar) mit folgendem Befehl:
cl /VERBOSE /LD /MD /Zi /I. /I..\..\..\include\plugin SwitchNode.c 
BipSampPluginUtil.c Common.c NodeFactory.c TransformNode.c -link 
/DLL ..\..\..\lib\imbdfplg.lib /OUT:SwitchNode.lil
Anmerkung: Auf Grund der Länge des Befehls konnte er nur über mehrere Zeilen angegeben werden. Achten Sie beim Eingeben des Befehls darauf, dass Sie einen Leerschritt zwischen SwitchNode.c und BipSampPluginUtil.c sowie zwischen -link und /DLL setzen.

Kompilierung unter AIX

Kompilieren und verknüpfen Sie den benutzerdefinierten Knoten unter AIX wie folgt mit einem unterstützten C-Compiler:
xlc_r \
-I. \
-I /opt/IBM/mqsi/6.0/include/plugin \
-c SwitchNode.c \
-o SwitchNode.o
xlc_r \
-I. \
-I /opt/IBM/mqsi/6.0/include/plugin \
-c BipSampPluginUtil.c \
-o BipSampPluginUtil.o
xlc_r \
-I. \
-I /opt/IBM/mqsi/6.0/include/plugin \
-c Common.c \
-o Common.o
xlc_r \
-I. \
-I /opt/IBM/mqsi/6.0/include/plugin \
-c NodeFactory.c \
-o NodeFactory.o
xlc_r -qmkshrobj \
-bM:SRE \
-bexpall \
-bnoentry \
-o SwitchNode.lil SwitchNode.o BipSampPluginUtil.o Common.o NodeFactory.o \
-L /opt/IBM/mqsi/6.0/lib
-l imbdfplg
chmod a+r SwitchNode.lil

Kompilierung unter HP-UX

Kompilieren und verknüpfen Sie den benutzerdefinierten Knoten unter HP-UX wie folgt mit einem unterstützten C-Compiler: Beginn der Änderung
cc +z \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c BipSampPluginUtil.c \
-o <Ausgabeverzeichnis>/BipSampPluginUtil.o
cc +z \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c Common.c \
-o <Ausgabeverzeichnis>/Common.o
cc +z \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c NodeFactory.c \
-o <Ausgabeverzeichnis>/NodeFactory.o
cc +z \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c SwitchNode.c \
-o <Ausgabeverzeichnis>/SwitchNode.o
cc +z \
-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>/jre/lib/PA_RISC2.0 \
-L <Installationsverzeichnis>/jre/lib/PA_RISC2.0/server \
-l imbdfplg
chmod a+r <Ausgabeverzeichnis>/SwitchNode.lil
Ende der Änderung

Kompilierung unter Linux

Kompilieren und verknüpfen Sie den benutzerdefinierten Knoten unter Linux wie folgt mit einem unterstützten C-Compiler. Beachten Sie, dass die Zeilen zur besseren Lesbarkeit umgebrochen wurden. Geben Sie jeden Befehl als einzelne Eingabezeile ein.

Beginn der Änderung
/usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include 
-I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU 
-D_GNU_SOURCE TransformNode.c
/usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include 
-I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU 
-D_GNU_SOURCE SwitchNode.c /usr/bin/gcc -c -fpic -MD -trigraphs  -I. -I/opt/mqsi/include 
-I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU 
-D_GNU_SOURCE BipSampPluginUtil.c 
/usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include 
-I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU 
-D_GNU_SOURCE Common.c 
/usr/bin/g++ -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include 
-I/opt/mqsi/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/opt/mqsi/lib -limbdfplg
Ende der Änderung Mit diesen Befehlen wird die Datei 'samples.lil' erstellt, die die Objekte 'Umsetzungsknoten' und 'Umschaltungsknoten' bereitstellt. Wenn im Knoten eine Ausnahmebedingung auftritt, wird er nicht richtig verarbeitet, und der Broker wird abnormal beendet und erneut gestartet.

Kompilierung unter Solaris

Kompilieren und verknüpfen Sie den benutzerdefinierten Knoten unter Solaris wie folgt mit einem unterstützten C-Compiler:
cc -mt \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c SwitchNode.c \
-o <Ausgabeverzeichnis>/SwitchNode.o
cc -mt \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c BipSampPluginUtil.c \
-o <Ausgabeverzeichnis>/BipSampPluginUtil.o
cc -mt \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c NodeFactory.c \
-o <Ausgabeverzeichnis>/NodeFactory.o
cc -mt \
-I. \
-I<Installationsverzeichnis>/include \
-I<Installationsverzeichnis>/include/plugin \
-c Common.c \
-o <Ausgabeverzeichnis>/Common.o
cc -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 z/OS

Erzwingen Sie für Ihre Verknüpfung die Verwendung des Prelinkers oder Linkers, indem Sie die Variable _CC_STEPS wie folgt auf -1 setzen:
export _CC_STEPS=-1
Sie können auch die folgenden zwei Zeilen zu Ihrer Makefile hinzufügen, um sie zu exportieren:
_CC_STEPS=-1
.EXPORT : _CC_STEPS

Kompilieren und verknüpfen Sie den benutzerdefinierten Knoten unter z/OS wie folgt mit einem unterstützten C-Compiler:

Beginn der Änderung
cc -c \
-Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),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
Ende der Änderung Beginn der Änderung
cc -c \
-Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),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 ./BipSampPluginUtil.o ./BipSampPluginUtil.c
Ende der Änderung Beginn der Änderung
cc -c \
-Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),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 ./Common.o ./Common.c
Ende der Änderung Beginn der Änderung
cc -c \
-Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),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 ./NodeFactory.o ./NodeFactory.c
Ende der Änderung Beginn der Änderung
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 \
${Installationsverzeichnis}/lib/libimbdfplg.x
Ende der Änderung

Erteilen Sie der Gruppe die Dateiberechtigungen der benutzerdefinierten Erweiterung zum Lesen und Ausführen, indem Sie folgenden Befehl aufrufen:

chmod a+rx {Ausgabeverzeichnis}/SwitchNode.lil
Anmerkung: -g wird bei optimierten Builds zu -2.
Zugehörige Konzepte
Benutzerdefinierte Erweiterungen
Zugehörige Verweise
Benutzerdefinierte Erweiterungen
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 18.05.2006
as10000_