gcc - Hackage 包中的 undefined symbol `double-conversion`

标签 gcc haskell ghc

我正在尝试构建 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'
nm输出显示符号是 :
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 上的这张票看起来很相关:Can't use ghci with a library linked against libstdc++ .这看起来像是 Gentoo(或可能是 GCC 4.4)特定的问题 - .o有问题的文件在我的系统上不包含任何弱符号(我在带有 GCC 4.5.2 和 GHC 7.0.3/7.0.4 的 Ubuntu Natty 上进行了测试)。我建议你在 GHC Trac 上提交一张票。顺便说一句,我可以重现#5289。

关于gcc - Hackage 包中的 undefined symbol `double-conversion`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634373/

相关文章:

c - 如何用gcc编译C程序?

android - 在 Fedora 中编译并在 Android 上运行

haskell - 检查它是否是特定类型 - haskell

Haskell:最简单的 wai 例子的问题

Haskell 词法布局规则实现

haskell - GHC 编译错误

c - C字符串文字作为参数等于在AVR-GCC中为-1?

linux - Golang : How to cross compile on Linux for Windows

c++ - 使用 Shake 和 Stack 构建链接到 Haskell 库的 C++ 项目

haskell - 如何在小块中禁用 Haskell 警告?