cabal/stack/nix可以用来编译动态库吗?

3

我正在尝试构建包含导出ffi代码的共享库到共享库中。我想知道是否可以使用常见的工具(如stack或nix,基本上是通过cabal)来完成这个任务?可以吗?如果可以,怎么做?

https://github.com/bennoleslie/haskell-shared-example 包含这种代码的很好的示例,但需要手动构建。

1个回答

3
你需要寻找的是 .cabal 文件段落中的 foreign-library。相关文档解释得非常清楚。
至于 Nix,如果使用haskell.nix,则外部库的派生物会在<binding>.components.foreignlibs.<libname>下暴露。
要使用 cabal2nix 进行构建,请运行:
cabal2nix . > default.nix
nix-build -E '(import <nixpkgs> {}).haskellPackages.callPackage ./default.nix {}'

你的共享库将位于 result/lib/ghc-<version>/<your-lib>.(so|dll|dylib)

我看到了这个章节的名称,但我认为它是关于在项目中嵌入外部库的内容。 - majkrzak
我在 cabal2 nix 的结果中没有找到任何类似的内容,可能不存在吗? - majkrzak
更新的答案,添加了 cabal2nix 版本。 - 414owen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接