Вопрос

Я недавно установил (из двоичных установщиков) GHC 6.12 и Платформа Haskell 2010.1.0.1 На моем My 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

После некоторого гугула я нашел Длинная нить хэшкелл-кафе Обсуждая эту проблему. Дорога кажется, что 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), но не работал. Удаление макпоров libiconv Не на самом деле не вариант, поскольку у меня есть куча портов, которые установлены, которые зависят от него, - включая некоторые порты, которые я хочу Haskell ссылаться, как gd2.

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

Это было полезно?

Решение

Я получал ту же ошибку на MacOSX 10.5.8, когда я установил Haskell-Platform-2010.1.0.1-I386 и попытался скомпилировать программу Haskell. Решение для меня было добавить опцию «-L / usr / lib» в GHC при составлении программы. Я считаю, что этому удалось получить линкер на первый поиск / usr / lib для библиотеки iconv, которая решила для меня проблему.

Другие советы

Я сделал свои проблемы, удачив Макпоры. Возможно, вы можете уйти с удалением версии Macports of Libiconv и любой библиотеки, которая зависит от нее.

Я несколько стыдно признать это, но у меня был какой-то успех с заклинаниями, как следующее:

LIBRARY_PATH=/usr/lib:/opt/local/lib cabal install --ghc-option="-L/usr/lib" SDL-gfx

Я зафиксировал:

stack build --ghc-options "-L/usr/lib"

Это странно: Платформа AFAIK 2010.1.0.1 не работает на OS X 10.5.8, это сообщалось и проверено несколькими людьми, включая себя, а также более интересно - тобой!

Возможно, это может быть лучше cabal configure --extra-lib-dir=/usr/libЭто решает проблему на osx Mountain Lion

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top