なぜcabal install
はデフォルトで--enable-sharedフラグを使用しませんか?私は、このフラグを付けずにコンパイルすると、ファイルサイズが膨大になるということに気づいた。接続はありますか?これは、Haskellプログラムが単一の自己完結型バイナリに簡単に配備される方法に関する設計上の選択ですか?Haskell Staticと展開時の動的リンク
答えて
私はそれがサポートの欠如と関係があると思います。しかし、GHCが現在ダイナミックリンクをサポートしているかどうかについては、私はまっすぐな答えを得ることはできません。 GHC wikiページSharedLibraries/PlatformSupportは2歳です。 Windowsでは
、私はそれがURLから30秒ごとにダウンロードするhttp-enumeratorを使用して書いた簡単なプログラムを含む、--enable-shared
とパッケージの全体の束を構築してみました。プログラムを実行したとき(私のプログラムでフォルダ内にすべてのDLLを置いた後)、それは数秒後にsegfaultされました。 --threaded
でコンパイルすると、すぐにセグメンテーションが行われました。
これをGHC 7.0.3で試しました。 documentation page for that versionさんの言葉:
現時点では、HaskellライブラリをDLLにすることはできません。将来この機能を再開したいと考えています(4.12項「共有ライブラリの使用」を参照)。 ...
この通知は、それ以降のバージョンでは表示されません。
ところで、コードサイズ以外にも静的なバイナリには別の手間があります。 GHCは、その大きな整数のサポートにGMPを使用しています。 GMPはLGPLの下でライセンスされています。これは、独自のバイナリを配布する必要がある場合や、GPLと互換性のない依存関係(OpenSSLなど)がある場合、GMPのライセンスに準拠するようにオブジェクトファイルを配布する必要があることを意味します。どちらか、またはlibgmpを動的にリンクさせる方法を見つけてください。私はそれをする方法を知りたいです。
この答えを行います2015年3月現在も保持されていますか? –
- 1. Google Static Maps API jadeとの動的リンク
- 2. 展開時に自動的に開閉棒を変更する
- 3. Mysql動的テーブル展開列
- 4. 自動展開時のRESTサービスヘルスチェック
- 5. 展開時にReporting Servicesがアンカーに自動的にスクロールする
- 6. emacsのコメントブロックを自動的に展開
- 7. 展開時のスプロケット
- 8. 展開時のエラー
- 9. Eclipseプロジェクトエクスプローラを起動時に展開
- 10. カフカストリームアプリを自動的に展開
- 11. グラスフィッシュ展開時間
- 12. 自動的に展開される動的リスト
- 13. ブルーグリーン展開とローリング展開
- 14. ASP.net CS1061展開時のコンパイルエラー
- 15. 展開時のtomcat javaファイル
- 16. Heroku/Clojure展開時のポートエラー
- 17. 展開時のTomcatエラー
- 18. 静的リンクと動的リンクの間にシンボルを隠す、動的ロードのためにdlsymに公開する
- 19. HerokuでDjango/Staticファイルを適切に展開する方法
- 20. 継続的インテグレーションインフラストラクチャの展開
- 21. haskellの矢の展示
- 22. haskellソースを動的ライブラリとしてコンパイル
- 23. Cython:dll/soとの動的リンク
- 24. ソースとターゲットシートの動的リンク
- 25. ラムダベースアプリケーションの自動展開
- 26. Openshift v3の手動展開
- 27. WCFの自動展開
- 28. Android静的リンクとglibcとの動的リンク
- 29. -pthread、-lpthreadと最小動的リンク時の依存関係
- 30. MinGWとの静的/動的/共有リンク
ISTR共有ライブラリのサポートはかなり新しく、すべてのプラットフォームで動作しません。また、実行可能ファイルを配布するのが難しくなります。そしてスペースは安いので、誰が気にしますか?しかし、良い答えがあります。 – luqui
@luqui:スペースは安いかもしれませんが、帯域幅はどうですか? 20MBのプログラムのアップデートをインターネット経由でプッシュする必要があり、クライアントの接続が理想的でない場合はどうでしょうか? –
も参照してください[GHCドキュメント "共有ライブラリを使用して"](http://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/using-shared-libs.html) – mb21