GHC包是隐藏的

mhw*_*bat 7 haskell ghc

我正在尝试运行这个来自Haskell wiki的简单示例.

import GHC
import GHC.Paths ( libdir )
import DynFlags

main = 
    defaultErrorHandler defaultFatalMessager defaultFlushOut $ do
      runGhc (Just libdir) $ do
        dflags <- getSessionDynFlags
        setSessionDynFlags dflags
        target <- guessTarget "test_main.hs" Nothing
        setTargets [target]
        load LoadAllTargets
Run Code Online (Sandbox Code Playgroud)

我得到的错误消息是:

amy@wombat$ ghc --make amy15.hs 

amy15.hs:1:8:
    Could not find module ‘GHC’
    It is a member of the hidden package ‘ghc-7.8.3’.
    Use -v to see a list of the files searched for.

amy15.hs:3:8:
    Could not find module ‘DynFlags’
    It is a member of the hidden package ‘ghc-7.8.3’.
    Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)

现在,ghc-7.8.3我正在使用它进行编译,所以显然已经安装了包.

amy@wombat$ cabal info ghc
* ghc              (library)
    Versions available: [ Not available from server ]
    Versions installed: 7.8.3
... and so on
Run Code Online (Sandbox Code Playgroud)

为什么GHC不能看到ghc包装?

mhw*_*bat 8

显然ghc,默认情况下隐藏包,至少如果你按照我的方式手动安装ghc,而不是安装Haskell平台.所以我需要"取消隐藏"包,如下所示:

sudo ghc-pkg expose ghc
Run Code Online (Sandbox Code Playgroud)

  • 或者,您可以使用cabal来构建程序并将`ghc`包列为依赖项. (3认同)

Arn*_*non 5

大多数包都是隐藏的.

暂时取消隐藏它们,您可以使用ghc --make amy15.hs -package ghc-7.8.3.

要永久取消隐藏,请使用@mhwombat建议的方法.

  • 为什么隐藏,为了什么? (3认同)