Go: kullanarak bir Paylaşılan Kitaplık (.so) oluşturmak mümkün mü? Için bir "issue" oluşturuldu.Go'daki Paylaşılan kitaplık?
cevap
bu mümkündür: (! kodu tüm ortak paketler paylaşılabilir hale Üstü)
go install -buildmode=shared -linkshared std
sonra
go install -buildmode=shared -linkshared userownpackage
Son olarak, kodunuzu derlerken aşağıdakileri çalıştırmanız gerekir:
go build -linkshared yourprogram
Yukarıdakiler, şimdi her şeyin statik olarak bağlanması yerine, yalnızca dinamik olarak bunları birbirine bağlamaktan çok daha küçük bir derlenmiş dosyayla sonuçlanacaksınız. Sadece bir bağlantı vermek için statik bağlama ile "hello.go" dosyası 2.3MB, dinamik bağlantı kullanarak aynı kod sadece 12KB olduğunu!
Görünüşe göre, şimdi mümkündür, ancak sadece çok hassas koşullar altında. Daha doğrusu, Android platformu için yazıyorsanız.
GitHub'daki "goandroid" projesi, Go'nun Android NDK ile belirli bir kullanım için paylaşılan bir kitaplık oluşturmasına izin veren bir dizi yamalar sağlar. Paylaşılan bir kitaplık olarak inşa edilebilir,
"Bu modda bir Go paket, veya paketlerin belirlenen bir ya ithal eden bir Go programı: paylaşılan kitaplıkta olarak Yapı Git Paketleri açıklar https://github.com/eliasnaur/goandroid
As-of-of-now (Temmuz 2013), Go Tools'un bir uzantısıdır ve Google'ın gönderdiği Go Araçları'nda yerleşik değildir. – Nate
@Nate uzantısına bağlanabilir misiniz? (Tek başına) eklenti sadece android üzerinde kullanılabilir mi yoksa masaüstü kullanımı için de kullanılabilir mi? –
@mihaistancu Android için çapraz derleme yapmanın çok zor olacağını düşünmüyorum, bkz. [Burada] (https://jasonplayne.com/programming-2/how-to-cross-compile-golang-for-android). Golang 1.5 iOS'u desteklediğinde, yakında resmi destek alabilir. – Nate
Go Execution Modes bakınız. Bu Go paketlerinden daha fazlası bu paylaşımlı kütüphaneye bağlı olabilir .. Paylaşılan kütüphane, Go programının bağlandığı zaman ve çalıştırıldığı zaman arasında değiştirilebilir, program başladığında kullanılabilen paylaşılan kütüphane
Go 1.5 sürümünde bu sadece linux-amd64 hedefi için uygulanır. gccgo kullanarak desteklenen herhangi bir hedef için uygulanır. " Şimdi ilk önce bu komutu çalıştırmak için yapmanız gereken ne -linkshared bayrağı
kullanılarak
Ben de bir güncelleme yazmak için bu soruya geri döndüm. +1 –
Şimdi mümkün! Go kullanarak bir .so dosyası oluşturdum ve daha sonra python'a kolayca aktardım! İşte sevdiğim bir makale: http://www.darkcoding.net/software/building-shared-libraries-in-go-part-1/
Doğru cevap. – 0x90
Bu aradığım şey. Ama ''buildmode = Paylaşılan benim mac üzerinde darwin/amd64' üzerinde desteklenmez verir. – lvle