GHC链接器找不到lHSsemigroups

问题描述 投票:1回答:1

我正在尝试使用以下命令在启用了概要分析的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

Cabal一直警告我有关重新安装可能会破坏软件包的信息,但我一直坚持(据我所知),当我在依赖关系树中移动时,每个可能被破坏的软件包都将自行重新安装。另外,我之前在另一台机器上也遵循相同的过程,并且运行良好。重新安装所有必需的软件包后,我的项目现在可以编译,但是链接器失败,并显示以下错误:

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)

但是,在未启用概要分析的情况下,构建确实成功完成了。有谁知道可能出了什么问题以及如何解决该问题?预先感谢。

史蒂文

haskell ghc
1个回答
0
投票

我将尝试为您的程序制作一个.cabal文件,在其中您明确指定程序所依赖的cabal软件包,并使用cabal v2-build来编译您的程序。它将警告您有关程序缺少的依赖项,直到将它们全部包含在.cabal文件的build-depends部分中为止。您只需要包括程序的依赖项,而不必包含依赖项的依赖项。之后,您可以添加cabal.project.local以启用性能分析,也许还可以进行其他操作。运行cabal v2-build足以构建您的程序和程序包,并启用概要分析(以及cabal.project.local中的其他选项)就足够了。

您需要在程序使用的程序包中启用概要分析,以支持其中的概要分析。 Cabal v2版本允许您具有同一包的多个实例。这些实例有所不同,因为使用了不同的标志和选项来构建它们。

可以使用单独的程序包数据库来获得相同的结果。那是使用带有--package-db选项的ghc-pkg。

另一个选择是使用堆栈。它将解决相同的问题,但以更大的空间和ghc的一些性能损失为代价(以可与cabal一起使用的源ghc相比)为代价,将解决相同的问题。

© www.soinside.com 2019 - 2024. All rights reserved.