Versuch, eine statische ausführbare CGO-Datei mit Oracle-Bibliotheken unter Linux/Ubuntu zu erstellen: Unerwarteter Fehler
Problem:
Erstellen einer Eine statisch verknüpfte ausführbare Datei mit CGO- und Oracle-Bibliotheken unter Linux/Ubuntu führt zu einem Fehler während des Erstellungsprozesses, insbesondere zu einem Fehlschlagen Finden Sie die Oracle-Bibliothek -lclntsh.
Lösung:
-
Generieren Sie die statische Bibliothek (libclntst.a):
a . Installieren Sie das komplette Oracle-Datenbankpaket, falls noch nicht geschehen.
b. Führen Sie $ORACLE_HOME/bin/genclntst aus, um die fehlende statische Bibliothek libclntst12.a zu generieren.
-
Link zur generierten Bibliothek:
a. Ändern Sie Ihren Build-Befehl so, dass er die generierte Bibliothek libclntst12.a.
b einschließt. Beispiel: go build -work -x -ldflags " -v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntst12" ${MAIN_SRC}
-
Behandeln Sie fehlende Symbole (falls vorhanden):
a. Verwenden Sie ldd, um in der statisch verknüpften ausführbaren Datei nach unaufgelösten Symbolen zu suchen.
b. Verwenden Sie nm, um die Quelle fehlender Symbole in den Oracle-Bibliotheken zu finden.
c. Verknüpfen Sie mit zusätzlichen Bibliotheken, um fehlende Symbole aufzulösen.
-
Zusätzliche Hinweise:
a. Für die statische Verknüpfung müssen alle Abhängigkeiten manuell aufgelöst werden.
b. Für ältere Oracle-Versionen sind möglicherweise zusätzliche statische Bibliotheken aus der ICC-Laufzeitumgebung erforderlich.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine statische ausführbare CGO-Datei mit Oracle-Bibliotheken unter Linux/Ubuntu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn