假设我有一个Haskell程序或库,我想让非Haskeller(如C程序员)也能使用它。 我可以使用GHC将其编译为C代码,然后将其作为C源码分发吗?
如果这是可能的,能否提供一个最小的示例?(例如,一个 Makefile)
是否可能使用GHC自动确定所需的编译器标志和头文件,然后将其捆绑到单个文件夹中?
基本上,我想能够在C和Haskell中编写程序部分,然后将其作为tarball分发,但不需要目标计算机安装GHC和Cabal。
假设我有一个Haskell程序或库,我想让非Haskeller(如C程序员)也能使用它。 我可以使用GHC将其编译为C代码,然后将其作为C源码分发吗?
如果这是可能的,能否提供一个最小的示例?(例如,一个 Makefile)
是否可能使用GHC自动确定所需的编译器标志和头文件,然后将其捆绑到单个文件夹中?
基本上,我想能够在C和Haskell中编写程序部分,然后将其作为tarball分发,但不需要目标计算机安装GHC和Cabal。
使用GHC是无法实现这一目标的。即使通过C编译,GHC也依赖于操作生成的汇编代码以移动段、运行时系统和大量附带信息。
另一方面,如果您需要的功能受到约翰·米查姆(John Meacham)的JHC编译器较为有限的特性集支持,则可能会有更好的运气。该编译器生成相当紧凑的C输出。
-fvia-c -keep-tmp-files -v
编译,跟踪确切的gcc调用,并分发适当的RTS位......但这似乎一点也不好。 - ephemient