Haskell GHC链接器找不到lHSsemigroups

Haskell GHC链接器找不到lHSsemigroups,haskell,ghc,Haskell,Ghc,我正在尝试使用以下命令在Windows上编译一个启用了评测的Haskell项目 ghc --make -O -prof -fprof-auto game_dangerous.hs 我自己开发了这个项目,并且编译和链接了相同的源代码,没有评测。正如所料(根据以前的经验),我遇到了一些表单错误: Could not find module `Data.Vector.Mutable' Perhaps you haven't installed the profiling libraries for

我正在尝试使用以下命令在Windows上编译一个启用了评测的Haskell项目

ghc --make -O -prof -fprof-auto game_dangerous.hs
我自己开发了这个项目,并且编译和链接了相同的源代码,没有评测。正如所料(根据以前的经验),我遇到了一些表单错误:

Could not find module `Data.Vector.Mutable'
Perhaps you haven't installed the profiling libraries for package `vector-0.12.0.2'?
我继续根据遇到的错误反复重新安装软件包,例如:

cabal install -p vector --reinstall
阴谋集团一直警告我可能会在重新安装时破坏软件包,但我坚持认为(据我所知),在我穿过依赖树时,每一个可能被破坏的软件包都会自行重新安装。另外,我以前在另一台机器上也使用过同样的过程,效果很好。重新安装所有必需的包后,我的项目现在可以编译,但链接器失败,出现以下错误:

C://Program Files//Haskell Platform//8.6.3//mingw//bin/ld.exe: cannot find -lHSsemigroups-0.18.5-8pPnWqWrcWhEagTFf5Pnk2_p
collect2.exe: error: ld returned 1 exit status
`gcc.exe' failed in phase `Linker'. (Exit code: 1)
但是,在未启用分析功能的情况下,生成会成功完成。有人知道可能出了什么问题以及如何解决问题吗?提前谢谢


Steven

我会尝试为您的程序创建一个.cabal文件,在该文件中,您可以明确指定您的程序所依赖的cabal包,并使用
cabalv2build
编译您的程序。它将警告您程序缺少依赖项,直到您将它们全部包含在.cabal文件的
builddependens
部分。您只需要包含程序的依赖项,而不是依赖项的依赖项。之后,您可以添加
cabal.project.local
,以启用评测,或者其他功能。运行
cabalv2build
就足够了,可以在启用评测(以及cabal.project.local中的其他选项)的情况下构建它所依赖的程序和包

您需要在程序使用的包中启用评测,以支持其中的评测。Cabal v2构建允许您拥有同一软件包的多个实例。这些实例是不同的,因为构建它们时使用了不同的标志和选项

使用单独的程序包数据库可以实现相同的结果。即使用ghc pkg和
--package db
选项

另一个选项是使用堆栈。它将解决相同的问题,但以ghc中更多的空间和一些性能损失为代价(与可与阴谋集团一起使用的从源代码构建的ghc相比)的情况有所不同