GHC的-c和-no-link选项有什么区别?

Pet*_*lák 11 linker haskell ghc

帮助说:

 -c  Do not link
Run Code Online (Sandbox Code Playgroud)

 -no-link  Omit linking
Run Code Online (Sandbox Code Playgroud)

据我所知,-c完全阻止了连接部分.但是如果我指定的话有什么区别-no-link?链接阶段实际上除了链接之外还做了什么吗?

更新:有趣的是,-no-link弃用GHC 6.12,但在GHC 7 undeprecated.

Yur*_*ras 8

AFAK -c不处理依赖项.例如

Main.hs:

module Main
where

import Test

main :: IO ()
main = test
Run Code Online (Sandbox Code Playgroud)

Test.hs:

module Test
where

test :: IO ()
test = print 123
Run Code Online (Sandbox Code Playgroud)

尝试编译-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.
Run Code Online (Sandbox Code Playgroud)

-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 )
Run Code Online (Sandbox Code Playgroud)