我最近将工作电脑从Ubuntu
to Arch Linux
。
我现在收到以下错误(我正在使用堆栈来构建我的项目):
setup-Simple-Cabal-1.22.4.0-ghc-7.10.2:缺少对
外国的
图书馆:
* 缺少 C 库:HSrts-ghc7.10.2
这个问题通常可以通过安装系统包来解决
提供这个库(您可能需要“-dev”版本)。如果图书馆是
已经安装但在非标准位置,那么您可以使用标志
--extra-include-dirs= 和 --extra-lib-dirs= 指定它的位置。
据我了解,Linux 发行版的差异不应该引起任何问题。
我尝试过的事情:
- 使用 --extra-lib-dirs 添加库所在的路径
-确保两个系统上的 stack/ghc 版本相同
- 试图找到两个系统之间的相关差异,但没有成功
(gcc版本不同但没有改变任何东西)
我有一个基于 ubuntu 的 docker 容器,它的构建没有问题。
我唯一能想到的是,这个库的处理方式与某些随机 C 库不同,因为它包含 Haskell-Runtime。但我不知道这种差异是什么。或者不同的处理方式会如何导致我的 Arch 系统出现问题。
这是我的 .cabal 文件(该文件夹还包含整个项目):https://github.com/opencog/atomspace/blob/master/tests/haskell/libExecutionOutputTest/opencoglib.cabal https://github.com/opencog/atomspace/blob/master/tests/haskell/libExecutionOutputTest/opencoglib.cabal
好吧,我想出了一个解决方法,而不是在 .cabal 文件中指定库:
...
extra-libraries: HSrts-ghc7.10.2
...
将其添加到 stack.yaml 文件中:
...
ghc-options:
package-name: -lHSrts-ghc7.10.2
...
如果您还在 .cabal 文件中定义了可执行文件,这将破坏可执行文件,因为该库不仅包含在库中。将运行时库包含在可执行文件中会导致即时分段错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)