Dynamische Verknüpfung in Go-Binärdateien
Problem:
Stellen Sie sich ein Szenario vor, in dem Sie eine haben vorhandene Go-Binärdatei und müssen Funktionalität hinzufügen, indem eine externe Go-Datei kompiliert wird. Nach der Kompilierung möchten Sie diesen neuen Code in die Binärdatei integrieren, ohne die gesamte Anwendung neu zu erstellen.
Lösung:
In Go 1.5 und höher ist dies jetzt möglich Gemeinsam genutzte Bibliotheken dynamisch erstellen und verknüpfen. So erreichen Sie die gewünschte Funktionalität:
$ go install -buildmode=shared std
Dieser Befehl erstellt die Standardbibliothek als gemeinsam genutzte Bibliotheken.
Kompilieren Sie die externe Go-Datei wie folgt:
$ go build -linkshared hello.go
Sobald die externe Go-Datei kompiliert ist, kann sie mithilfe von -linkshared mit der vorhandenen Binärdatei verknüpft werden Flag:
$ go install -linkshared mybinary.go
Innerhalb der vorhandenen Binärdatei können Sie jetzt den neu kompilierten Code wie jede andere in definierte Funktion aufrufen die Binärdatei selbst.
Beispiel:
package main import ( "fmt" "github.com/myimportpath/mypackage" ) func main() { fmt.Println("Before calling compiled code") mypackage.RunFoo() fmt.Println("After calling compiled code") }
Das obige ist der detaillierte Inhalt vonWie kann ich externen Go-Code dynamisch mit einer vorhandenen Go-Binärdatei verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!