Niedawno zainstalowałem (z binarnych instalatorów) GHC 6.12 i Haskell Platform 2010.1.0.1 na moim Intel MacBook z systemem OS X 10.5.8 i początkowo wszystko działało dobrze. Edytuj: Musiałem zainstalować cabal
, alex
i happy
od źródła, ale po , że, wszystko wydawało się działać dobrze. Jednak odkryłem, że jeśli używam cabal install
zainstalować pakiet, który zależy od biblioteki DarwinPorts (np, cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd
), wszystko działa dobrze w GHCi, ale gdy próbuję skompilować, pojawia się błądGHC 6.12 i MacPorts
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
Po przejściu przez Googling, znalazłem a long Haskell-cafe thread omawiający ten problem. Wydaje się, że wynik jest następujący: MacPorts installs an updated version of libiconv, a interfejs binarny jest nieco inny niż wersja dołączona do systemu. W związku z tym, jeśli spróbujesz połączyć się z dowolną biblioteką MacPorts, biblioteka plików MacPorts zostanie również połączona; a ponieważ biblioteka bazowa została zbudowana w celu połączenia z inną wersją libiconv, rzeczy się psują. Próbowałem już setting LD_LIBRARY_PATH
and DYLD_LIBRARY_PATH
i dodałem więcej flag, aby spróbować ponownie uzyskać /usr/lib
(, np.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
), ale żaden z nich nie zadziałał. Odinstalowanie komputera MacPorts libiconv
nie jest tak naprawdę opcją, ponieważ mam zainstalowane kilka portów, które zależą od niego - łącznie z niektórymi portami, do których Haskell ma prowadzić, na przykład gd2
.
Z tego, co widziałem online, wynik naprawdę wydaje się być "jesteś bez kości": nie można połączyć z żadną biblioteką MacPorts podczas kompilacji z GHC, i nie wydaje się, aby było to rozwiązanie. Jednak ten wątek istniał od końca 2009 roku, więc sądzę, że jest szansa, że ktoś ma rozwiązanie, obejście, śmieszny hack ... cokolwiek, naprawdę. Więc: czy ktoś wie, jak uzyskać GHC 6.12, aby połączyć się z systemem libiconv w tym samym czasie, w którym łączy się z bibliotekami MacPorts? A może, w przeciwnym razie, łączenie nie łamie w jakiś inny sprytny sposób?
czy zainstalować binarną Haskell Platform, lub MacPorts budować? Lub kompilacja źródłowa? –
Instalatory binarne dla GHC i platformy Haskell. Będę edytować pytanie, aby to odzwierciedlić. –
Otrzymuję właśnie ten problem z GHC 6.12.3, który stworzyłem ze źródła. –