2013-04-22 41 views
8

Có cách nào để sản xuất độc lập haskell thực thi để chạy trên các máy Linux khác nhau giả sử kiến ​​trúc là tương tự?Có thể sản xuất độc lập có thực thi haskell

Xin lỗi tôi nên rõ ràng hơn. Các máy khác có thể không có ghc cài đặt trên chúng - một chút như pyinstaller cho python là những gì tôi đang tìm kiếm?

+0

là http://www.yesodweb.com/blog/2012/03/shelly-for-shell-scripts những gì bạn đang tìm kiếm? – xhudik

Trả lời

11

Bạn có thể sử dụng cờ -static -optl-pthread -optl-static để tránh phụ thuộc được liên kết động khi biên dịch dự án Haskell. Điều này sẽ giúp bạn chạy tệp thực thi được biên dịch trên hai máy linux không có cùng phiên bản thư viện giống nhau.

+0

Tôi sẽ cung cấp cho một đi - cảm ơn – opensourcegeek

+0

Tôi đã không bao giờ có may mắn với ghc và liên kết tĩnh vì vậy tôi tò mò như thế nào tốt này làm việc cho bạn (và shang). Ví dụ, trên Fedora bạn obvioulsy cần các thư viện tĩnh ('yum install glibc-static') nhưng vẫn còn một vấn đề với RTS gọi dlopen. –

3

Có thể thực hiện được. Cũng giống như với các tệp nhị phân do gcc sản xuất, bạn có thể sao chép chúng giữa các hệ thống giả định các thư viện động và nền tảng khớp với nhau.

Trong thực tế, đó là một thanh cao hơn một chút so với GCC nhị phân vì GHC sẽ liên kết động nhiều thư viện theo mặc định (ví dụ: libgmp, trừ khi bạn xây dựng GHC sử dụng số nguyên đơn giản).

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