Ist es möglich, mit Go eine gemeinsame Bibliothek (.so) zu erstellen?Gemeinsame Bibliothek in Go?
AKTUALISIERT: erstellt ein "issue" dafür.
Ist es möglich, mit Go eine gemeinsame Bibliothek (.so) zu erstellen?Gemeinsame Bibliothek in Go?
AKTUALISIERT: erstellt ein "issue" dafür.
Dies ist möglich, jetzt -linkshared Flagge
mit Was Sie tun müssen, ist zunächst diesen Befehl ausführen: (! Above Code alle gängigen Pakete gemeinsam nutzbar macht)
go install -buildmode=shared -linkshared std
dann
go install -buildmode=shared -linkshared userownpackage
schließlich, wenn Ihr Code kompilieren müssen Sie ausführen:
go build -linkshared yourprogram
Was die oben genannten ist es jetzt eher als statisch verknüpfen alles nur dynamisch verbindet sie und Sie werden mit viel kleineren kompilierten Dateien enden. Um Ihnen eine Idee zu geben, meine "hello.go" Datei mit statischem Linking ist 2,3 MB, während der gleiche Code mit dynamischem Linking nur 12 KB ist!
Offenbar ist es jetzt möglich, aber nur unter sehr genauen Umständen. Genauer gesagt, wenn Sie für die Android-Plattform schreiben.
Das "Goandroid" -Projekt auf GitHub bietet eine Reihe von Patches, mit denen Go eine gemeinsam genutzte Bibliothek für die spezifische Verwendung mit dem Android NDK erstellen kann. Siehe https://github.com/eliasnaur/goandroid
Ab sofort (Juli 2013), es ist eine Erweiterung zu den Go Tools und nicht in die Go Tools, die von Google ausgeliefert wird. – Nate
@Nate können Sie mit der Erweiterung verknüpfen? Ist die (stand alone) Erweiterung nur für Android verfügbar oder ist sie auch für den Desktop verfügbar? –
@mihanstancu Ich denke, es wäre nicht zu schwierig, Cross-Compile für Android zu gehen, siehe [hier] (https://jasonplayne.com/programming-2/how-to-cross-compile-golang-for-android). Könnte bald offiziellen Support bekommen, wenn man bedenkt, dass golang 1.5 iOS unterstützt. – Nate
Go Execution Modes beschreibt Gebäude Go-Pakete als gemeinsam genutzte Bibliothek:
„In diesem Modus wird ein Go-Paket oder die Pakete festlegen, kann als gemeinsam genutzte Bibliothek gebaut werden, um ein Go-Programm, das eines importiert oder. mehr dieser Go-Pakete können mit dieser gemeinsam genutzten Bibliothek verknüpft werden Die geteilte Bibliothek kann zwischen dem Zeitpunkt, zu dem das Go-Programm verknüpft ist, und dem Zeitpunkt der Ausführung geändert werden, wobei die beim Start des Programms verfügbare gemeinsame Bibliothek die gleiche ist used ...
In der Go 1.5-Version ist dies nur für das linux-amd64-Ziel implementiert mit gccgo wird es für jedes unterstützte Ziel implementiert. "
Ich kam auf diese Frage zurück, um auch ein Update zu schreiben. +1 –
Möglich jetzt! Ich habe eine .so-Datei mit Go erstellt und dann ganz einfach in Python importiert! Hier ist ein Artikel, den ich mochte: http://www.darkcoding.net/software/building-shared-libraries-in-go-part-1/
Die richtige Antwort. – 0x90
das ist, was ich gesucht habe. Aber gibt '-buildmode = shared nicht unterstützt auf darwin/amd64' auf meinem Mac. – lvle