【发布时间】:2015-01-30 14:36:36
【问题描述】:
我有一个使用 GHC-API 处理 Haskell 源文件的程序。源文件从特定的 cabal-packages 导入模块,这意味着 cabal 包必须安装到运行我的程序的系统中。
分发我的程序最简单的方法是什么?我不想在每个目标系统上安装 ghc。例如,我可以制作某种便携式的 cabal 沙箱,我可以将其与我的程序一起分发吗?如何?有没有更好的解决方案?
【问题讨论】:
我有一个使用 GHC-API 处理 Haskell 源文件的程序。源文件从特定的 cabal-packages 导入模块,这意味着 cabal 包必须安装到运行我的程序的系统中。
分发我的程序最简单的方法是什么?我不想在每个目标系统上安装 ghc。例如,我可以制作某种便携式的 cabal 沙箱,我可以将其与我的程序一起分发吗?如何?有没有更好的解决方案?
【问题讨论】:
如果您的程序使用 GHC-API,那么无论如何您都需要 GHC。您应该将您的应用程序提供为可执行文件,如下所示:
$ ghc -O2 --make -static -optc-static -optl-static A.hs -fvia-C -optl-pthread
或使用名为“Relocatable packages”的新 Cabal 功能和密钥 --enable-relocatable 来提供所有附加文件,但我认为这将是巨大的分布。
【讨论】: