2010-04-01 24 views
8

Tôi đã cố gắng cài đặt Nền tảng Haskell và cabal-install được cài đặt trên Linux trong không gian người dùng trên hệ thống không cài đặt gói GNU Multi-Precision (GMP).Sử dụng GHC, cabal với GMP được cài đặt trong không gian người dùng

Tôi đã cài đặt GHC-6.12.1 và GHCi bằng cách thiết lập LB_LIBRARY_PATH để trỏ vào thư mục lib nơi tôi đã cài đặt GMP, nhưng sau đó gặp sự cố trong bước tiếp theo, nhận cabal-install để hoạt động. Nó tiếp tục cố gắng (tĩnh) liên kết với GMP.

Điều này không thành công vì GMP chưa được cài đặt trong hệ thống và ld không phải là đầu mối để tìm thư viện và không có biến môi trường (mà tôi biết) có thể nói ld nơi tìm người dùng GMP cài đặt, và (rõ ràng) không có cách nào để nói cấu hình Cabal để cung cấp cờ -L có liên quan.

Sau nhiều lần tìm kiếm và hack không thành công, tôi nhấn vào ý tưởng đơn giản vô lý khi cài đặt tập lệnh shell ld của riêng tôi gọi hệ thống ld với cờ -L thích hợp.

Đây là shell scripting 101, tất nhiên:

#!/bin/sh 
/usr/bin/ld -L$HOME/gnu/lib "[email protected]" 

Với kịch bản này được cài đặt trong một thư mục trên của tôi PATH trước /usr/bin tất cả những vấn đề dường như đã biến mất.

Trả lời

10

Về cơ bản, ghc của bạn chưa hoạt động. Có, nó có thể biên dịch mọi thứ, nhưng nó không thể liên kết các chương trình vì nó cần liên kết chúng với gmp.

Những gì chúng ta có thể làm là chỉnh sửa một số gói cốt lõi, ví dụ gói RTS, vì vậy GHC rằng sẽ luôn luôn sử dụng quyền -L cờ:

ghc-pkg describe rts > rts.pkg 
vi rts.pkg      # add the gmp dir to the `library-dirs` field 
sudo ghc-pkg update rts.pkg 
+1

Đối với những người đã cài đặt GHC trong thư mục người dùng, họ sẽ có thể thực hiện lệnh cuối cùng với sudo. Khi tôi chỉnh sửa rts.pkg theo cách thủ công, tôi không biết loại cab được sử dụng trong trường nào, vì vậy tôi chỉ cần đặt thư mục thư viện bổ sung vào dòng riêng của nó sau bản gốc. – Emanuel

+3

Dấu phân cách cho các thư viện thư viện này chỉ là không gian. –

+0

Sao chép libgmp.so vào một trong các 'include-dirs' ví dụ: '/ home/dilawar/bin/lib/ghc-7.8.3/rts-1.0'. Nó làm việc cho tôi. – Dilawar

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