मान लें कि आपके पास एक क्रॉस-संकलन टूल-चेन है जो एआरएम आर्किटेक्चर के लिए बाइनरी बनाती है।सी/सी ++ नंगे-धातु संकलन और विशिष्ट ओएस (लिनक्स) के लिए संकलन के बीच अंतर क्या हैं?
आपका उपकरण श्रृंखला इस (लिनक्स के साथ एक x86_64 मशीन पर चल) की तरह है:
- हाथ-linux-gnueabi-gcc.exe: लिनक्स के लिए पार संकलन, एआरएम पर चलने के लिए।
- arm-gcc.exe: नंगे-धातु क्रॉस-संकलन लक्ष्यीकरण एआरएम के लिए।
... और एआरएम पर क्रॉस-संकलन के लिए अन्य उपकरणों की अधिकता।
अंक है कि मैं में दिलचस्पी रखता हूँ हैं:
- बाइनरी के बीच (ई) ABI मतभेद (यदि हो तो) नंगे धातु के मामले में
- सीमाओं (गतिशील स्मृति आवंटन, स्थिर कंस्ट्रक्टर्स के उपयोग की तरह सी ++, थ्रेडिंग मॉडल इत्यादि के मामले में)
- उनमें से प्रत्येक के लिए विशिष्ट जानकारी के मामले में 2 मामलों के बीच बाइनरी-स्तर अंतर (जैसे डीबग जानकारी समर्थन इत्यादि);
ऐसा लगता है कि "मेरे छोटे कार्यक्रम और मेरे ऑपरेटिंग सिस्टम के बीच अंतर" ... – deviantfan
@deviantfan: "मैं सी/सी ++ की सभी" सामान्य "विशेषताओं का उपयोग कर सकता हूं जिन्हें मैं फर्मवेयर के लिए उपयोग कर रहा हूं (नंगे धातु) विकास? " इस आलेख को यहां पढ़ने के बाद: http://www.state-machine.com/arm/Building_bare-metal_ARM_with_GNU.pdf मैंने नंगे धातु सी/सी ++ की कुछ सीमाएं देखीं। क्या कोई और (और मतभेद भी) हैं? :) – Liviu
* असली नंगे धातु * के लिए, आपको * newlib * के लिए एक पोर्टेबिलिटी परत लिखनी होगी। जीएनयू लिनक्स पर, या तो * eglibc * या [* glibc *] (http: //en.wikipedia।संगठन/विकी/GNU_C_Library) का उपयोग किया जाता है। असल में, आपका सवाल यह है कि क्या अंतर है। 1000s हैं क्या आप 'mmap()' का उपयोग करना चाहते हैं? आदि बाइनरी/कंपाइलर मतभेद कोई फर्क नहीं पड़ता (ज्यादातर)। यह 'सी' पुस्तकालय है जो पूरी तरह से अलग हैं। फ़ाइल I/O? –