2012-02-16 7 views
10

में समस्या संकलन मैं हास्केल के लिए बहुत नया हूं, और मैंने हाल ही में जीएचसी के साथ मंच स्थापित किया है। मैं एक साधारण हैलो वर्ल्ड प्रोग्राम संकलन के द्वारा इसे बाहर परीक्षण करने का फैसला: main = putStrLn "Hello, world"हास्केल - जीएचसी

अब, जब मैं कमांड लाइन (विंडोज 7) में जाते हैं, उचित निर्देशिका, और ghc hello.hs में प्रकार मिल जाए, यह निम्न संदेश के साथ वापस आता है : "[1 में से 1] संकलन मुख्य (हैलो.hs, हैलो.ओ)"। मैं समझता हूं कि एक बार यह संकलन करने के बाद, इसे "हैलो.एक्सई लिंक करना" के साथ पालन करना चाहिए, लेकिन यह कभी नहीं आता है, और नहीं .exe का उत्पादन होता है।

असल में, क्या ऐसा कोई स्पष्ट कारण है कि यह क्यों हो रहा है? क्या कोड में कोई समस्या है, क्या मुझे कुछ पता नहीं है, या क्या मुझे बस हास्केल प्लेटफ़ॉर्म को पुनः स्थापित करने का प्रयास करना चाहिए?

धन्यवाद।

+1

स्पष्ट होने के लिए: क्या आप चिंतित हैं क्योंकि यह hello.exe का उत्पादन नहीं कर रहा है, या क्योंकि यह उस पाठ को प्रदर्शित नहीं कर रहा है? क्या यह वास्तव में निष्पादन योग्य उत्पादन करता है, और क्या वह निष्पादन योग्य निर्देश के रूप में करता है? –

+0

क्षमा करें - यह .exe का उत्पादन नहीं करता है। जहां तक ​​मैं कह सकता हूं, न ही यह .o या .hi फ़ाइलों का उत्पादन करता है। जीएचसी आमतौर पर इन फाइलों को एक बार बनाया जाएगा, तो भी? उसी निर्देशिका में .hs के रूप में? –

+3

हां, यह आमतौर पर एक ही निर्देशिका है। यदि आपके पास पुराना जीएचसी है, तो आप 'ghc - make hello.hs' करना चाहेंगे। आपके पास जीएचसी का क्या संस्करण है? 'ghc --version' अगर आपने हाल ही में स्थापित किया है तो यह 7.0.4 होना चाहिए। मेरे पास Win7 पर 7.0.3 है और 'ghc hello.hs && hello.exe' ठीक काम करता है। –

उत्तर

1

क्या यह इसके बजाय a.exe या a.out.exe या a.out फ़ाइल का उत्पादन किया है? यदि नहीं, तो हो सकता है कि आप इसे स्वयं ही लिंक कर सकें? ld -o hello.exe hello.o या जो भी लिंक कमांड आपके प्लेटफॉर्म पर है।

1

मैं में --make विकल्प का उपयोग करूंगा। (यदि आप चाहें तो आप वास्तव में फ़ाइल एक्सटेंशन को छोड़ सकते हैं।) यह स्वचालित रूप से पता लगाएगा कि क्या करने की आवश्यकता है, यदि किसी भी पैकेज में लिंक होने की आवश्यकता है, और आम तौर पर आप जो भी उम्मीद करेंगे, वह कर सकते हैं।

+6

ghc-7.0 के रूप में। *, '--make' है डिफ़ॉल्ट मोड। ओपी में 7.0.4 है, इसलिए अब '--make' की आवश्यकता नहीं है। –

+0

वास्तव में? मुझे नहीं पता था कि उन्होंने इसे बदल दिया ... – MathematicalOrchid

+2

हाँ, उन्होंने इसे बदल दिया। एक और महत्वपूर्ण परिवर्तन यह है कि rtsopts को डिफ़ॉल्ट रूप से अक्षम कर दिया गया है, इसलिए यदि आप कुछ के साथ कुछ चलाने के लिए चाहते हैं '+ आरटीएस-एस ', आपको' -rtsopts' से लिंक करने की आवश्यकता है। –

10

मुझे फ़ाइल की शुरुआत से मॉड्यूल घोषणा को हटाकर मेरे प्रोग्राम को निष्पादन योग्य में जोड़ने के लिए ghc मिला।

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