2012-12-13 12 views
6

पर मोनो 3.0.2 को संकलित करने का प्रयास करते समय त्रुटि मैं गिटहब के मोनो रेपो के टैरबॉल से मोनो 3.0.2 संकलित करने की कोशिश कर रहा हूं। लेकिन जब मैं mcs फ़ोल्डर में मिलता है, संकलन में विफल रहता है:CentOS 6.2

if test -w /root/mono/mcs; then :; else chmod -R +w /root/mono/mcs; fi 
    cd /root/mono/mcs && make --no-print-directory -s NO_DIR_CHECK=1 PROFILES=' net_2_0   net_3_5 net_4_0 net_4_5 ' CC='gcc' all-profiles 
    Bootstrap compiler: Mono C# compiler version 3.0.3.0 
    Makefile:43: warning: overriding commands for target 'csproj-local' 
../build/executable.make:149: warning: ignoring old commands for target 'csproj-local' 
    Makefile:43: warning: overriding commands for target 'csproj-local' 
../build/executable.make:149: warning: ignoring old commands for target 'csproj-local' 
    make[7]: *** No rule to make target '../../external/ikvm/reflect/*.cs', needed by '../class/lib/basic/basic.exe'. Stop. 
    make[6]: *** [do-all] Error 2 
    make[5]: *** [all-recursive] Error 1 
    make[4]: *** [profile-do--basic--all] Error 2 
    make[3]: *** [profiles-do--all] Error 2 
    make[2]: *** [all-local] Error 2 
    make[2]: Leaving directory '/root/mono/runtime' 
    make[1]: *** [all-recursive] Error 1 
    make[1]: Leaving directory '/root/mono' 
    make: *** [all] Error 2 

मैं पहले से ही make get-monolite-latest करके monolite स्थापित करने की कोशिश की और पहले से ही 2.x संस्करणों को स्थापित करने के लिए और फिर संकलन करने की कोशिश की है। इनमें से कोई भी समाधान काम नहीं करता है। 3.0.2 संस्करण में मेरी रूचि नया रेजर टेम्पलेट इंजन और एमवीसी 4 ढांचा है, लेकिन, यदि CentOS 6 के लिए संकलन/इंस्टॉल या बाइनरी पैकेजों की कोई संभावना नहीं है, तो मैं पिछले संस्करणों के साथ एक भंडार की सराहना करता हूं।

उत्तर

10

external/ उपनिर्देशिका में तथाकथित git submodules का उपयोग करके बाह्य निर्भरताएं होती हैं।

यदि आपको टैरबॉल से संकलित करते समय इनमें से किसी भी निर्देशिका में अनुपलब्ध फ़ाइलों से संबंधित कोई त्रुटि मिलती है, तो मेरा अनुमान है कि इस टैरबॉल को बनाने के लिए जो भी स्क्रिप्ट का उपयोग किया जाता है, वह इन निर्भरताओं में से कोई भी शामिल नहीं होता है।

यदि आपको सीधे अपने स्रोत गिटूब से मिलते हैं, तो आपको git submodule init और git submodule update चलाने की आवश्यकता है।

सिद्धांत रूप में, आप .gitmodules फ़ाइल को देखकर गिटूब से इन प्रत्येक पनडुब्बियों को डाउनलोड कर सकते हैं।

हालांकि, गिट प्रत्येक मॉड्यूल के प्रत्येक काम में प्रत्येक सबमिशन के विशिष्ट संशोधन को रिकॉर्ड करता है। तो यदि आप मोनो में कुछ विशिष्ट प्रतिबद्धता की जांच करते हैं और git submodule update का उपयोग करते हैं, तो आपको इन मॉड्यूल में से प्रत्येक का सटीक संशोधन मिल जाएगा कि प्रतिबद्धता के लेखक ने उस प्रतिबद्धता का उपयोग करते समय उपयोग किया था।

यदि आप स्रोत से संकलित करना चाहते हैं तो मैं स्रोत प्राप्त करने के लिए गिट का उपयोग करने की सलाह दूंगा। यह स्वचालित रूप से आपके लिए प्रत्येक निर्भरता का सही संस्करण प्राप्त करेगा और आपके लिए बाद में नए संस्करणों में अपडेट करना और/या स्थानीय परिवर्तन करना आसान बनाता है।

+0

यह अच्छी तरह से काम किया। आपका बहुत बहुत धन्यवाद! –

+0

धन्यवाद जो मेरे लिए नवीनतम संस्करण (3.1.2) –

+0

के लिए भी काम करता है, संदर्भ के लिए, गिटहब भंडार के रिलीज़ टैब पर मोनो-4.3.2.467 टैरबॉल उन रिलीज़ों में से एक है जो टूटा हुआ है। >। < –