微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决cabal/stack/nix 可以编译成动态库吗?

我正在尝试将包含导出的 ffi 代码的共享库构建到共享库中。我想知道是否可以使用诸如 stack 或 nix 之类的常用工具来做到这一点(所以基本上是使用 cabal)? 是吗?那怎么办?

https://github.com/bennoleslie/haskell-shared-example 包含此类代码的良好示例,但带有手动构建说明。

解决方法

您要查找的 .cabal 文件节是 foreign-librarydocumentation 很好地描述了它。

至于 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) 下。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。