Ich habe vor kurzem installiert (von den binären Installern) GHC 6.12 und die Haskell Platform 2010.1.0.1 auf meinem Intel MacBook unter OS X 10.5.8, und zunächst alles hat gut funktioniert. Edit: Ich musste cabal
, alex
und happy
aus der Quelle installieren, aber nach , dass, schien alles gut zu funktionieren. Ich entdeckte jedoch, dass, wenn ich cabal install
verwenden, um ein Paket zu installieren, die auf einer MacPorts Bibliothek abhängt (zB, cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd
), die Dinge in GHCi gut funktionieren, aber wenn ich zu kompilieren versuchen, erhalte ich die FehlerGHC 6.12 und 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
Nach einigem Googeln fand ich a long Haskell-cafe thread, das dieses Problem besprechend. Das Ergebnis scheint MacPorts installs an updated version of libiconv zu sein, und die binäre Schnittstelle unterscheidet sich geringfügig von der im System enthaltenen Version. Wenn Sie versuchen, eine Verknüpfung zu einer MacPorts-Bibliothek herzustellen, wird die MacPorts-Libiconv ebenfalls verknüpft. und da die Basisbibliothek so erstellt wurde, dass sie mit einer anderen Version von libiconv verlinkt ist, brechen die Dinge ab. Ich habe versucht, setting LD_LIBRARY_PATH
and DYLD_LIBRARY_PATH
und das Hinzufügen von mehr Flags zu versuchen, es zu /usr/lib
wieder zu sehen (z. B.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
), aber keiner der beiden funktioniert. Das Deinstallieren der MacPorts libiconv
ist nicht wirklich eine Option, da ich eine Reihe von Ports installiert habe, die davon abhängen --- einschließlich einiger Ports, zu denen ich Haskell verbinden möchte, wie gd2
.
Von dem, was ich online gesehen habe, scheint das Ergebnis wirklich "du bist boned": Sie können keine Verbindung zu einer MacPorts-Bibliothek während der Erstellung mit GHC herstellen, und es scheint keine Lösung zu geben. Aber dieser Thread war von Ende 2009, also denke ich, dass es eine Chance gibt, dass jemand eine Lösung hat, Workaround, lächerlicher Hack ... alles, wirklich. Also: weiß jemand, wie man GHC 6.12 erhält, um gegen das System libiconv gleichzeitig mit Bibliotheken von MacPorts zu verbinden? Oder, wenn das nicht gelingt, eine Möglichkeit, Verknüpfung nicht in einer anderen cleveren Weise zu brechen?
Haben Sie die binäre Haskell-Plattform installieren oder die MacPorts bauen? Oder die Quelle bauen? –
Binäre Installationsprogramme für GHC und Haskell Platform. Ich werde die Frage bearbeiten, um das zu reflektieren. –
Ich bekomme genau dieses Problem mit einem GHC 6.12.3 Ich habe aus der Quelle gebaut. –