0

虽然我可以在同一个目录中使用多个海龟脚本(例如已经解释了 pretty.hs 和 srv.hs),但我了解到我只能编译其中的一个。和

ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o srv srv.hs

因为这也隐含地构建了 Main.o 和 Main.hi,并且 srv 和 pretty 显然需要两个不同的目标文件。

无论如何,Turtle 和 Main 模块的故事是什么:如果可以使用(并因此选择)一个模块名称,那不是更好吗,就像这样

Module Whatever
import Turtle

我试图单独编译 .o 文件,但没有运气:

$ ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -c -o MainPretty.o pretty.hs

到目前为止没有投诉,但随后:

$ ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o pretty MainPretty.o

MainPretty.o: In function `rdyO_info':
(.text+0x40e): undefined reference to `transzuGZZTjP9K5WFq01xC9BAGQpF_ControlziMonadziIOziClass_zdfMonadIOIO_closure'
MainPretty.o: In function `rdyQ_info':
(.text+0x4d6): undefined reference to `transzuGZZTjP9K5WFq01xC9BAGQpF_ControlziMonadziIOziClass_zdfMonadIOIO_closure'
MainPretty.o: In function `cfxy_info':
(.text+0x712): undefined reference to `optpazuFpNJ7fLofFNEy3rK4ZZnBoD_OptionsziApplicativeziTypes_AltP_con_info'
MainPretty.o: In function `cfxy_info':
(.text+0x72e): undefined reference to `systezu0e3pMPmZZzzix21iFp2U03Lc_FilesystemziPathziRules_posixFromText_closure'
MainPretty.o: In function `cfyR_info':
(.text+0x92a): undefined reference to `optpazuFpNJ7fLofFNEy3rK4ZZnBoD_OptionsziApplicativeziTypes_AltP_con_info'

等等...

尽管如此,是否可以在同一个目录中编译两个不同的海龟脚本?如何?

谢谢。

4

1 回答 1

1

啊,回答我自己的问题:我看到我只需要在编译后删除这些 Main.o/Main.hi 文件(然后重新创建不同的文件),如下所示:

ghc -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d -O2 -threaded -outputdir=. -o pretty pretty.hs
rm -f Main.o Main.hi

对不起噪音

于 2016-07-22T03:56:35.173 回答