所以我有以下makefile,我想用它来编译我的haskell程序。但是,在我的program.hs
文件中,我导入了一个不在标准Haskell发行版中的库(例如Data.List
)。因此,当我尝试编译时,我得到以下错误。如何将所述库包含在内以便编译好?附:我不对其他不涉及makefile的方法感兴趣,谢谢。
错误:
Linking program...
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
生成文件:
program: program.hs
ghc --make -static -optl-static program.hs
答案 0 :(得分:0)
你使用静态选项走错了路。我假设你在os-x上。正如ld: library not found for -lcrt0.o on OSX 10.6 with gcc/clang -static flag所解释的那样,只会让事情变得更糟。实际上你有一个不同的错误,因为你有一个之前的错误。
要编写一个好的makefile,首先要确保你可以运行ghc来编译程序而不用 make,只需运行shell中的命令即可。
即。尝试只编译ghc --make program.hs
,看看会发生什么。如果您的包环境中已经有其他库,那么它们是否在标准发行版中并不重要。