2010-04-01 12 views
8

में स्थापित किया गया है। मैं ऐसे सिस्टम पर उपयोगकर्ता-स्पेस में लिनक्स पर स्थापित हास्केल प्लेटफ़ॉर्म और cabal-install स्थापित करने का प्रयास कर रहा हूं जिसमें जीएनयू मल्टी-प्रेसिजन पैकेज (जीएमपी) स्थापित नहीं है।जीएचसी का उपयोग करना, जीएमपी के साथ कैबल उपयोगकर्ता-स्पेस

मैं GHC-6.12.1 स्थापित किया है और GHCi पाने के लिए LB_LIBRARY_PATH की स्थापना करके काम कर lib निर्देशिका है जहाँ मैं जीएमपी स्थापित बिंदु पर करने में कामयाब रहे, लेकिन फिर अगले चरण में समस्याओं में भाग गया, cabal-install काम करने के लिए हो रही है। यह जीएमपी को (स्थिर रूप से) लिंक करने की कोशिश करता रहा।

यह विफल रहता है क्योंकि जीएमपी सिस्टम में स्थापित नहीं है और ld में कोई संकेत नहीं है कि पुस्तकालयों को कहां मिलना है, और कोई पर्यावरण परिवर्तनीय नहीं है (जिसे मैं जानता हूं) जो उपयोगकर्ता को ढूंढने के लिए ld कह सकता है जीएमपी की स्थापना, और (स्पष्ट रूप से) प्रासंगिक -L ध्वज की आपूर्ति करने के लिए कैबल को कॉन्फ़िगर करने का कोई तरीका नहीं है।

ज्यादा निरर्थक खोज और हैकिंग के प्रयास मैं अपने खुद के ld खोल स्क्रिप्ट है कि उपयुक्त -L ध्वज के साथ प्रणाली ld invokes स्थापित करने की मूर्खता से सरल विचार पर हिट करने के बाद। सभी समस्याओं को दूर चले गए हैं करने लगते हैं

#!/bin/sh 
/usr/bin/ld -L$HOME/gnu/lib "[email protected]" 
इस स्क्रिप्ट एक निर्देशिका में इंस्टॉल होने के बाद मेरी PATH /usr/bin से आगे पर

:

यह शेल पटकथा लेखन के 101, निश्चित रूप से है।

उत्तर

10

असल में, आपका ghc अभी तक काम नहीं कर रहा है। हां, यह चीजों को संकलित कर सकता है, लेकिन यह प्रोग्राम को लिंक नहीं कर सकता क्योंकि इसे उन्हें जीएमपी से जोड़ने की जरूरत है।

हम कुछ कोर पैकेज को संपादित करना चाहते हैं, उदाहरण के लिए RTS पैकेज, ताकि GHC हमेशा सही -L ध्वज का उपयोग करेगा:

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

उन लोगों को जो एक उपयोगकर्ता निर्देशिका में GHC स्थापित किया है के लिए, वे sudo के साथ पिछले आदेश पर अमल करने में सक्षम हो जाएगा। जब मैंने मैन्युअल रूप से rts.pkg संपादित किया, तो मुझे नहीं पता था कि किस तरह का फ़ील्ड सेपरेटर कैबल इस्तेमाल किया गया था, इसलिए मैंने मूल पुस्तकालय निर्देशिका को मूल के बाद अपनी लाइन पर रखा है। – Emanuel

+3

इन लाइब्रेरी डीआईआरएस के लिए विभाजक बस जगह है। –

+0

libgmp.so को 'शामिल-डीआईआरएस' में से एक में कॉपी करें उदा। '/ घर/दिलावर/bin/lib/GHC-7.8.3/RTS-1.0'। यह मेरे लिए काम किया। – Dilawar

संबंधित मुद्दे