Maison  >  Article  >  développement back-end  >  Comment puis-je intégrer du code Go dans un projet C existant ?

Comment puis-je intégrer du code Go dans un projet C existant ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 08:50:30367parcourir

How can I integrate Go code into an existing C project?

Intégration de Go dans un projet C existant

Dans cet article, nous approfondirons le processus d'intégration du code Go dans un projet C existant projet. Ce scénario vous permet d'exploiter les capacités de Go tout en conservant la stabilité de votre base de code C.

Création du fichier objet Go

Pour créer un fichier objet à partir de votre Go code, utilisez la commande suivante :

gccgo -c printString.go -o printString.o -fgo-prefix=print -Wall -Werror -march=native

Cette commande génère un fichier objet nommé printString.o à partir de votre fichier Go printString.go. L'option -fgo-prefix=print spécifie le préfixe à utiliser pour les symboles exportés.

Lier le fichier objet Go

Pour lier votre fichier objet Go au C programme, utilisez la commande suivante :

gccgo -o main c_caller.c printString.o -Wall -Werror -march=native

Cependant, vous pouvez rencontrer des erreurs lors de cette étape. Pour les surmonter, définissez certaines variables d'environnement :

export LD_LIBRARY_PATH=/path/to/libgo.so's_folder

Cela garantit que l'éditeur de liens peut trouver les bibliothèques Go nécessaires.

Pièges potentiels et solutions

Si vous obtenez des erreurs liées à des symboles manquants, telles qu'une référence non définie à main.main' ou une référence non définie à __go_init_main', cela signifie que GCCGO attend une fonction principale dans le fichier Go. Pour résoudre ce problème, vous devez :

  • Supprimer la fonction principale de votre fichier Go.
  • Utilisez les options -static-libgo, -static dans la commande de liaison.

Si vous rencontrez une erreur du type /usr/bin/ld : impossible de trouver -lgo, vous avez peut-être un LD_LIBRARY_PATH mal configuré. Assurez-vous qu'il pointe correctement vers le dossier de la bibliothèque Go.

Solution alternative dans Go 1.5

Dans Go 1.5, vous pouvez créer des bibliothèques compatibles C avec l'outil go. Cela vous permet de compiler du code Go dans une bibliothèque pouvant être liée à des programmes C. Reportez-vous au document de conception des modes d'exécution Go pour plus d'informations.

En suivant ces étapes, vous pouvez intégrer avec succès le code Go dans un projet C existant et profiter des atouts des deux langages de programmation.

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!

Déclaration:
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