Tôi đang cố gắng xây dựng gói double-conversion
từ Hackage. Nó xây dựng OK nhưng ghci không thể tải nó. Việc khiếu nại là:Biểu tượng không xác định trong gói Hackage `double-conversion`
Loading package double-conversion-0.2.0.0 ... linking ... <interactive>:
/home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o:
unknown symbol `_ZNK17double_conversion6Double5valueEv'
các nm
đầu ra cho thấy biểu tượng là yếu:
nm /home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o \
| grep _ZNK17double_conversion6Double5valueEv
00000000 W _ZNK17double_conversion6Double5valueEv
Đây là biểu tượng yếu duy nhất trong tập tin, và thực sự, như xa như tôi có thể nói, trong toàn bộ thế giới các gói được biên dịch bởi GHC.
Hàm có vấn đề rõ ràng là một FFI, được viết bằng C++ và được xác định nội dòng trong double-conversion/src/double.h
. Nó không phải là chức năng nội tuyến duy nhất ở đó, nhưng chỉ có một cái này được dán nhãn yếu.
Như một biện pháp tạm dừng, tôi đã di chuyển chức năng out-of-line, và gói bây giờ tải. Nhưng rõ ràng có một số vấn đề ở đâu đó trong đó. Tại sao chức năng này yếu? Tại sao các chức năng khác lại không? Ghc có nên phàn nàn ở các ký hiệu yếu không? Tôi có nên nộp lỗi hay không và nếu có, ai sẽ nhận được lỗi (chuyển đổi kép, gcc, ghc, người khác?)
Dữ liệu hệ thống: Gentoo Linux, gcc-4.4.5, ghc-7.0.4, cabal -1.10.2.0.
Lỗi nào bạn nhận được nếu bạn cố gắng cài đặt 'định dạng văn bản'? Có lẽ Yesod cố gắng sử dụng chuyển đổi kép từ Mẫu Haskell? –
Bạn đã thử sử dụng lớp phủ chưa? – alternative
@monadic: Tôi thực sự đang sử dụng lớp phủ, chỉ sau khi nó thất bại, tôi đã thử cài đặt cabal cục bộ. Thông báo lỗi là như nhau. @Mikhail Glushenkov: Tôi thực sự có thể cài đặt 'định dạng văn bản', nhưng không phải là' yesod'. Thông báo lỗi là như nhau. –