gpt4 book ai didi

haskell - 如何在不硬编码 ghc 版本的情况下使用 cabal 和堆栈链接到 Haskell 静态运行时?

转载 作者:行者123 更新时间:2023-12-02 13:39:43 25 4
gpt4 key购买 nike

我有一个导出共享静态库的项目,我在 project.cabal 文件中使用以下部分

executable libsxp.so
main-is: Somefile.hs
default-language: Haskell2010
ghc-options: -shared -dynamic -fPIC -lHSrts-ghc7.10.2

GHC 的版本是使用 Stack 控制的,那么有没有一种方法可以让我获取并附加版本来制作 -lHSrts-ghc{version} 或者是否有一些配置?我尝试设置

stack build --ghc-options='-O0 -lHSrts-ghc7.10.2' 

但它似乎没有选择它。

还要澄清一下,cabal install 是由 Stack 调用的,而不是由我调用的。

最佳答案

那个 cabal 文件有用吗?如果是这样,那么做这样的事情就足够了:

executable libsxp.so
ghc-options: -shared -dynamic -fPIC
if impl (ghc >= 7.10.2 && < 7.10.3)
ghc-options: -lHSrts-ghc7.10.2
else if impl (ghc >= 7.10.3 && < 7.10.4)
ghc-options: -lHSrts-ghc7.10.3
else if ...

顺便说一句,为什么你的可执行文件以 .so 结尾?我从未在可执行子句中看到过这种情况。

您确定使用的是 7.10.2 而不是 7.10.3?试试stack exec -- ghc --version

关于haskell - 如何在不硬编码 ghc 版本的情况下使用 cabal 和堆栈链接到 Haskell 静态运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com