使用-Wall选项进行编译时出现以下错误。
ghc -o -Wall polycake polycake.hs
当我不使用该选项时,我的代码编译正常并按预期运行。这是什么意思?
<no location info>: error:
module ‘main:Polycake’ is defined in multiple files: polycake.hs
polycake.hs
答案 0 :(得分:8)
-o
选项期望输出文件名作为下一个参数 - 它不关心该参数是否以短划线开头。因此-o -Wall
将输出文件名设置为-Wall
(并且实际上不启用警告)。
所以剩下的两个参数是polycake
和polycake.hs
,ghc
解释为输入文件名。如果输入文件名不存在且尚未以.hs
扩展名结尾,ghc
将尝试添加该扩展名。因此ghc polycake polycake.hs
会尝试两次编译polycake.hs
。这会导致您的错误。
PS:输出文件名默认为没有扩展名的输入文件名,因此在这种情况下你根本不需要-o
选项。