मैं (./configure --target=armv7l-unknown-linux-gnueabihf
के साथ कॉन्फ़िगर करके) एआरएम के लिए एक क्रॉस संकलक के रूप में उपयोग करने के लिए बजना संकलित किया है, लेकिन जब मैं किसी भी सी कोड को संकलित करने का प्रयास करें, यह /usr/bin/as
उपयोग करने के लिए कोशिश करता है। मेरे पास पहले से ही एआरएम के लिए संकलित binutils है, और वे एक अलग निर्देशिका में हैं। मैं निर्दिष्टकर्ता के उपयोग के लिए क्लैंग (या llvm) को कैसे निर्देशित करूं?मैं क्लैंग के लिए कस्टम असेंबलर का उपयोग कैसे करूं?
उत्तर
मैं हमेशा कॉन्फ़िगर का उपयोग कर स्रोत निर्देशिका से विन्यस्त करने मुसीबत था और अंत में छोड़ दिया गया है। इन दिनों मैं हमेशा एक अलग निर्देशिका से कॉन्फ़िगर करता हूं i.e. ..//configure हालांकि मुझे बताया गया है कि कॉन्फ़िगरेशन के लिए एक पूर्ण पथ का उपयोग करने की अनुशंसा की जाती है।
अपने हाथ binutils आप बजना के लिए प्रयोग कर रहे हैं और सुनिश्चित करें कि वे रास्ते में कर रहे हैं जब आप & निर्माण बजना कॉन्फ़िगर कर एक ही उपसर्ग में स्थापित किया जाना चाहिए - यानी पथ =/कुछ/उपसर्ग/बिन: $ पथ;/कॉन्फ़िगर करें - लक्ष्य = armv7l-अज्ञात-लिनक्स-gnueabihf। यदि आप पैकेजिंग उद्देश्यों के लिए उन्हें अलग निर्देशिका में रखते हैं तो DESTDIR = को स्थापित करना चाहिए।
मैं आम तौर पर बजना का निर्माण नहीं है, लेकिन buildscripts मैं devkitARM के लिए उपयोग उपयोगी हो सकता है - http://sourceforge.net/p/devkitpro/buildscripts/ci/c372699fc7b4de90eb044314ce5bed04db640291/tree/
क्षमा करें, लेकिन मैंने पहले ही स्रोत निर्देशिका के रूप में उसी निर्देशिका में क्लैंग को कॉन्फ़िगर नहीं किया है। मेरे प्रश्न में मैंने जो आदेश शामिल किया है वह अल्पसंख्यक के लिए '--prefix' ध्वज छोड़ा गया है। जैसा कि आप कार्लनोरम की टिप्पणियों से देख सकते हैं, मैंने '--prefix' ध्वज को शामिल करने पर ध्यान दिया, और यह अभी भी मेरे लिए काम नहीं करता है। अजीब चीज यह है कि संकलन प्रक्रिया वास्तव में 'बिन' (सही लक्ष्य ट्रिपल के साथ) में एकीकृत असेंबलर बाइनरी बनाने लगती है, फिर भी यह इसका कभी भी उपयोग नहीं करती है। मैं निश्चित रूप से आपके उत्तर में शामिल बिल्ड स्क्रिप्ट पर एक नज़र डालेगा। – JosephH
--host विकल्प गुजर कॉन्फ़िगर करने के लिए जो सभी सीसी ar आदि उपयोगिताओं armv7l- साथ उपसर्ग का कारण होगा की कोशिश अज्ञात-linux-gnueabihf- जैसे:
./configure --host=armv7l-unknown-linux-gnueabihf --build=i686-unknown-linux-gnu
आप उम्मीद है कि साथ कॉन्फ़िगर उपयोग कर रहे हैं के बाद से Autotools पर एक नज़र डालें: automake Cross compiling
मुझे लगता है कि आपने इस सवाल को गलत समझा था। @ जोसेफ एच पूछ रहा है कि क्लैंग का उपयोग करके संकलन कार्यक्रमों को कैसे पार किया जाए, लेकिन आपका जवाब "संकलन को कैसे पार करना है" से संबंधित है। –
मैं जानता हूँ कि मैं इस हाल किया था ly - मुझे देखने दो कि क्या मैंने फाइलों को कॉन्फ़िगर किया है। एआरएम के लिए यह किसी भी असेंबलर को चलाने की कोशिश करने के बजाय मशीन कोड जनरेटर का उपयोग नहीं करना चाहिए? क्या आपने '--integrated-as' को पारित करने का प्रयास किया था? क्या आप '-v' का उपयोग करने से एक उदाहरण कमांड लाइन और आउटपुट दिखा सकते हैं? –
मेरे कॉन्फ़िगर लाइन, यह बहुत मदद की तरह नहीं दिखता है, हालांकि: '../llvm/configure --target = mipsel-SDE-योगिनी उपसर्ग =/कुछ/उपसर्ग --enable-optimized'। यह ठीक काम करता था और '/ कुछ/उपसर्ग/mipsel-sde-elf-as' चला गया। उस ने कहा, मैं आमतौर पर एकीकृत असेंबलर का उपयोग करता हूं, इसलिए मैंने थोड़ी देर में परीक्षण नहीं किया है। –
@CarlNorum मैं भी कर बजना को उसी फ़ोल्डर में एकीकृत कोडांतरक ('armv7l-अज्ञात-linux-gnueabihf-LLVM-as') है, फिर भी यह अभी भी'/usr/bin/as' उपयोग कर रहा है। मुझे यकीन नहीं है कि 'armv7l-अज्ञात-लिनक्स-gnueabihf-llvm-as' आंतरिक रूप से '/ usr/bin/as' को कॉल करता है या नहीं। – JosephH