2016-11-13 5 views
2

Disons que j'ai un fichier exécutable produit par ghc. Maintenant, je veux savoir quelle version d'une bibliothèque particulière, il a été construit avec (comme quelle version de base/< insérer une autre bibliothèque ici> il a été construit avec?)?Version de dépendance de bibliothèque de l'exécutable Haskell

Est-il possible de le trouver?

Une question plus spécifique - Je veux savoir quelle version de la bibliothèque Cabal est utilisée par mon exécutable stack.

+0

Si vous êtes dans le dossier du projet, vous pouvez exécuter 'stack list-dependencies' pour voir quelle version de' Cabal' est utilisée. Ce n'est pas tout à fait ce que vous voulez. – Alec

+0

@Alec Merci, ouais ce n'est pas tout à fait ce que je veux. Je veux trouver la version de la bibliothèque de la dépendance seulement à partir de l'exécutable. – Sibi

Répondre

0

Grâce à @ongy de #haskell irc pour cette réponse.

Je peux utiliser l'utilitaire strings de GNU pour trouver l'information. Pour trouver quelle version de Cabal mon exécutable pile utilise, je peux le faire:

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

Cela va cracher une grande chaîne et je peux trouver ce morceau de informations qu'il contient:

/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.... 

Et je peux voir Cabal-1.22.8.0 dedans.

Pour trouver la version de la bibliothèque base, vous pouvez faire

executable +RTS --info qui recracher la version GHC de que nous pouvons trouver la base. Exemple:

$ 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") 
] 

Merci à @MarcelineVQ pour le conseil ci-dessus.