Ho installato di recente (dagli installer binari) GHC 6.12 e Haskell Platform 2010.1.0.1 sul mio MacBook Intel con OS X 10.5.8 e, inizialmente, tutto ha funzionato correttamente. Modifica: Ho dovuto installare cabal
, alex
e happy
dalla fonte, ma dopo che, tutto sembrava funzionare correttamente. Tuttavia, ho scoperto che se uso cabal install
installare un pacchetto che dipende da una libreria MacPorts (esempio, cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd
), le cose funzionano bene in GHCi, ma se provo a compilare, ottengo l'erroreGHC 6.12 e 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
Dopo aver cercato su Google, ho trovato a long Haskell-cafe thread discutendo di questo problema. Il risultato sembra essere quello MacPorts installs an updated version of libiconv e l'interfaccia binaria è leggermente diversa dalla versione inclusa nel sistema. Di conseguenza, se provi a collegarti a una qualsiasi libreria MacPorts, anche la libiconv di MacPorts viene collegata; e poiché la libreria di base è stata creata per collegarsi a una versione diversa di libiconv, le cose si interrompono. Ho provato setting LD_LIBRARY_PATH
and DYLD_LIBRARY_PATH
e aggiungo altre bandiere per provare a farlo visualizzare di nuovo a /usr/lib
(ad esempiocabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include --extra-lib-dirs=/usr/lib --extra-include-dirs=/usr/include gd
), ma nessuno dei due ha funzionato. La disinstallazione di MacPorts libiconv
non è realmente un'opzione, dal momento che ho un sacco di porte installate che dipendono da esso --- incluse alcune porte a cui Haskell deve collegarsi, come gd2
.
Da quello che ho visto online, il risultato sembra essere "sei disossato": non puoi collegarti a nessuna libreria MacPorts mentre compili con GHC, e non sembra esserci una soluzione. Tuttavia, quella discussione era dalla fine del 2009, quindi immagino ci sia una possibilità che qualcuno abbia una soluzione, una soluzione alternativa, un hack ridicolo ... qualsiasi cosa, davvero. Quindi: qualcuno sa come ottenere GHC 6.12 per collegarsi al sistema libiconv nello stesso momento in cui si collega alle librerie da MacPorts? Oppure, in caso contrario, un modo per rendere il collegamento non si interrompe in qualche altro modo intelligente?
avete installato la piattaforma Haskell binario, o le MacPorts costruire? O la build di origine? –
Programmi di installazione binari sia per GHC che per la piattaforma Haskell. Modificherò la domanda per riflettere questo. –
Sto ottenendo esattamente questo problema con un GHC 6.12.3 che ho creato dal sorgente. –