Heim > Backend-Entwicklung > Golang > Wie kann ich externen Go-Code dynamisch mit einer vorhandenen Go-Binärdatei verknüpfen?

Wie kann ich externen Go-Code dynamisch mit einer vorhandenen Go-Binärdatei verknüpfen?

Mary-Kate Olsen
Freigeben: 2024-12-04 22:16:14
Original
745 Leute haben es durchsucht

How Can I Dynamically Link External Go Code into an Existing Go Binary?

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:

  • Gemeinsam genutzte Bibliotheken erstellen:
$ go install -buildmode=shared std
Nach dem Login kopieren

Dieser Befehl erstellt die Standardbibliothek als gemeinsam genutzte Bibliotheken.

  • Externes Go kompilieren Datei:

Kompilieren Sie die externe Go-Datei wie folgt:

$ go build -linkshared hello.go
Nach dem Login kopieren
  • Gemeinsame Bibliothek verknüpfen:

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
Nach dem Login kopieren
  • Verwendung:

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")
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage