Я пытаюсь собрать пакет 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Кабал-1.10.2.0.