2012-01-19 10 views
5

मैंने यूनिक्स में किसी प्रोजेक्ट से कुछ फ़ाइलें बनाई हैं, वे बहुत हैं और यदि मैं इसे किसी अन्य पीसी या फ़ोल्डर में निष्पादित करना चाहता हूं तो मुझे वहां सभी फ़ाइलों की प्रतिलिपि बनाना होगा। वे सभी आयात में जुड़े हुए हैं। मैं निष्पादन योग्य हैकेल प्रोग्राम कैसे बना सकता हूं?हास्केल की बहु .hs फ़ाइलों को संकलित करें - यूनिक्स

मैं उदाहरण के प्रति है:

main.hs - main where all the program executes; using,besides haskell, unix shell. 
ex1.hs - basically types of data, some functions. 
ex2.lhs - same as ex1.lhs but is literate with LaTeX 
pic.jpg - picture to use on the pdflatex 
package.sty - package needed to use some functions 

मैं आगे बढ़ना है और इनमें से सभी को संकलित करते कैसे?

>ghc -o MAIN main.hs ex1.hs ex2.lhs pic.jpg package.sty 

Failed to load interface for 'ex1.hs' और रेखा जो आयात ex1.hs

जिज्ञासु अगर मैं करने के लिए व्यापार आयात ex1.hs है में है: मैं GHC का उपयोग कर, लेकिन हमेशा त्रुटियों देने की कोशिश की आयात ex2.lhs लाइन ex2

+1

क्या आपका मतलब _ghc_ था? –

+1

आप कैसे '.jpg'- या' .sty'-फ़ाइल संकलित करने के लिए चाहते हैं? क्या इसे निष्पादन योग्य में एम्बेड किया जाना चाहिए? – dflemstr

+0

हां मुझे इसकी आवश्यकता है क्योंकि प्रोग्राम एक पीडीएफ बनाता है और मुझे इसकी आवश्यकता है कि jpg और sty एक पैकेज है – MrFabio

उत्तर

9
  1. हास्केल मॉड्यूल के नाम एक ऊपरी मामले पत्र के साथ शुरू करना होगा, ताकि ex1.hs और ex2.hs का नाम बदलने Ex1.hs और Ex2.hs करने से शुरू । उन्हें module Ex1 where से भी शुरू करना चाहिए, अन्यथा मॉड्यूल का नाम Main पर डिफ़ॉल्ट होगा, और जब मॉड्यूल नाम फ़ाइल नामों से मेल नहीं खाते हैं तो जीएचसी बहुत उलझन में होगा।

  2. आयात विवरणों को मॉड्यूल नाम का संदर्भ देना चाहिए, फ़ाइल नाम नहीं, इसलिए उन्हें मॉड्यूल नामों के अनुरूप main.hs में बदलें।

    import Ex1 
    import Ex2 
    
  3. अब ghc --make main.hs साथ संकलन, और यह अन्य मॉड्यूल स्वचालित रूप से खोजना चाहिए। यह .hs औरएक्सटेंशन दोनों के साथ मॉड्यूल की खोज करेगा, और बाद में सही ढंग से साक्षर हास्केल फ़ाइलों का इलाज करेगा।

बड़ी परियोजनाओं के लिए, आप Cabal, निर्माण प्रणाली सबसे हास्केल पुस्तकालयों और कार्यक्रमों के द्वारा प्रयोग का उपयोग कर इस पर गौर करना चाहिए। यह निर्भरता और कंपाइलर विकल्पों को प्रबंधित करने में मदद करेगा, जैसे मेकफ़ाइल।

+0

के साथ साक्षर हैं, मैं _ghc --make main.hs_ कामों का उपयोग करके नामों के साथ ठीक था, लेकिन यह .o फाइलें बनाता है और तस्वीर संकलित नहीं होती है। फिर मैं इसे कैसे निष्पादित कर सकता हूं? कारण _./main.o_ या _./main_ काम नहीं करेगा – MrFabio

+0

@GoodGuyGreg: संकलन मानते हुए सफल हुआ, '/ मुख्य' काम करना चाहिए। मैं चित्र भाग संकलित करने के बारे में उलझन में हूँ। क्या आप लाटेक्स संकलन के बारे में बात कर रहे हैं? – hammar

+0

हां, यह एक मज़ेदार में एक पीडीएफ संकलित करता है, लेकिन यदि एक jpg संकलित करना असंभव है, तो मैं इसे कोई समस्या नहीं हटा सकता, लेकिन समस्या तब होती है जब मैं संकलित करता हूं। मैं प्रत्येक .hs और .lhs को मुख्य रूप से आयात करता हूं। एचएस और ./main का कहना है कि यह मौजूद नहीं है – MrFabio

3

पर प्रयास करें

ghc --make main.hs

कि GHC सब कुछ यह कर सकते हैं करने की कोशिश करना चाहिए ...

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