繁体   English   中英

GHC 链接器找不到 lHSsemigroups

[英]GHC linker cannot find lHSsemigroups

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

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

史蒂文

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

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

可以为您的程序使用单独的包数据库来获得相同的结果。 那是将 ghc-pkg 与--package-db选项一起使用。

另一种选择是使用堆栈。 它将解决相同的问题,但不同的是在 ghc 中以更多空间和一些性能损失为代价(与从源代码构建的 ghc 相比,可以与 cabal 一起使用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM