奇怪的 Haskell 'stack' 错误:“无法加载 .so/.DLL”“不是可写段”
Posted
技术标签:
【中文标题】奇怪的 Haskell \'stack\' 错误:“无法加载 .so/.DLL”“不是可写段”【英文标题】:Weird Haskell 'stack' error: "can't load .so/.DLL" "not a writable segment"奇怪的 Haskell 'stack' 错误:“无法加载 .so/.DLL”“不是可写段” 【发布时间】:2020-03-11 04:58:11 【问题描述】:我正在尝试安装 ghc-mod,以便可以在 Atom 中使用 ide-haskell。
instructions 说要使用stack build ghc-mod
。 ghc-mod 似乎不支持 GHC 8.2+,所以我将解析器设置为 lts-9.21。
在运行 stack build ghc-mod
时,我不断收到此错误(强调我的;不使用代码格式,因为换行有助于提高可读性):
aeson > : 无法加载 .so/.DLL 用于:/Users/timoffex/.stack/snapshots/x86_64-osx/db354248ca37308313a93487c93190e1d5b819629b60b38b68871c9a691e52b9/8.0.2/lib/x86_64-xhcHS-8。 -locale-COMPAT-0.1.1.3-KZ1jqNx8uhlHjmuPPj6V1Y-ghc8.0.2.dylib(dlopen的(/Users/timoffex/.stack/snapshots/x86_64-osx/db354248ca37308313a93487c93190e1d5b819629b60b38b68871c9a691e52b9/8.0.2/lib/x86_64-osx-ghc-8.0.2 /libHStime-locale-compat-0.1.1.3-KZ1jqNx8uhlHjmuPPj6V1Y-ghc8.0.2.dylib, 5): REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB 在 /Users/timoffex/.stack 中有段 2 不是可写段 (__LINKEDIT) /snapshots/x86_64-osx/db354248ca37308313a93487c93190e1d5b819629b60b38b68871c9a691e52b9/8.0.2/lib/x86_64-osx-ghc-8.0.2/libHStime-locale-compat-0.1.1.3-KZ1jqNx8uhlHjmuPPj6V1Y-ghc8.0.2.dylib)
... (later)
-- While building package aeson-1.1.2.0 using:
/Users/timoffex/.stack/setup-exe-cache/x86_64-osx/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.24.2.0 build --ghc-options ""
Process exited with code: ExitFailure 1
Progress 1/4
这是上面的一个sn-p,我觉得很奇怪:
REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB has segment 2 which is not a writable segment
我正在运行 macOS Catalina 10.15.3。
除了这个开放的 GitHub 问题:https://github.com/facebook/duckling/issues/446
我也试过 lts-7.24。我得到了完全相同的错误,除了它发生在构建 profunctors 时。
可能是什么问题?我可以在哪里提交错误?
【问题讨论】:
我怀疑 GHC 8.2 和您的 macOS 版本不兼容。我自己不使用 macOS,但我听说近年来支持它对 GHC 来说一直很棘手。如需确认和更有效的帮助,您可以转至ghc-devs mailing list。 我建议不要使用 ghc-mod,因为 8.2 是一个相当旧的 GHC 版本。您应该查看 VS 的其他 IDE 助手,例如 ghcid。 感谢您的建议!我以前没有听说过 ghcid,我会试一试。如果 ghc-mod 在 macOS 上不起作用,那就糟透了——我浪费了几个小时试图了解我做错了什么。 我在 macOS Catalina (10.15.4) 上也遇到了同样的错误,你找到任何解决方案了吗@Timoffex? 【参考方案1】:我在使用resolver: lts-9.17
的项目中遇到了同样的错误。
为我解决的问题是更新 stack.yaml
并使用这一行:
resolver: lts-10.9
【讨论】:
谢谢!不过,我认为 ghc-mod 不支持 GHC 8.2 以外的版本,这就是我需要使用较旧的解析器的原因。我从来没有解决过这个问题,但是 ghcid 很有帮助。以上是关于奇怪的 Haskell 'stack' 错误:“无法加载 .so/.DLL”“不是可写段”的主要内容,如果未能解决你的问题,请参考以下文章
在 haskell-stack 中设置 GHC 选项的各种方法如何协同工作
如何在 Docker Compose 中使用 Haskell Stack?