Hackage 包“双重转换”中未定义的符号

2024-01-16

我正在尝试建立double-conversion来自 Hackage 的包。它构建正常,但 ghci 无法加载它。投诉内容是:

Loading package double-conversion-0.2.0.0 ... linking ... <interactive>: 
/home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o: 
unknown symbol `_ZNK17double_conversion6Double5valueEv'

The nm输出显示该符号是weak:

nm /home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o \
    | grep _ZNK17double_conversion6Double5valueEv
00000000 W _ZNK17double_conversion6Double5valueEv

这是该文件中唯一的弱符号,而且据我所知,这是整个 GHC 编译包世界中唯一的弱符号。

有问题的函数显然是一个 FFI 函数,用 C++ 编写并内联定义在double-conversion/src/double.h。它不是唯一的内联函数,但只有这个被标记为弱。

作为权宜之计,我已将该函数移出线外,现在该包已加载。但显然这里面有什么问题。为什么这个功能很弱?为什么其他功能不行? ghc 应该抱怨弱符号吗?我应该提交一个错误吗?如果是,谁应该得到它(双重转换、gcc、ghc、其他人?)

系统数据:Gentoo Linux、gcc-4.4.5、ghc-7.0.4、cabal-1.10.2.0。


GHC Trac 上的这张票看起来很相关:无法将 ghci 与链接到 libstdc++ 的库一起使用 http://hackage.haskell.org/trac/ghc/ticket/5289. 这看起来像是 Gentoo(或可能是 GCC 4.4)特有的问题 -.o有问题的文件在我的系统上不包含任何弱符号(我在 Ubuntu Natty 上使用 GCC 4.5.2 和 GHC 7.0.3/7.0.4 进行了测试)。我建议您在 GHC Trac 上提交票证。顺便说一句,我可以重现#5289。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hackage 包“双重转换”中未定义的符号 的相关文章

随机推荐