【问题标题】:Can cabal/stack/nix be used to compile into dynamic library?cabal/stack/nix 可以用来编译成动态库吗?
【发布时间】:2021-01-11 20:21:06
【问题描述】:

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

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

【问题讨论】:

    标签: haskell cabal ffi haskell-stack nix


    【解决方案1】:

    您要查找的 .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-&lt;version&gt;/&lt;your-lib&gt;.(so|dll|dylib)

    【讨论】:

    • 看到这个章节名,还以为是在项目中嵌入外部库?
    • 我在 cabal2 nix 的结果中找不到类似的东西。它可能不存在吗?
    • 更新答案以添加 cabal2nix 版本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多