Maison >développement back-end >Golang >Comment lier statiquement une bibliothèque C dans Go à l'aide de cgo ?

Comment lier statiquement une bibliothèque C dans Go à l'aide de cgo ?

DDD
DDDoriginal
2024-12-20 20:25:15541parcourir

How to Statically Link a C Library in Go Using cgo?

Comment lier statiquement une bibliothèque C dans Go à l'aide de Cgo

Il existe de nombreuses discussions au sein de la communauté Go sur la façon de lier statiquement un C bibliothèque en Go en utilisant Cgo. Cependant, il est important de noter que ce processus est différent de la syntaxe utilisée dans la documentation Cgo.

Pour lier statiquement une bibliothèque C, suivez ces étapes :

Étape 1 : Modifier Directives Cgo

Dans votre code Go, incluez le Cgo suivant directives :

// #cgo CFLAGS: -I/path/to/c/include
// #cgo LDFLAGS: /path/to/c/build/libgb.a

Remplacez "/path/to/c/include" par le chemin d'accès au fichier d'en-tête C et "/path/to/c/build/libgb.a" par le chemin d'accès à votre Bibliothèque C liée statiquement.

Étape 2 : Compiler et lier

Compilez et liez votre programme Go en utilisant ce qui suit command :

CGO_ENABLED=0 go build -a -installsuffix cgo  -ldflags '-s'

Assurez-vous que "-s" est inclus dans l'argument "ldflags", car cela supprime les symboles du binaire lié.

Si vous rencontrez des erreurs telles que "non défini, " assurez-vous que le symbole existe dans votre bibliothèque C.

Remarque : Si vous utilisez Go 1.0, les liens statiques ne sont pas pris en charge. Mettez à jour vers Go 1.1 ou version ultérieure pour que cette fonctionnalité fonctionne correctement.

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