GHC的-c和-no-link选项之间的区别是什么?

时间:2014-02-17 10:43:41

标签: haskell linker ghc

帮助说:

 -c  Do not link

 -no-link  Omit linking

我理解-c会完全阻止链接部分。但是,如果我指定-no-link,有什么区别?链接阶段实际上是否与链接有关吗?

更新:有趣的是,-no-linkdeprecated in GHC 6.12, but undeprecated in GHC 7

1 个答案:

答案 0 :(得分:8)

AFAK -c无法处理依赖项。 E.g。

Main.hs:

module Main
where

import Test

main :: IO ()
main = test

Test.hs:

module Test
where

test :: IO ()
test = print 123

尝试使用-c进行编译:

$ ghc -c Main.hs

Main.hs:5:1:
    Failed to load interface for `Test'
    Use -v to see a list of the files searched for.

使用-no-link

$ ghc -no-link Main.hs
[1 of 2] Compiling Test             ( Test.hs, Test.o )
[2 of 2] Compiling Main             ( Main.hs, Main.o )