scipy - मैक ओएस एक्स माउंटेन शेर पर वितरक फोरट्रान बायनेरिज़ को कैसे संकलित करें?




osx-mountain-lion gfortran (4)

मैंने एंड्रॉइड के डेवलपर टूल्स स्रोत कोड पेज पर दिए गए स्रोत कोड को गफ़्तरन के संकलन को समाप्त कर दिया। यह अभी ठीक काम कर रहा है - मैंने सफलतापूर्वक x86-64 और i386 / i686 LAPACK, एटलस और ब्लॉल्स फोर्ट्रान पुस्तकालयों को संकलित किया है - लेकिन कुछ ऐसे रन्लिब परीक्षण हैं जो असफल होते हैं, जब बिल्ड निर्देशिका में मेक -क परीक्षण चलाते make -k test । (मैं उस पेस्टबिन या कहीं और जानकारी प्रदान कर सकता हूं, अगर कोई चाहता है ...)

निर्माण प्रक्रिया

सवाल पूछने के बाद, मैंने एप्पल के एलएलवीएमजीसीए 42 स्रोत कोड टार संग्रह को डाउनलोड किया है , जिसमें एलएलवीएम / जीसीसी सी, सी ++, ओब्जेसी और फोर्ट्रान कंपाइलर के लिए स्रोत कोड शामिल है, और कुछ समय के लिए गॉरट्रान के सार्वभौमिक निर्माण को संकलित करने का प्रयास किया। मेरे क्वाड-कोर 2.8 गीगाहर्ट्ज मैक प्रो पर बिल्ड लगभग 30 से 60 मिनट का समय लेता है, और इसमें काफी एक प्रक्रिया हो गई है, इसलिए मैंने इसके लिए बिल्ड लिपियों का एक सेट लिखा, जिसे मैंने गिटब कॉम में साझा किया है।

....

मैं समय के लिए यहां अपने निर्माण का एक टार संग्रह रखूंगा, अगर कोई एक प्रतिलिपि चाहता है (26-सितंबर 2012 को अपडेट किया गया) यदि केवल / usr / local / यद्यपि के उपसर्ग के साथ स्थापित किया गया है, तो यह केवल तभी काम करेगा जब तक कि आप / usr / local से उपसर्ग को बदलने के लिए एक्जिक्यूटेशनल और डाइलीब्स पर install_name_tool को चलाने न दें इसे रखें। आप install_name का otool -L filename साथ परीक्षण कर सकते हैं (इसके लिए कारणों के बारे में अधिक जानकारी यहां है )।

अंतिम बिल्ड मैं अब जीसीसी / फोर्ट्रान और libgfortran निर्देशिकाओं के अपडेट भी शामिल कर रहा हूं, जो मुझे जीएनयू जीसीसी 4.2.4 से मिला है। ये स्रोत मुझे अपने स्थानीय जीसीसी के दर्पण से मिला। 4.2.1 और 4.2.4 के बीच केवल मामूली बदलाव थे, और बिल्ड स्क्रिप्ट में कोड को अपग्रेड करने के लिए आवश्यक पैच शामिल हैं।

Build-gfortran.sh स्क्रिप्ट मैंने लिखा है कि डाउनलोड की निर्भरताएं ( एमपीएफएफ़ और जीएमपी ) लापता हैं, उन्हें संकलित करती है और उन्हें क्रॉस- कंपाइल करता है, वास्तुकला-आधारित पूर्वप्रक्रमक मैक्रोज़ के साथ अलग-अलग हेडर्स पैच करता है, और सार्वभौमिक बायनेरिज़ और लाइब्रेरी बनाने के लिए लिपो को चलाता है, अंत में दोनों i386 और x86_64 आर्किटेक्चर प्रक्रिया llvmCore के लिए समान है, और उसके बाद जीसीसी। मैंने ज्यादातर build_llvm और build_gcc bash लिपियों से ऐप्पल के एलएलवीएमजीसीसी 42 के साथ दिए गए कोड को कॉपी किया था, लेकिन उनमें से कुछ को संशोधित करना था, जिनमें कुछ lipo और install_name_tool कमांड शामिल हैं

ऐप्पल के जीसीसी को संकलित करने का आधिकारिक तरीका, gnumake का gnumake इस्तेमाल करने के लिए सिर्फ मेरे लिए काम नहीं किया। मैंने सोचा था कि यह केवल build_gcc में LANGUAGES चर में "फॉरेन" को जोड़कर काम करना चाहिए।

सिस्पी को संकलित करने के संबंध में, अभी भी वह इमारत पूरी तरह से नहीं मिल सकती है मुझे सी / सी + + कम्पाइलर के रूप में झगड़ाहट और झगड़ा ++ का उपयोग करना पड़ा है, या अन्यथा मैं EXC_BAD_ACCESS malloc त्रुटियों को प्राप्त करता हूं मैंने जीसीसी / जी ++ कंपाइलर्स का उपयोग नहीं किया है, सिस्टम सिस्टम का इस्तेमाल किया है। जैसा कि शेर के लिए रिपोर्ट किया गया है, Scipy स्थापना पृष्ठ पर । मैं 11 त्रुटियों और 1 विफलता के नीचे हूं, जो सभी एक ही 3 फ़ंक्शन कॉल (_fitpack._bspleval, numeric.asarray, test.utils.chk_same_position) से उठाए गए हैं। सोचो कि बहुत अच्छा है, लेकिन मुझे हर टेस्ट पास करना है ...

चूंकि ऐप्पल ने गॉरट्रान को एक्सोड के साथ बांट दिया है, मैं कैसे स्वतंत्र फोरट्रान कोड को संकलित करूँ? मेरे पास मैक ओएस एक्स माउंटेन शेर (10.8) है, और एक्सकोड 4.4 अधिष्ठापित है, जिसमें कमांड लाइन टूल्स पैकेज स्थापित है।

ऐप्पल के मूल कम्पाइलर

जहाँ तक मैं बता सकता हूं, Xcode C / C ++ / ObjC compilers GNU कंपाइलर कलेक्शन का एक दोराहे का उपयोग करते हैं, एक बैकेंड के रूप में एलएलवीएम ; बाद वाला I इंटेल और पीपीसी आर्किटेक्चर दोनों के लिए "सार्वभौमिक" बायनेरिज़ को संकलित और अनुकूलित करने में सक्षम बनाता है।

तृतीय पक्ष द्विआधारी फोरट्रान कंपाइलर

एचपीसी

मुझे केवल एक ही वेबसाइट मिली है जो गॉरट्रान के बाइनरी संस्करण को विशेष रूप से माउंटेन शेर के लिए वितरित करती है: एचपीसी वेबसाइट हालांकि, मैं इसे SciPy संकलन करने में विफल रहा, और बाद में SciPy के README में देखा कि यह "बग्गी स्पीप बायनेरिज़ उत्पन्न करने के लिए जाना जाता है "

क्रैन / आर

SciPy की सिफारिश (फ्री) फोरट्रान कंपाइलर क्रैन के आर सर्वर पर है, लेकिन यह अभी तक माउंटेन शेर के लिए अपडेट नहीं किया गया है। वे यूनिवर्सल कंपाइलर के निर्माण के लिए निर्देश और एक स्क्रिप्ट प्रदान करते हैं, लेकिन फिर से, यह अभी तक माउंटेन शेर के लिए अद्यतन नहीं किया गया है ..

G95

जी -95 परियोजना को 2010 के बाद से कोई अपडेट नहीं मिला है, इसलिए मैंने इसे करने की कोशिश नहीं की .. किसी ने भी माउंटेन शेर पर यह कोशिश की?

MacPorts

मुझे लगता है कि यह सबसे आसान तरीका है gfortran स्थापित हो जाएगा, लेकिन port search gfortran कुछ भी नहीं के साथ आता है, और मैं मैकपॉर्ट्स के साथ किसी भी खुशी पिछले नहीं था (मैकपॉर्ट्स के लिए कोई अपराध नहीं है, यह एक बहुत सक्रिय परियोजना की तरह लग रहा है, लेकिन मुझे लिनक्स पैकेज प्रबंधकों के साथ खराब कर दिया गया है, मेरे पसंदीदा मैनेजर की योग्यता है) तो मैक ओएस एक्स पर मैंने पिछले कुछ समय में सॉफ़्टवेयर और पुस्तकालयों को स्रोत कोड से संकलित किया है। कभी समस्या नहीं हुई 'अब टिल ...

एक फोरट्रान कंपाइलर का निर्माण

पिछले कुछ दिनों में इंटरनेट पर कई बार खोदने के बाद, मैंने दूसरे फोरट्रान कंपाइलर पाया है, लेकिन मैं किसी भी यूनिवर्सल बाइनरी को क्रॉस-कंपाइल करने में विफल रहा हूं, या SciPy को संकलित करने में विफल रहा हूं।

जीसीसी - ग्नू कंपाइलर कलेक्शन

मैंने पूरे जीसीसी संग्रह (v4.6.3) को संकलित किया, जिसमें ऑटोोटुल, ऑटोमिक, लिबटोउल और एम 4 शामिल हैं - जैसे जीसीसी विकी और इस ब्लॉग का वर्णन है - परन्तु परिणामी संकलक यूनिवर्सल बाइनरी संकलित नहीं हुए, संभवतः क्योंकि एलएलवीएम का उपयोग नहीं किया गया था बैकएंड।

DragonEgg

ड्रैगनएगगे एक "जीसीसी प्लगइन है जो जीसीसी के अनुकूलक और कोड जनरेटर की जगह ... एलएलवीएम के साथ" है। यह दिलचस्प दिखता है, लेकिन मुझे नहीं पता कि मैं इसे 'llvm-gfortran-4.x' संकलित करने के लिए कैसे उपयोग कर सकता हूं क्या यह किया जा सकता है?

अनुकूलता

पुस्तकालय

कंपाइलर Xcode के साथ आता है (जी का एक कांटा?) जीसीसी v4.2। लेकिन जीसीसी की मौजूदा रिहाई और विकास शाखा क्रमशः 4.6 और 4.7 हैं। जाहिर है, एक जीएनयू लाइसेंस परिवर्तन, या कुछ, ऐप्पल जीसीसी के और अधिक आधुनिक संस्करणों को अद्यतन करने से बंद कर दिया। इसलिए, अगर मैं जीसीसी के गफररेन v4.6 के साथ बनाई गई गतिशील पुस्तकालयों का निर्माण करना था, तो क्या वे Xcode के मूल कंपाइलर द्वारा संकलित सी कोड से जोड़ा जा सकता है? कम से कम, मैं मैक-ओ बायनेरीज़ के रूप में पाया गया है कि दोनों x86_64 और i386 कोड पथ की आवश्यकता होती है। क्या जीसीसी ने ऐप्पल (फोर्क्स ऑफ जी) जीसीसी के साथ पिछली संगतता प्रदान की है? मुझे पता है कि -ff2c पास -ff2c ध्वज है , लेकिन क्या ये स्थिर संस्करणों में है?

झंडे को संकलित करें

स्रोत से निर्मित जीसीसी फोरट्रान कंपाइलर ने -arch संकलन ध्वज के उपयोग का समर्थन नहीं किया मैं पहले ओएसएक्स संस्करणों (हिम तेंदुए को शेर) पर दोनों सीएफएलएजी और एफएफएलएजीएस पर्यावरण चर में झंडे- -arch x86_64 -arch i386 शामिल किया गया था। पायथन के डिस्टुट्स और संभवत: अन्य ओएसएक्स कम्पाइलर, ये झंडे काम करने की उम्मीद करते हैं, जब Xcode के सार्वभौमिक एसडीके का उपयोग करते हुए एप्लिकेशन या फ्रेमवर्क बनाने के लिए कॉन्फ़िगर किया जाता है।

यदि आप सोचते हैं कि मैं किस झंडे का उपयोग करता हूं, तो मैं उस लिपि को अपलोड कर चुका हूं जिसका उपयोग मैं पेस्टबिन में करता हूं, जो कि मैं कुछ भी संकलित करने से पहले source का उपयोग करता हूं: source ~/.bash_devenv

आदर्श OSX फोरट्रान कंपाइलर

  • पीपीसी और इंटेल (32 और 64 बिट) सार्वभौमिक बायनेरिज़ बनाएं, जो कि -arch झंडे का उपयोग करके निर्दिष्ट किया गया है।
  • XCode के लिंकर के साथ संगत बायनेरिएंज़ बनाता है
  • SciPy संकलित करता है, कोई त्रुटि नहीं दे रही है (numpy के distutils और f2py के साथ संगत)।

मैं Xcode का इतना उपयोग नहीं करता, लेकिन इसके साथ एकीकरण निश्चित रूप से अन्य उपयोगकर्ताओं को लाभ होगा। यहां तक ​​कि इंटेल अभी भी Xcode 4.4 में ifort को एकीकृत करने में समस्याएं हो रही है , इसलिए यह मुझे काम करने की उम्मीद नहीं है ..

यदि आप उपरोक्त सभी को पढ़ते हैं, तो धन्यवाद! आप संभवत: यह बता सकते हैं कि मैं स्रोत से अपने खुद के फोरट्रान कंपाइलर के निर्माण के खिलाफ नहीं हूं, लेकिन क्या यह संभव है? क्या मैंने कुछ याद किया? कॉन्फ़िगर ध्वज हो सकता है? और अगर ऐसा संकलक अभी तक उपलब्ध नहीं है, तो क्यों नहीं ?!

(अपडेट) एप्पल का जीसीसी

ऐप्पल ने opensource.apple.com पर जीसीसी के अपने पैच संस्करण के लिए स्रोत कोड प्रदान किया है। इसमें वास्तव में गफ़्ररान के लिए स्रोत कोड शामिल है, लेकिन आप क्या जानते हैं - यह संकलित (आसानी से) नहीं करता है मैं इसे काम करने के लिए एक बिल्ड स्क्रिप्ट लिखने की प्रक्रिया में हूँ दुर्भाग्यवश, मुझे कुछ पैच लागू करना पड़ता है, और जीएनयू सॉफ्टवेयर के निर्माण के "ऐप्पल तरीके" के बारे में सीखना है यह मुझे लगता है कि जाने का तरीका है। कोई कारण क्यों नहीं होना चाहिए? यदि मैं इसे काम करने के लिए मिलता है तो मैं एक उत्तर के साथ अपडेट करूँगा ...


मैं http://pr.research.att.com/tools/gcc-42-5666.3-darwin11.pkg से gfortran स्थापित करने के बाद संकलित करने में कामयाब रहा, जैसा कि यहां बताया गया है मुझे पैकेज को कई बार खोलने का प्रयास करना था, यद्यपि। पहली बार यह कहा गया है कि ऐप स्टोर से केवल ऐप इंस्टॉल किए जा सकते हैं। Gfortran स्थापित करने के बाद, python setup.py build और python setup.py install ठीक काम करता है संकीर्ण की इकाई परीक्षण हालांकि, काफी अधिक संख्या में विफल रहता है, सुनिश्चित नहीं है कि यह सामान्य है।

Ran 5481 tests in 82.079s

FAILED (KNOWNFAIL=13, SKIP=42, errors=11, failures=72)
<nose.result.TextTestResult run=5481 errors=11 failures=72>

आप ब्रश (या होमब्रे ) का उपयोग करने के लिए gfortran स्थापित कर सकते हैं

$ शराब बनाना स्थापित gfortran


मुझे पता है आप ने कहा है कि आप gcc48 पसंद नहीं करते हैं, लेकिन अगर आप gcc48 पोर्ट स्थापित करते हैं, तो यह वास्तव में शामिल होता है gfortran (हालांकि आपको sudo port select --set gcc mp-gcc48 करना होगा sudo port select --set gcc mp-gcc48 सेट अप करने के लिए सिफ़ारिश नाम gfortran )।

इसके अलावा, एफडब्ल्यूआईडब्ल्यू, मैकपॉप्स विकल्प जरूरी नहीं कि बाइनरी- मैकपोर्ट्स वास्तव में इसे स्रोत से बना सकते हैं, यही वजह है कि इसे कुछ समय लगता है। दूसरी ओर, यह कभी-कभी कहीं से संग्रहीत बाइनरी मिलती है, लेकिन मुझे लगता है कि पोर्टफाइल के मूल लेखक को अपलोड किए जाने पर निर्भर करता है।