Je voudrais savoir s'il est possible (et si oui: comment) de compiler les bibliothèques partagées avec Go. Dire que j'ai ce code:Bibliothèques partagées de compilation croisée
package main
import "C"
//export DoubleIt
func DoubleIt(x int) int {
return x * 2
}
func main() {}
dans src/doubler/main.go
. Sur Mac, je peux courir
go build -o libdoubler.dylib -buildmode=c-shared doubler
pour obtenir une bibliothèque partagée appelée libdoubler.dylib
. Similaire sur Linux, juste avec l'extension .so
.
Maintenant, je voudrais utiliser Linux comme plate-forme principale pour construire mes bibliothèques (pour Mac et Windows). Quelles sont mes options?
Réglage GOOS
-darwin
et en cours d'exécution ci-dessus sur linux, je reçois
can't load package: package doubler: no buildable Go source files in /home/patrick/Desktop/go/src/doubler
Toutes les idées?
Pour dire, ne fonctionne pas sur ma machine. ld ignore les drapeaux et gcc renvoie le statut de sortie 1 – Uvelichitel
'package main' et' -buildmode = c-shared' ne fonctionneront pas ensemble. J'ai supposé que le PO était conscient de cela comme une autre réponse a déjà déclaré ce problème. J'ai édité ma réponse pour clarifier ce point. Merci beaucoup! – hasanyasin
J'ai toujours mal orthographié CGO_ENABLED ... Maintenant, il "fonctionne" dans le sens où il ne renvoie plus d'erreur. Je voudrais que la solution aurait été sans installer un environnement de compilation croisée. – topskip