Gemeinsam genutzte Bibliothek kompilieren und verlinken

Nach der Erstellung der C++-Datei für Ihre neue benutzerdefinierte gemeinsam genutzte Bibliothek müssen Sie die C++-Datei mithilfe des Befehls nzudxcompile kompilieren.

Informationen zu dieser Task

Der Befehl ist im Verzeichnis /nz/kit/bin/adm abgelegt. Der Kompilierungsprozess erstellt die Objektdateien, die auf dem Host und auf den Netezza Performance Server SPUs ausgeführt werden.

Sie kompilieren und verlinken die C++-Dateien von gemeinsam genutzten Bibliotheken, damit sie von UDXs verwendet werden können, die sie referenzieren. Sie kompilieren und verlinken eine gemeinsam genutzte Bibliothek für die Hostumgebung und in den SPUs mithilfe des Befehls nzudxcompile.

Hinweis: Im Gegensatz zu anderen UDXs können Sie eine gemeinsam genutzte Bibliothek nicht in einem Schritt mit dem Befehl ' nzudxcompile kompilieren und registrieren. Sie müssen die Bibliothek mithilfe von CREATE LIBRARY registrieren.

Gehen Sie wie folgt vor, um eine gemeinsam genutzte Bibliothek namens 'mylib' zu kompilieren und zu verlinken:

Vorgehensweise

  1. Erstellen Sie ein kompiliertes Objekt für die Netezza Performance Server:
       nzudxcompile /home/nz/libs/mylib.cpp --host
    -o /home/nz/libs/mylib.o
  2. Verlinken Sie das kompilierte Objekt mit einer gemeinsam genutzten Bibliothek für den Host:
       nzudxcompile --objs /home/nz/libs/mylib.o --host -o
    /home/nz/libs/host/mylib.so
  3. Erstellen Sie ein kompiliertes Objekt für die Netezza Performance Server SPU-Umgebung:
       nzudxcompile /home/nz/libs/mylib.cpp --spu -o
    /home/nz/libs/mylib.o 
    
  4. Verlinken Sie das kompilierte Objekt mit einer gemeinsam genutzten Bibliothek für die SPU:
       nzudxcompile --objs /home/nz/libs/mylib.o --dynamic --spu
    -o /home/nz/libs/spu/mylib.so
    Hinweis: Der Schalter ' --dynamic wird nur verwendet, wenn Sie gemeinsam genutzte Bibliotheken für die SPU-Umgebung kompilieren.

Ergebnisse

Mit dem Befehl nzudxcompile können die folgenden Objektdateien erstellt werden:
mylib.o_x86
Die Objektdatei für den Netezza Performance Serveri386 Linux® auf x86).
mylib.o_spu10
Die Objektdatei für den Linux Rev10 SPus auf IBM® Netezza® 100 und Netezza 100 Modellen.

Die nächsten Schritte

Nachdem Sie die kompilierten Objektdateien erstellt haben, müssen Sie die Bibliothek im Netezza Performance Server registrieren, damit andere UDXs sie als Abhängigkeit angeben können.