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 ?

Barbara Streisand
Libérer: 2024-12-13 19:17:11
original
296 Les gens l'ont consulté

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

Création et liaison dynamique à partir d'un binaire Go

Considérez une situation dans laquelle vous avez un binaire Go existant et devez y incorporer du code externe dynamiquement. Ceci peut être réalisé en compilant le fichier Go externe et en le liant au binaire existant.

Compilation du fichier Go externe

Une fois Go 1.5 sorti en août 2015, le support pour les bibliothèques partagées sera introduit. À l'aide de l'indicateur -buildmode=shared, vous pouvez créer le fichier Go externe en tant que bibliothèque partagée :

go install -buildmode=shared external.go
Copier après la connexion

Lier le code compilé

Pour lier la bibliothèque partagée compilée au binaire existant, utilisez l'indicateur -linkshared pendant le processus de construction :

go build -linkshared main.go
Copier après la connexion

Exemple Utilisation

Dans l'exemple donné, le binaire principal contiendrait le code suivant :

func main() {
    // Compile external package containing runFoo()
    pkg, err := build.Import("github.com/example/external", "", build.ImportModeShared)
    if err != nil {
        // Handle error
    }

    // Get runFoo function from compiled package
    runFoo := reflect.ValueOf(pkg.Func("runFoo"))

    // Call the compiled runFoo function
    runFoo.Call(nil)

    // Continue execution normally
}
Copier après la connexion

Cette approche vous permet d'incorporer dynamiquement de nouvelles fonctionnalités dans les binaires Go existants sans reconstruire l'intégralité programme.

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