Lien dynamique dans les binaires Go
Problème :
Considérez un scénario dans lequel vous avez un binaire Go existant et devez ajouter des fonctionnalités en compilant un fichier Go externe. Une fois compilé, vous souhaitez intégrer ce nouveau code dans le binaire sans reconstruire l'intégralité de l'application.
Solution :
Dans Go 1.5 et versions ultérieures, il est désormais possible de créer et lier des bibliothèques partagées de manière dynamique. Voici comment obtenir la fonctionnalité souhaitée :
$ go install -buildmode=shared std
Cette commande crée la bibliothèque standard en tant que bibliothèques partagées.
Compilez le fichier Go externe comme suit :
$ go build -linkshared hello.go
Une fois le fichier Go externe compilé, il peut être lié au binaire existant à l'aide du -linkshared flag :
$ go install -linkshared mybinary.go
Dans le binaire existant, vous pouvez désormais appeler le code nouvellement compilé comme toute autre fonction définie dans le binaire lui-même.
Exemple :
package main import ( "fmt" "github.com/myimportpath/mypackage" ) func main() { fmt.Println("Before calling compiled code") mypackage.RunFoo() fmt.Println("After calling compiled code") }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!