2009-11-18 21 views

cevap

13

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!

+1

Doğru cevap. – 0x90

+0

Bu aradığım şey. Ama ''buildmode = Paylaşılan benim mac üzerinde darwin/amd64' üzerinde desteklenmez verir. – lvle

3

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

+1

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

+0

@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? –

+0

@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

5

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

+0

Ben de bir güncelleme yazmak için bu soruya geri döndüm. +1 –

İlgili konular