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/
- 1. Unix'te paylaşılan kitaplık yürütme
- 2. Yürütülebilir dizin olarak paylaşılan kitaplık yolu
- 3. C++ Statik olarak bağlantılı paylaşılan kitaplık
- 4. Blackberry10'daki Varlıklar ile Paylaşılan Kitaplık Oluşturma
- 5. "-fPIC" bayrağıyla çalıştırılabilir derleme (paylaşılan kitaplık yok)
- 6. CMake: Statik kitaplığı kullanan paylaşılan kitaplık
- 7. Fortran'daki paylaşılan kitaplık, minimal örnek çalışmıyor
- 8. nasıl paylaşılan kitaplık yapmak için bir yol aradım Linux
- 9. Libtool yalnızca statik kitaplık oluşturuyor - Paylaşılan nesnelere ihtiyacım var
- 10. Paylaşılan Kitaplık karşı Bağlama özel LD_LIBRARY_PATH olmadan programını çağıran
- 11. MATLAB'de herhangi bir paylaşılan kitaplık oluşturma deneyimi var mı?
- 12. Kitaplık yüklendi
- 13. Çapraz Platform C++ Dinamik Kitaplık Eklentisi Yükleyicisi
- 14. Paylaşılan kitaplığa paketi yükleme
- 15. C: main() başarısız olmadan bazı nesneleri (paylaşılan bir kitaplık için) derlemek? Öğrendiğim kadarıyla
- 16. VBA'da (Mac için Office) paylaşılan bir kitaplık için kullanıcının giriş dizininde bir konum belirtmek mümkün mü?
- 17. GNU libtool ile hem statik hem de paylaşılan kitaplık oluşturulsun mu?
- 18. GCC'de, tüm sembolleri vermeden paylaşılan bir kitaplık için tüm typeinfo sembollerini nasıl dışa aktarabilirim?
- 19. Paylaşılan öğe
- 20. Paylaşılan Tercihleri
- 21. Paylaşılan UITableViewDelegate
- 22. Paylaşılan Oturumlar?
- 23. Yüklenmezse, paket (kitaplık) yükle
- 24. JSON Kitaplık için iPhone
- 25. Statik kitaplık oluştur
- 26. Java CSS kitaplık kütüphanesi
- 27. vim: Kitaplık libpython yüklenemedi
- 28. GHC'yi kitaplık olarak kullanma
- 29. Dinamik kitaplık yüklenemedi php_ldap.dll
- 30. podspec'e statik kitaplık ekle
Doğru cevap. – 0x90
Bu aradığım şey. Ama ''buildmode = Paylaşılan benim mac üzerinde darwin/amd64' üzerinde desteklenmez verir. – lvle