【问题标题】:Find library dependency version of Haskell executable查找 Haskell 可执行文件的库依赖版本
【发布时间】:2016-11-13 18:15:03
【问题描述】:

假设我有一个由 ghc 生成的可执行文件。现在我想知道 它是用哪个版本的特定库构建的(比如哪个 基础版本/ 它是用 ?) 构建的?

能找到吗?

一个更具体的问题 - 我想知道 Cabal 的哪个版本 我的stack 可执行文件使用了库。

【问题讨论】:

  • 如果您在项目文件夹中,您可以运行stack list-dependencies 来查看正在使用哪个版本的Cabal。但这并不是你想要的。
  • @Alec 谢谢,是的,这不是我想要的。我想从可执行文件中找出依赖的库版本。

标签: haskell cabal haskell-stack


【解决方案1】:

感谢来自#haskell irc 的@ongy 的回答。

我可以使用 GNU 的 strings 实用程序来查找信息。寻找 我的堆栈可执行文件正在使用哪个版本的Cabal,我可以这样做:

strings ~/.local/bin/stack | grep -i Cabal-

那会吐出一根大绳子,我可以找到这段 里面的信息:

/tmp/stack-upgrade7565/stack/.stack-work/install/x86_64-linux/lts-6.14/7.10.3/lib/x86_64-linux-ghc-7.10.3/stack-1.2.1-IEWywJcSJuzIIEqkeEd87k:/home/sibi/.stack/snapshots/x86_64-linux/lts-6.17/7.10.3/lib/x86_64-linux-ghc-7.10.3/Cabal-1.22.8.0-Ku2CIqstfjg7Z2SNHUypWH:/home/sibi/.stack/snapshots/x86_64-linux/lts-6.14/7.10.3/lib/x86_64-linux-ghc-7.10.3/Glob-0.7.11-0WpLeizIORG0eUMRaKlYmO:/home/sibi/.stack/snapshots/x86_64-linux/lts-6.14/7.10.3/lib/x86_64-li....

我可以在其中看到Cabal-1.22.8.0

要查找base库版本,可以这样做

executable +RTS --info 将从中吐出 ghc 版本 我们可以找到基础。示例:

$ stack +RTS --info
 [("GHC RTS", "YES")
 ,("GHC version", "7.10.3")
 ,("RTS way", "rts_thr")
 ,("Build platform", "x86_64-unknown-linux")
 ,("Build architecture", "x86_64")
 ,("Build OS", "linux")
 ,("Build vendor", "unknown")
 ,("Host platform", "x86_64-unknown-linux")
 ,("Host architecture", "x86_64")
 ,("Host OS", "linux")
 ,("Host vendor", "unknown")
 ,("Target platform", "x86_64-unknown-linux")
 ,("Target architecture", "x86_64")
 ,("Target OS", "linux")
 ,("Target vendor", "unknown")
 ,("Word size", "64")
 ,("Compiler unregisterised", "NO")
 ,("Tables next to code", "YES")
 ]

感谢@MarcelineVQ 提供上述提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多