Maison > développement back-end > Golang > Comment puis-je lier dynamiquement du code Go externe à un binaire Go existant ?

Comment puis-je lier dynamiquement du code Go externe à un binaire Go existant ?

Mary-Kate Olsen
Libérer: 2024-12-04 22:16:14
original
746 Les gens l'ont consulté

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

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 :

  • Création de bibliothèques partagées :
$ go install -buildmode=shared std
Copier après la connexion

Cette commande crée la bibliothèque standard en tant que bibliothèques partagées.

  • Compilation de Go externe Fichier :

Compilez le fichier Go externe comme suit :

$ go build -linkshared hello.go
Copier après la connexion
  • Lien vers la bibliothèque partagée :

Une fois le fichier Go externe compilé, il peut être lié au binaire existant à l'aide du -linkshared flag :

$ go install -linkshared mybinary.go
Copier après la connexion
  • Utilisation :

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")
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal