2011-07-09 29 views
5

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.

+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? –

+0

Bạn đã thử sử dụng lớp phủ chưa? – alternative

+0

@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. –

Trả lời

1

Vé này trên GHC Trac có vẻ liên quan: Can't use ghci with a library linked against libstdc++. Điều này giống như một vấn đề đặc biệt của Gentoo (hoặc có thể GCC 4.4) - tập tin .o được đề cập không chứa bất kỳ ký hiệu yếu nào trên hệ thống của tôi (tôi đã thử nghiệm trên Ubuntu Natty với GCC 4.5.2 & GHC 7.0.3/7.0. 4). Tôi đề nghị bạn nộp một vé trên GHC Trac. Ngẫu nhiên, tôi có thể tái sản xuất # 5289.

+0

Đây không chỉ là GHCi. Các gói phụ thuộc vào 'double-conversion' không cài đặt (hoặc cuối cùng tôi đang cố gắng xây dựng' yesod'). Thông báo lỗi cũng khác nhau. –

+1

Thú vị! 'cabal install text-conversion' làm việc cho tôi, vì vậy đây có thể là một vấn đề cụ thể của Gentoo. 'nm' không hiển thị bất kỳ ký hiệu yếu nào trong' HSdouble-conversion-0.2.0.0.o' trên hệ thống của tôi. –

+0

bạn sử dụng phiên bản ghc và gcc nào? –

Các vấn đề liên quan