2
比方說,我有一個由ghc生成的可執行文件。現在我想知道 它與哪個版本的特定庫建立(如哪個 版本的基地/ <插入其他庫在這裏>它是用?)?查找庫的依賴版本的Haskell可執行文件
有沒有可能找到它?
更具體的問題 - 我想知道Cabal
庫的哪個版本是由我的stack
可執行文件使用的。
比方說,我有一個由ghc生成的可執行文件。現在我想知道 它與哪個版本的特定庫建立(如哪個 版本的基地/ <插入其他庫在這裏>它是用?)?查找庫的依賴版本的Haskell可執行文件
有沒有可能找到它?
更具體的問題 - 我想知道Cabal
庫的哪個版本是由我的stack
可執行文件使用的。
感謝來自#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爲上述提示。
如果你在項目文件夾中,你可以運行'stack list-dependencies'來查看正在使用哪個版本的'Cabal'。這不是你想要的。 – Alec
@Alec謝謝,是的,這不是我想要的。我想從可執行文件中找出依賴項的庫版本。 – Sibi