微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ld:章节过多90295

如何解决ld:章节过多90295

我正在尝试从Ludum Dare构建一个haskell项目,但是每当尝试进行构建时,我都会收到一条错误消息,指出目标文件包含太多部分。这是错误

C:\Users\REDACTED\AppData\Local\Programs\stack\x86_64-windows\ghc-8.10.2\lib\../mingw/bin\ld.exe: .stack-work\dist\a3a5fe88\build\HSsingletons-2.7-J1xRPYS9ah3kGEIOoeLuX.o: too many sections (90295)
singletons           > C:\Users\REDACTED\AppData\Local\Programs\stack\x86_64-windows\ghc-8.10.2\lib\../mingw/bin\ld.exe: final link Failed: file too big

--  While building package singletons-2.7 using:
      C:\Users\REDACTED\AppData\Local\Temp\stack-5ba10ebdb151d9fa\singletons-2.7\.stack-work\dist\a3a5fe88\setup\setup --builddir=.stack-work\dist\a3a5fe88 build --ghc-options " -fdiagnostics-color=always"
    Process exited with code: ExitFailure 1

我正在使用堆栈2.3.3和Windows10。该项目使用vulkan库。

我尝试添加-opta-mbig-obj,但gcc随后失败,出现error: unrecognized command line option '-mbig-obj'

解决方法

您似乎可能需要显式尝试使用“大对象”文件格式,我相信您可以通过在项目的构建配置中的GHC标志中添加-opta-mbig-obj-Wa,-mbig-obj来实现( package.yaml.cabal文件)将-mbig-obj添加到汇编器选项。您可能还需要使用(我认为)--oformat pe-bigobj-x86-64-optl--oformat -optlpe-bigobj-x86-64-Wl,--oformat,pe-bigobj-x86-64添加到链接器标志。您正在使用32位MinGW吗?我希望MinGW64默认情况下可以处理此问题。 (而且我实际上不确定32位是否支持这些标志,因此您可能仍需要升级。)

,

大约一年前(https://gitlab.haskell.org/ghc/ghc/-/commit/1ef90f990da90036d481c830d8832e21b8f1571b),GHC在64位MinGW上组装和链接时已经使用-mbig-obj--oformat,pe-bigobj-x86-64。手动添加这些标志在最新的GHC版本上无济于事。

我能够使用Stack为sdl2vulkan Haskell软件包复制此问题,但是在Windows上用Cabal(和--enable-split-sections)编译时,它们都没有出现此问题。 ;这似乎是堆栈中的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。