Gần đây tôi đã cài đặt (từ trình cài đặt nhị phân) GHC 6.12 và Haskell Platform 2010.1.0.1 trên Intel MacBook của tôi chạy OS X 10.5.8 và ban đầu, mọi thứ hoạt động tốt. Chỉnh sửa: Tôi phải cài đặt cabal
, alex
và happy
từ nguồn, nhưng sau rằng, mọi thứ dường như hoạt động tốt. Tuy nhiên, tôi phát hiện ra rằng nếu tôi sử dụng cabal install
để cài đặt một gói phần mềm mà phụ thuộc vào một thư viện MacPorts (ví dụ, cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd
), mọi thứ hoạt động tốt trong GHCi, nhưng nếu tôi cố gắng biên soạn, tôi nhận được lỗiGHC 6.12 và 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
Sau khi một số Googling, tôi tìm thấy a long Haskell-cafe thread thảo luận về vấn đề này. Bản tóm tắt có vẻ là MacPorts installs an updated version of libiconv và giao diện nhị phân hơi khác so với phiên bản đi kèm với hệ thống. Do đó, nếu bạn cố gắng liên kết với bất kỳ thư viện MacPorts nào, libiconv của MacPorts cũng được liên kết; và kể từ khi thư viện cơ sở được xây dựng để liên kết với một phiên bản khác của libiconv, mọi thứ bị hỏng. Tôi đã thử setting LD_LIBRARY_PATH
and DYLD_LIBRARY_PATH
và thêm nhiều cờ hơn để cố gắng xem lại một lần nữa() (ví dụ: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
), nhưng không hoạt động. Gỡ cài đặt MacPorts libiconv
không thực sự là một tùy chọn, vì tôi có một loạt các cổng được cài đặt phụ thuộc vào nó --- bao gồm một số cổng tôi muốn Haskell liên kết tới, như gd2
.
Từ những gì tôi đã xem trực tuyến, bản cập nhật thực sự có vẻ là "bạn đã bị lừa": bạn không thể liên kết với bất kỳ thư viện MacPort nào trong khi biên dịch với GHC và dường như không có giải pháp nào. Tuy nhiên, chủ đề đó là từ cuối năm 2009, vì vậy tôi nghĩ có một cơ hội mà ai đó có một giải pháp, giải pháp, hack vô lý ... bất cứ điều gì, thực sự. Vì vậy: không ai biết làm thế nào để có được GHC 6.12 để liên kết với libiconv hệ thống cùng lúc với nó liên kết đến các thư viện từ MacPorts? Hoặc, thất bại, một cách để tạo liên kết không vi phạm theo cách thông minh khác?
bạn đã cài đặt Haskell vBulletin nhị phân, hoặc MacPorts xây dựng? Hoặc nguồn xây dựng? –
Trình cài đặt nhị phân cho cả GHC và Nền tảng Haskell. Tôi sẽ chỉnh sửa câu hỏi để phản ánh điều đó. –
Tôi nhận được chính xác vấn đề này với GHC 6.12.3 mà tôi đã tạo từ nguồn. –