Неопределенный символ в пакете Hackage `двойное преобразование` - PullRequest
5 голосов
/ 09 июля 2011

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

1 Ответ

1 голос
/ 09 июля 2011

Этот билет на GHC Trac выглядит актуально: Невозможно использовать ghci с библиотекой, связанной с libstdc ++ . Это похоже на специфическую проблему Gentoo (или, возможно, GCC 4.4)рассматриваемый файл .o не содержит слабых символов в моей системе (я тестировал Ubuntu Natty с GCC 4.5.2 и GHC 7.0.3 / 7.0.4).Я предлагаю вам подать заявку на GHC Trac.Кстати, я могу воспроизвести # 5289.

...