stack
projelerini oluşturmak ve oluşturulan programların basit programlar için bile oldukça büyük (10M) olduğunu buluyorum. Yürütülebilir boyutu azaltmak için, paylaşılan kitaplıkları oluşturmak ve paylaşılan kitaplıklara dinamik olarak bağlanan yürütülebilir dosyalar oluşturmak için stack
nasıl edinebilirim?Dinamik bağlantı kullanmak için nasıl yığın alabilirim?
10
A
cevap
8
.cabal dosyanıza '-dynamic' değerini ghc-options
'a ekleyin. Örneğin, stack new simple-example simple
tarafından oluşturulan bir projede, simple
yürütülebilir dosyası ghc-options
'a '-dynamic' eklemeden önce 1.0M olmuştur. Değişiklikten sonra 12K'ya düşürüldü.
İşte simple-example.cabal
ilgili bölümü: stack build
ile
executable simple-example
hs-source-dirs: src
main-is: Main.hs
default-language: Haskell2010
build-depends: base >= 4.7 && < 5
ghc-options: -dynamic
Oluşturma (hiçbir seçenek gereklidir).
Dinamik olarak bağlantılı olan kitaplıkları göstermek için ldd
aracını (veya Mac'te otool -L
) kullanabilirsiniz.
$ otool -L .stack-work/install/x86_64-osx/lts-6.10/7.10.3/bin/simple-example
.stack-work/install/x86_64-osx/lts-6.10/7.10.3/bin/simple-example:
@rpath/libHSbase-4.8.2.0-HQfYBxpPvuw8OunzQu6JGM-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSinteger-gmp-1.0.0.0-2aU3IZNMF9a7mQ0OzsZ0dS-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSghc-prim-0.4.0.0-8TmvWUcS1U1IKHT0levwg3-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libHSrts-ghc7.10.3.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libffi.dylib (compatibility version 7.0.0, current version 7.2.0)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
İlgili konular
- 1. WebClient'i Çerezleri kullanmak için nasıl alabilirim?
- 2. Firefox'ta nasıl bir JavaScript yığın izlemesi alabilirim?
- 3. Bağlantı yerine Div'leri kullanmak
- 4. Dinamik Bağlantı Etiketleri
- 5. Rails oturumunu kendi çerezi yerine kullanmak için nasıl authlogic alabilirim?
- 6. Makefile kullanarak Dinamik Bağlantı Kitaplığı
- 7. Bağlantı noktası üzerinde node.js express.js'yi nasıl alabilirim
- 8. SQL Server CE için dinamik bağlantı dizesi nasıl kullanılır?
- 9. AzureWebJobsDashboard bağlantı dizesi bilgilerini nereden alabilirim?
- 10. NLog ile istisnaları günlüğe kaydederken Yığın izini nasıl alabilirim?
- 11. Sorgu oluşturucunun yığın işlevinden laravel 5.2'deki değişkeni nasıl alabilirim?
- 12. adres alanlarından dinamik google haritalar bağlantı oluşturma
- 13. Dinamik Olarak Bağlantı Oluştur Javascript
- 14. Yığın bozulması algılandı (Dinamik dizi yeniden boyutlandırma)
- 15. LinqToSql dbml bağlantı geçişlerini dinamik olarak değiştir
- 16. Cassandra kümesindeki düğümler için farklı bağlantı noktaları kullanmak mümkün mü?
- 17. Yığın bellekte dinamik olarak boş bellek nasıl boşaltılır veya temizlenir
- 18. Java'dan Haskell'i çağırmak, dinamik bağlantı hatası Relocation
- 19. adlı yığın
- 20. Yığın boyutunu izleyerek yığın taşması nasıl önlenir?
- 21. Kullanıcı simgelerini göstermemek için jabber.el'i nasıl alabilirim?
- 22. MinGW ile Statik ve Dinamik/Paylaşımlı Bağlantı
- 23. Birden çok kaynak türü için bağlantı yöneticisini dinamik olarak yapılandırın
- 24. Bağlantı noktasını IIS'den C# ile web sitesi adına nasıl alabilirim?
- 25. Generics'i dinamik olarak kullanmak imkansız mı?
- 26. Bir python modül işlevini dinamik olarak nasıl alabilirim?
- 27. Yığın yeni yığın çerçevelerini itmeden nasıl taşar?
- 28. C# ExpandoObject öğesinden bir adı nasıl dinamik olarak alabilirim?
- 29. "Ordinal 112, dinamik bağlantı kitaplığında bulunamadı ..."
- 30. ODP.NET: Verileri dinamik sql'den veri kümesine nasıl alabilirim
Sen 'yığın build' için https://ghc.haskell.org/trac/ghc/wiki/SharedLibraries/PlatformSupport bir göz ve' -ghc-options' parametreyi almak isteyebilirsiniz – Alec