2016-11-13 70 views
2

比方說,我有一個由ghc生成的可執行文件。現在我想知道 它與哪個版本的特定庫建立(如哪個 版本的基地/ <插入其他庫在這裏>它是用?)?查找庫的依賴版本的Haskell可執行文件

有沒有可能找到它?

更具體的問題 - 我想知道Cabal 庫的哪個版本是由我的stack可執行文件使用的。

+0

如果你在項目文件夾中,你可以運行'stack list-dependencies'來查看正在使用哪個版本的'Cabal'。這不是你想要的。 – Alec

+0

@Alec謝謝,是的,這不是我想要的。我想從可執行文件中找出依賴項的庫版本。 – Sibi

回答

0

感謝來自#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爲上述提示。

相關問題