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 :
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!