GHC 6.12 и MacPorts

Я недавно установил (из двоичных установщиков) GHC 6.12 и Платформу Haskell 2010.1.0.1 на моем Intel MacBook рабочий OS X 10.5.8, и первоначально, все хорошо работало.Править: Я должен был установить cabal, alex, и happy из источника, но после этого, все, действительно казалось, хорошо работало. Однако я обнаружил это, если я использую cabal install устанавливать пакет, который зависит от библиотеки MacPorts (например, cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd), вещи хорошо работают в GHCi, но если я пытаюсь скомпилировать, я получаю ошибку

Linking test ...
Undefined symbols:
  "_iconv_close", referenced from:
      _hs_iconv_close in libHSbase-4.2.0.0.a(iconv.o)
  "_iconv", referenced from:
      _hs_iconv in libHSbase-4.2.0.0.a(iconv.o)
  "_iconv_open", referenced from:
      _hs_iconv_open in libHSbase-4.2.0.0.a(iconv.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

После некоторого поиска с помощью Google я нашел долгий поток Haskell-кафе, обсудив эту проблему. Результат, кажется, что MacPorts устанавливает обновленную версию libiconv, и двоичный интерфейс немного отличается от версии, включенной с системой. Следовательно, при попытке связаться с какой-либо библиотекой MacPorts, MacPorts libiconv связан в также; и так как основная библиотека была создана для соединения против другой версии libiconv, вещи повреждение. Я попытался установить LD_LIBRARY_PATH и DYLD_LIBRARY_PATH и добавление большего количества флагов, чтобы попытаться заставить это смотреть на /usr/lib снова (например. cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include --extra-lib-dirs=/usr/lib --extra-include-dirs=/usr/include gd), но ни один не работал. Удаление MacPorts libiconv не действительно опция, так как у меня есть набор портов, установленных, которые зависят от него---включая некоторые порты, как которые я хочу, чтобы Haskell связался с, gd2.

Из того, что я видел онлайн, результат действительно, кажется, "Вы сняты с костей": Вы не можете связаться против никакой библиотеки MacPorts при компиляции с GHC и там, кажется, не решение. Однако тот поток был от конца 2009, таким образом, я полагаю, что существует шанс, что у кого-то есть решение, обходное решение, смешной взлом … что-либо, действительно. Так: кто-либо знает, как заставить GHC 6.12 связываться против системы libiconv в то же время, что и это связывается с библиотеками от MacPorts? Или, приводя это к сбою, способ заставить соединение не прервать некоторый другой умный путь?

7
задан Antal Spector-Zabusky 28 April 2010 в 17:18
поделиться

3 ответа

Я получал ту же ошибку в MacOSX 10.5.8, когда установил haskell-platform-2010.1.0.1-i386 и попытался скомпилировать программу haskell. Решением для меня было добавить параметр "-L / usr / lib" в ghc при компиляции программы. Я считаю, что это удалось заставить компоновщик сначала искать / usr / lib для библиотеки iconv, что решило проблему для меня.

9
ответ дан 6 December 2019 в 21:11
поделиться

Это странно: afaik Platform 2010.1.0.1 не работает в OS X 10.5.8 , об этом сообщили и подтвердили несколько человек, включая меня, и, что более интересно, вами !

0
ответ дан 6 December 2019 в 21:11
поделиться

Я решил свои проблемы, удалив MacPorts. Вероятно, вы могли бы просто удалить версию libiconv для MacPorts и любую библиотеку, которая от нее зависит.

1
ответ дан 6 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: