


Wie verknüpfe ich eine ausführbare Go-CGO-Datei statisch mit Oracle-Bibliotheken unter Linux?
Nov 25, 2024 am 10:50 AMVerknüpfung für die statische Ausführung von Go CGO Executable mit Oracle-Bibliotheken unter Linux
Problemstellung:
Erstellen eines einfachen Go Die Snippet-Schnittstelle mit einer Oracle-Datenbank schlägt beim statischen Kompilieren mit der fehl Befehl:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static" ${MAIN_SRC}
Der Kompilierungsfehler zeigt an, dass die Oracle-Bibliothek -lclntsh nicht gefunden werden kann. Trotz Versuchen, Umgebungsvariablen festzulegen und zusätzliche Dateien aus dem Oracle-Datenbankpaket zu installieren, schlägt die statische Kompilierung immer noch fehl.
Lösung:
-
Generieren Sie die statische Bibliothek:
Oracle wird normalerweise nicht mit der statischen Bibliothek libclntst.a ausgeliefert. Um es zu generieren, führen Sie den folgenden Befehl aus:
$ORACLE_HOME/bin/genclntst
Nach dem Login kopieren -
Verknüpfen Sie die Anwendung:
Verknüpfen Sie Ihre Anwendung mit der generierten statischen Bibliothek:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntsh -lclntst" ${MAIN_SRC}
Nach dem Login kopieren -
Behandeln Sie fehlende Symbole (Optional):
Wenn noch Symbole fehlen, verwenden Sie das nm-Tool, um diese zu identifizieren. Fügen Sie dann nach Bedarf weitere statische Bibliotheken hinzu, um die Abhängigkeiten aufzulösen.
Zusätzliche Hinweise:
- Möglicherweise können Sie das Linker-Dienstprogramm von Oracle verwenden hilfreich für die Analyse von Abhängigkeiten.
- Je nach Oracle-Version und Compiler kann eine Verknüpfung mit zusätzlicher ICC-Laufzeitstatik erforderlich sein Bibliotheken.
- Statische Verknüpfung erfordert die manuelle Auflösung aller Abhängigkeiten, was komplex sein kann.
Das obige ist der detaillierte Inhalt vonWie verknüpfe ich eine ausführbare Go-CGO-Datei statisch mit Oracle-Bibliotheken unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie schreibe ich Dateien in Go Language bequem?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern?
