द फार्मेट बाइनरी विकल्प बताता है कि इनपुट फ़ाइल, इस मामले में स्टब नामक है। डेटा का एक कच्चा बाइनरी ब्लॉब है आप जो कमान दिखाते हैं वह इस ब्लॉब को लेता है और इसे एक एल्फ फाइल में लपेटता है, जो कि कंपाइलर द्वारा बनाई गई अन्य ऑब्जेक्ट्स के समान है, और एक प्रोग्राम में लिंक करने के लिए उपयुक्त है। इस तरह की चाल भी उपयोगी है, यदि आपके पास एक ROM - प्रोग्रामिंग टूल है, उदाहरण के लिए, जो कि रॉ बाइनरी के बजाय एल्फ डेटा की अपेक्षा करता है। ब्लॉब. डेटा अनुभाग में रखा गया है, और तीन प्रतीकों (उर्फ वैरिएबल) आपके लिए बनाई गई हैं: binarystubstart binarystubend binarystubsize यदि आप एक सी प्रोग्राम के साथ stub-image. o लिंक करते हैं, तो आप सामान्य तरीके से डेटा एक्सेस कर सकते हैं यह (आप जो भी सूचक प्रकार उपयुक्त हैं चुन सकते हैं): क्या कमांड लाइन विकल्पों का एक सेट है, जो कि जीसीसी को स्व-निहित स्रोत फ़ाइल से एक फ्लैट बाइनरी फ़ाइल का निर्माण करने के लिए समझाएगा उदाहरण के लिए, मान लें कि foo. c की सामग्री नहीं हैं बाहरी संदर्भ, लिंकर को निर्यात करने के लिए कुछ नहीं। आईडी किसी भी अन्य सजावट के बिना, इस समारोह के लिए मशीन निर्देशों के साथ एक छोटी फ़ाइल प्राप्त करना चाहते हैं। 32-बिट संरक्षित मोड को छोड़कर एक (डीओएस) फ़ाइल की तरह छाँटें। पूछा अक्टूबर 30 09 पर 0:26 अन्य उत्तर निश्चित रूप से जाने का रास्ता है हालांकि, मुझे अपेक्षित होने के लिए अपने आउटपुट के क्रम में obzcopy के लिए अतिरिक्त कमांड लाइन तर्क निर्दिष्ट करना था ध्यान दें कि मैं 64-बिट मशीन पर 32-बिट कोड विकसित कर रहा हूं, इसलिए - एम 32 तर्क। इसके अलावा, मैं इंटेल विधानसभा वाक्यविन्यास को बेहतर पसंद करता हूं, इसलिए आप देखेंगे कि तर्क में भी। ठीक है, जहां मुझे निर्दिष्ट करना था कि मैं विशेष रूप से केवल. text अनुभाग चाहता था: मुझे पढ़ने के 2 घंटे और विभिन्न विकल्पों का प्रयास करने से पहले मुझे यह पता चला था। उम्मीद है कि यह किसी और को उस समय बचाता है। आप लिंकर को विकल्प सीधे- Wl, ltlinker optiongt के साथ पास कर सकते हैं प्रासंगिक दस्तावेज़ीकरण को आदमी जीसीसी - डब्ल्यूएल से नीचे कॉपी किया गया है, विकल्प विकल्प के रूप में लिंकर के विकल्प के पास। यदि विकल्प में अल्पविराम शामिल होता है, तो यह अल्पविराम पर कई विकल्पों में विभाजित होता है। आप इस वाक्यविन्यास का उपयोग विकल्प के तर्क को पारित करने के लिए कर सकते हैं। उदाहरण के लिए, - डब्ल्यूएल, - मैप, आउटपुट. मैप पास - मैपर आउटपुट. मैप लिंकर पर। जीएनयू लिंकर का उपयोग करते समय, आप - Wl, - Mapoutput. map के साथ एक ही प्रभाव प्राप्त कर सकते हैं। इसलिए जब आप जीसीसी के साथ संकलित करते हैं - डब्लूएल, - ऑफोर्मैटबरीरी आप एल्फ प्रारूप के बजाय एक बाइनरी फ़ाइल उत्पन्न करेंगे। कहां --फोर्मटाबाइन एक बाइनरी फ़ाइल उत्पन्न करने के लिए एलडी को बताता है। यह अलग से objcopy की आवश्यकता को हटाता है। ध्यान दें कि --फ़ॉर्मेटबैरी को एक लिंकर स्क्रिप्ट के भीतर से OUTPUTFORMAT (बाइनरी) के रूप में व्यक्त किया जा सकता है यदि आप फ्लैट बाइनरी के साथ सौदा करना चाहते हैं, तो यह एक बड़ा मौका है कि आप उच्च स्तर के नियंत्रण से लाभान्वित होंगे जो कि लिंकर स्क्रिप्ट प्रदान करते हैं। 6 मई 18 को उत्तर: 18: एएक्स जीसीसी आधार पर जीएनयू सीसी संकलक का उपयोग करना जीसीसी कंपाइलर फ्री सॉफ्टवेयर फाउंडेशन जीएनयू प्रोजेक्ट का हिस्सा है। जीसीसी को एक खुला स्रोत पर्यावरण के माध्यम से विकसित किया गया है, जैसे कि सभी जीएनयू उपकरण हैं, और यह कई प्लेटफार्मों का समर्थन करता है जिसमें एएक्स भी शामिल है। जीसीसी जीएनयू कंपाइलर कलेक्शन के लिए खड़ा है, और सी, सी, ऑब्जेक्टिव सी, फोरट्रान और जावा जैसे कई भाषाओं का समर्थन करता है इस लेख में, हम जीसीसी संस्करण 3.3.4 और 3.4 के सभी संस्करणों को AIX संस्करण 5.1, 5.2 और 5.3 पर चर्चा करेंगे। ऐक्स के लिए जीसीसी कम्पाइलर की तुलना एक्सएल सीसी कंपाइलर एक्सएल सीसी एंटरप्राइज़ संस्करण V7.0 की तुलना एएक्स के लिए VisualAge174 सी व्यावसायिक वी 6.0 के लिए अनुवर्ती रिलीज है। इस खंड में, हम वर्णन करते हैं कि आप ऐक्स बनाम जीसीसी कंपाइलर का इस्तेमाल एक्सएल सीसी कंपाइलर का उपयोग करने के लिए क्यों कर सकते हैं। एक्सएल संकलक को नवीनतम अंतर्राष्ट्रीय और उद्योग प्रोग्रामिंग भाषा मानकों के लिए बहुत समर्थन है। एक्स्ट्रा लार्ज सीसी कंपाइलर फ्लोटिंग-प्वाइंट डिवीजन, नए प्रोगामा और अतिरिक्त नए कंपाइलर विकल्प के लिए नए अंतर्निर्मित कार्यों के साथ आता है। आईसीसी एक्सएल सीसी एडवांस्ड एडीशन वी 7.0 की एआईसी के लिए एक महत्वपूर्ण विशेषता जीसीसी के साथ आगे संगतता है। मूल रूप से जीसीसी के लिए लिखे गए कोड को पोर्टिंग करने में मदद के लिए, जीएनयू सीसी से संबंधित सुविधाओं का एक सबसेट XL सीसी द्वारा समर्थित है। महत्वपूर्ण रूप से, एक्स्ट्रा लार्ज सीसी संकलक PowerPC सिस्टम के लिए अनुकूलित है, जिसमें पावर 5 शामिल है। लेकिन कुछ परिस्थितियों में जीसीसी कंपाइलर का उपयोग करते समय अधिक आकर्षक हो सकते हैं। जब मानक मानक एपीआई का उपयोग करते हुए लिखा जाता है और जीएनयू जीसीसी या जी कंपाइलर्स का इस्तेमाल करते हुए उन्हें कई प्लेटफार्मों में रखकर संकलित किया जाता है तो इसे पूरा करना बहुत आसान है। जीसीसी के कई भाषाओं के बहुभाषी भाषाओं को पार्स करने की सुविधा है। जीसीसी एक पोर्टेबल कंपाइलर है और आज उपलब्ध अधिकांश प्लेटफार्मों पर चलता है, और अधिकांश वाणिज्यिक 64-बिट CPUs का समर्थन करता है जीसीसी एक देशी कंपाइलर है जो किसी भी प्रोग्राम को क्रॉस-कंसीबल कर सकता है, जीसीसी द्वारा स्वयं के द्वारा उपयोग किए जाने वाले एक अलग सिस्टम के लिए निष्पादन योग्य फ़ाइलों का निर्माण कर सकता है। यह एम्बेडेड सिस्टम के लिए सॉफ़्टवेयर को संकलित करने की अनुमति देता है जो कंपाइलर चलाने में सक्षम नहीं हैं जीसीसी को पोर्टेबिलिटी पर एक मजबूत फोकस के साथ सी में लिखा गया है, और खुद को संकलित कर सकता है, इसलिए इसे आसानी से नई प्रणालियों के लिए अनुकूलित किया जा सकता है। अंत में जीसीसी आपको मौजूदा जीसीसी और दूसरे जीएनयू सॉफ्टवेयर विकसित करने की स्वतंत्रता देती है, जो दूसरों द्वारा विकसित की जाती है। जैसा कि डेवलपर्स कई प्लेटफार्मों पर अपने अनुप्रयोगों का समर्थन करने की कोशिश करते हैं, विभिन्न प्लेटफार्मों पर विभिन्न कंपाइलर का उपयोग करने से कई सिरदर्द हो सकते हैं। यदि, इसके बजाय, आप जीसीसी कंपाइलर का उपयोग करते हैं, जो कि कई तरह के प्लेटफार्मों पर समर्थित है, यह एक प्लेटफॉर्म से दूसरे प्लेटफॉर्म को दूसरे में पोर्टिंग करने के लिए सिर दर्द को कम करता है जीसीसी आपकी प्लेटफॉर्म पर एक सामान्य संकलक वातावरण प्रदान करके अपना काम आसान बना सकता है। जी अब आईएसएएनएसआई सी मानक के पूर्ण अनुरूपता के करीब है। कृपया ध्यान दें कि डिफ़ॉल्ट एिक्स ऑपरेटिंग सिस्टम जीसीसी मेक फाइलों को नहीं समझता है अगर आप AIX पर जीसीसी कंपाइलर लोड करने का प्रयास कर रहे हैं, तो आपको GNU फ़ाइल बनाने की आवश्यकता है। आप मेक-वी प्रिंट कर सकते हैं यह देखने के लिए कि आपको जीसीसी के निर्माण की आवश्यकता है। एिक्स 5 एल बाइनरी संगतता आईबीएम ऑपरेटिंग सिस्टम के एआईएस 5.1, एएक्स 5.2 और एिक्स 5.3 संस्करणों के बीच द्विआधारी संगतता प्रदान करता है। इसलिए एएक्स 5.1 या एएक्स 5.2 पर चलने वाले एप्लिकेशन 5.3 पर चलेंगे, यदि वे आईबीएम एएक्स 5 एल बायनरी संगतता कथन में सूचीबद्ध मानदंडों का पालन करते हैं तो www-1.ibmserversaixoscompatibility। इसके साथ, आईएसवी एक नए ओएस रिलेशिप स्तर का समर्थन जोड़ने के लिए उपयोग की जाने वाली प्रक्रियाओं पर गहराई से बदलती हैं। कई शीर्ष आईएसवी अपने आवेदन को कुछ प्रकार के परीक्षण के माध्यम से चलाते हैं। अधिकांश मामलों में वे समर्थन जोड़ने से पहले उन्हें अंतिम परीक्षण प्रक्रियाओं के सबसेट के माध्यम से चलाएंगे। कई अन्य आईएसवी, हालांकि, हमारे द्विपदीय संगतता विवरणों की समीक्षा करते हैं और अपने विवरण के आधार पर समर्थन जोड़ते हैं। या तो मामले में, उन्हें ऐक्स 5.3 पर प्राप्त करने के लिए आवेदन को पुनः कंपाइल करने की आवश्यकता नहीं है। AIX पर जीसीसी स्थापित करना AIX पर जीसीसी स्थापित करना आसान है यदि आपके पास अपने एएक्स सिस्टम पर इंस्टॉल करने के लिए संस्करण के लिए बायनेरिज़ उपलब्ध हैं। बाइनरी आपके एएक्स सिस्टम में निम्न साइटों से एफटीपीडी हो सकती है, जैसा कि संबंधित विषय खंड में दर्शाया गया है: बुल एआईसीस फ्रीवेयर हडसन वैली सामुदायिक कॉलेज ओपन सोर्स सॉफ़्टवेयर एिक्स 5 एल और 6 ओपन सोर्स पैकेज आईबीएम एएक्स टूलबॉक्स लिनक्स एप्लीकेशन के लिए उपयुक्त बाइनरी डाउनलोड करने के बाद प्रारूप फ़ाइल, डाउनलोड की गई फ़ाइल को निष्पादन योग्य मोड पर chmod और फिर एसएमआईटी को स्थापित करने के लिए चलाएं। एसीसी 5.2 का समर्थन जीसीसी संस्करण 3.3 में जोड़ा गया था। लिनक्स एप्लीकेशन वेब साइट के लिए आईबीएम एआईआईएस उपकरण बॉक्स में एसीसी 5.1 और 5.2 के लिए इस समय के रूप में जीसीसी 3.3.2 बायनेरीज़ उपलब्ध हैं। बुल फ्रीवेयर साइट में एसीसी 5.2 के लिए उपलब्ध जीसीसी संस्करण 3.3.2 बायनेरिज़ हैं। यदि आपको एक नया जीसीसी संस्करण की आवश्यकता है, तो आपको पहले अपने सिस्टम पर एक उपलब्ध जीसीसी बाइनरी स्थापित करने की आवश्यकता है। एक बार आपके पास जीसीसी स्थापित हो जाने के बाद, आप इसे अपने AIX सिस्टम पर नए जीसीसी संस्करण को संकलित करने के लिए उपयोग कर सकते हैं। जीसीसी स्थापना निर्देशों का पूरा सेट और जीसीसी के लिए होस्ट-लक्षित-विशिष्ट स्थापना नोट्स को खोजने के लिए संबंधित विषय देखें। यह महत्वपूर्ण है कि आप प्लेटफ़ॉर्म-विशिष्ट निर्देशों का सावधानीपूर्वक पालन करें निर्माण शुरू करने और प्रक्रिया को स्थापित करने से पहले ध्यानपूर्वक निर्देशों के माध्यम से पढ़ें। आपको सफलतापूर्वक जीसीसी 4.3.x (संबंधित विषय देखें) को स्थापित करने के लिए जीसीसी बिल्ड रिपोर्ट उपयोगी पा सकते हैं। इस समय, एएक्स 5.3 के लिए बिल्ड रिपोर्ट्स हैं सुनिश्चित करें कि आप जीसीसी के एक संस्करण को स्थापित करते हैं जो सिस्टम पर स्थापित ऐक्स रिलीज़ से मेल खाती है। जीसीसी कुछ हेडर फाइलों की निजी प्रतियां स्थापित करती है जिन्हें जीसीसी के सही तरीके से काम करने के लिए एएक्स सिस्टम हेडर फाइलों के साथ ठीक से एकीकृत होना चाहिए, अन्यथा कंपाइलर चलाने से हेडर फाइलों के बारे में त्रुटि संदेश उत्पन्न हो सकते हैं। यदि वे मैच नहीं करते हैं तो हेडर फाइल को फिर से बनाया जाना चाहिए। पुराने संस्करण के स्रोतों से जीसीसी के एक नए रिलीज को बनाने के लिए हेडर फ़ाइल कैश को हटा सकते हैं, लेकिन हेडर फ़ाइल कैश के बिना जीसीसी को संचालित नहीं करना चाहिए। जीसीसी कंपाइलर विकल्प जीसीसी पर उपलब्ध संकलक विकल्पों की एक विस्तृत विविधता को प्रदान करता है, जिसमें अनुकूलन कोड, सेटिंग या आईएसएएनएसआई मानक कोड संकलन को रोकना, डिबगिंग विकल्प, टेम्पलेट कोड संकलन विकल्प शामिल हैं। जीसीसी पीएसरीज (पूर्व में आरएस 6000 के नाम से जाना जाता है) और पावरपीसी प्लेटफार्मों के लिए विशिष्ट कुछ संकलक विकल्प प्रदान करता है। पावर और पावरपीसी लक्ष्यों के लिए उपलब्ध विकल्पों का एक पूरा विवरण gcc. gnu. orgonlinedocsgcc-3.4.3gccRS002f6000-और-PowerPC-options. htmlRS002f6000-और-PowerPC - विकल्प पर पाया जा सकता है। यहां हम उन विकल्पों में से कुछ देखेंगे जिन्हें हम सबसे अधिक प्रासंगिक मानते हैं। प्रोसेसर प्रकार सेट करने वाले विकल्पों में से, जैसे - एमसीपीयू और - एमटीन जीसीसी द्वारा प्रदान किए जाने वाले डिफॉल्ट का उपयोग करना सबसे अच्छा है एएक्स 4.3 और एआईएस 5.1 पर, डीएमटीयूपीयूआमॉन - यह कोड पीएसरीज (आरएस 6000) प्रोसेसर परिवारों के सभी सदस्यों पर काम करेगा। एएक्स 5.2 और उच्चतर पर, डिफ़ॉल्ट है - एमसीपी यूपीपीआरपीसी - यह कोड पीएसरीज पावरपीसी प्रोसेसर पर काम करेगा। जीसीसी एक हालिया प्रोसेसर प्रकार को एईसीएस रिलीज से संबंधित है, जो शेड्यूलिंग प्रयोजनों के लिए एक प्रोसेसर मॉडल के रूप में है। आप का उपयोग करना चाहिए - पाकपावर - mcpupower2। - mcpupowerpc। - mcpupower4। आदि। एक विशिष्ट प्रोसेसर या प्रोसेसर के वर्ग के लिए अनुकूलित करने के लिए। का उपयोग न करें - कमवर - mpowerpc। - mpower2। या-एमपीपीसी 64 विकल्प। हालांकि वे उपलब्ध हैं, वे अंतिम उपयोगकर्ताओं के लिए अभिप्रेत नहीं हैं। - एमपीएम 2 या अलगाव के अन्य विकल्पों का उपयोग अप्रत्याशित परिणामों के कारण हो सकता है क्योंकि कंपाइलर उस लक्ष्य प्रोसेसर के लिए स्व-स्थिर स्थिति में नहीं हो सकता है। 64 बिट मोड में एक अनुप्रयोग को संकलित करने के लिए, आपको विकल्प - maix64 का उपयोग करना चाहिए। जो 64-बिट ऐक्स ABI को सक्षम करता है जैसे कि: 64-बिट पॉइंटर्स, 64-बिट लम्बी प्रकार, और उन्हें समर्थन देने के लिए आवश्यक बुनियादी ढांचे। निर्दिष्ट करना- maix64 का अर्थ है- एमपीपीसी 64 और - कंप्यूटर जबकि- maix32 64-बिट एबीआई को निष्क्रिय करता है और इसका मतलब है - mno-powerpc64 जीसीसी डिफ़ॉल्ट - माईक्स 32 यदि आप एक लिंकर त्रुटि संदेश प्राप्त करते हैं, तो कह सकते हैं कि आपने उपलब्ध TOC (सामग्री सारणी) के स्थान को खत्म कर दिया है, आप - mminimal-toc का उपयोग करके उपयोग किए गए TOC स्पेस को कम कर सकते हैं डिफ़ॉल्ट रूप से जीसीसी का उपयोग करता है- mfull-toc जो आपके प्रोग्राम में प्रत्येक अनन्य गैर-स्वचालित चर संदर्भ के लिए कम से कम एक TOC प्रविष्टि को आवंटित करता है। जीसीसी भी टीओसी में फ्लोटिंग-पॉइंट स्थिरांक रखता है हालांकि, केवल 16,384 प्रविष्टियां टीओसी में उपलब्ध हैं, और यह संभव है कि टीओसी को खत्म करना। निर्दिष्ट करके - मिनेमाल-टूक जीसीसी प्रत्येक फ़ंक्शन के लिए केवल एक टीओसी प्रविष्टि बनाता है। - पीथ्रेड संकलित करता है और अपने एप्लिकेशन कोड को पॉसिक्स थ्रेड्स लाइब्रेरी से जोड़ता है, जैसा कि आप VisualAge (या XL) सीसी में करेंगे। VisualAge (या XL) सीसी के साथ, आप थ्रेड समर्थन प्राप्त करने के लिए xlcr या xlcr का उपयोग करके भी संकलित और लिंक कर सकते हैं, लेकिन यह विकल्प जीसीसी के साथ मौजूद नहीं है। थ्रेड कोड को जीसीसी के लिए - पीथ्रेड के साथ जोड़ा जाना चाहिए। - पीथ्रेड विकल्प पूर्वप्रक्रमक और लिंकर दोनों के लिए झंडे सेट करता है। - g विकल्प डीबगिंग जानकारी उत्पन्न करता है, लेग 2 पर - gxcoff को डिफ़ॉल्ट करता है। डीबगिंग जानकारी में कुछ एक्सटेंशन GNU Debugger (GDB) के लिए हो सकते हैं। ऐक्स डीबीएक्स के साथ अधिक डिबगिंग जानकारी का निर्माण करने के लिए, एक - gxcoff विकल्प का उपयोग कर सकते हैं। AIX के लिए जीसीसी समर्थन नहीं करता - मॉफ्ट फ्लोट पूरी तरह से। यह जीसीसी के भीतर फ्लोटिंग प्वाइंट रजिस्टरों के उपयोग को बंद कर देगा, लेकिन जीसीसी समर्थन पुस्तकालयों और एिक्स लाइब्रेरीज़ फ्लोटिंग प्वाइंट रजिस्टरों का उपयोग जारी रखेंगे। - mlittle-endian और - mcall-linux AIX कॉन्फ़िगरेशन में मान्य नहीं हैं दस्तावेज़ीकरण सभी जीसीसी आरएस 6000 लक्ष्यों के लिए सभी विकल्पों का उल्लेख करता है। प्रत्येक कॉन्फ़िगरेशन में सभी विकल्प उपलब्ध नहीं हैं देशी एएक्स लिंकर को सीधे विकल्प पास करने के लिए, उपयोग करें- Wl, ltlinker optiongt। जी और जीसीसी कम्पाइलर विकल्प इसी तरह, जीसीसी-विशिष्ट कंपाइलर विकल्प का एक पूरा विवरण gcc. gnu. orgonlinedocsgcc-3.4.3gccC-Dialect-Options. htmlC20Dialect20Options पर पाया जा सकता है। ये विकल्प एक अन्य यूनिक्स सिस्टम के रूप में भी हैं I सबसे आम अनुकूलन विकल्प - O2 है जो परिणामी निष्पादन योग्य या लाइब्रेरी के प्रदर्शन को बढ़ाने के लिए कई अनुकूलन सक्षम करता है। - O3 अधिक अनुकूलन सक्षम बनाता है जो अतिरिक्त संकलन समय की कीमत पर प्रदर्शन को सुधार सकता है। - इसे ऑप्टिमाइज़ेशन सक्षम बनाता है जो प्रदर्शन को बढ़ाता है, लेकिन कोड आकार को कम करने की कोशिश करता है कम्प्यूटेशनल-गहन वैज्ञानिक अनुप्रयोगों के लिए उपयोगी अतिरिक्त ऑप्टिमाइज़ेशन विकल्प में शामिल हैं- फनोल-लूप्स और - फस्ट-गणित - विस्तृत-गणित कम्पाइलर को गणक कार्यों के लिए सटीक आईईईई और आईएसओ अनुरूपता के खर्च पर संकलक को सुधारने में मदद देता है। एएक्स बनाम सिस्टम वी सिस्टम पर साझा लाइब्रेरी सबसे पहले, आइएक्स और सिस्टम वी सिस्टम के बीच साझा पुस्तकालयों के संबंध में मतभेद देखें। इसके बाद हम चर्चा करेंगे कि जीसीसी का उपयोग करते हुए एएक्स सिस्टम पर साझा लाइब्रेरी कैसे बनाएं। एएक्स और सिस्टम वी में साझा वस्तुओं का अलग-अलग नज़रिया है। एआईसी आम तौर पर साझा वस्तुओं को पूरी तरह से जुड़ी हुई और हल निकाली गई संस्थाओं के रूप में देखता है, जहां प्रतीक संदर्भों को लिंक-समय पर हल किया जाता है और लोड-टाइम में पुन: प्राप्त नहीं किया जा सकता। सिस्टम वी उन्हें साधारण ऑब्जेक्ट फाइलों के समान दिखता है, जहां सभी वैश्विक प्रतीकों का संकल्प लिंकर द्वारा रन-टाइम पर किया जाता है। हालांकि, एएक्स में रन-टाइम लिंकिंग (आरटीएल) करने की क्षमता होती है, ताकि प्रतीकों को लोड अवधि तक अपरिभाषित किया जा सके, जब आवश्यक परिभाषाओं को खोजने के लिए सभी लोड किए गए मॉड्यूल के बीच खोज की जाती है एएक्स में एक साझा मॉड्यूल एक ऑब्जेक्ट फ़ाइल या एक संग्रह फ़ाइल सदस्य हो सकता है जिसमें साझा मॉड्यूल और सामान्य ऑब्जेक्ट फाइल हो सकती है। सिस्टम वी में, साझा लाइब्रेरी हमेशा सामान्य फ़ाइलें होती हैं, विशेष विकल्पों के साथ बनाई गईं। एएक्स में आम तौर पर सभी लिंकर्स इनपुट साझा ऑब्जेक्ट आउटपुट फ़ाइल के आश्रितों के रूप में सूचीबद्ध होते हैं, यदि उनके प्रतीकों का एक संदर्भ होता है एआईएक्स ने स्पष्ट रूप से प्रतीकों का निर्यात करने के लिए निर्यात फ़ाइलों का उपयोग भी किया है सिस्टम वी में कमांड लाइन पर सूचीबद्ध सभी साझा लाइब्रेरीज़ के नाम भार-समय पर संभावित उपयोग के लिए आउटपुट फाइल में सहेजे जाते हैं। हालांकि, एएक्स 4.2 से शुरू हो रहा है और एIX (4.3, 5.1, और 5.2) के वर्तमान में सभी उपलब्ध रिलीज़ों में उपलब्ध है, - बीटीएल विकल्प आउटपुट में निर्भर ऑब्जेक्ट्स के रूप में सूचीबद्ध होने के लिए कमांड लाइन पर सभी साझा ऑब्जेक्ट्स (संग्रह सदस्यों को छोड़कर) का कारण बनता है फ़ाइल। अधिक जानकारी के लिए, एईसीएस लिंकिंग और लोडिंग तंत्र (पीडीएफ 184 केबी) देखें। जीसीसी के साथ, जीसीसी साझा एक साझा लाइब्रेरी बनाता है लिंकर स्वचालित रूप से कुछ प्रतीकों का निर्यात करता है, लेकिन आप अधिक प्रतीकों को निर्यात करने के लिए एएक्सस एलडी - बीक्स्पॉल का उपयोग कर सकते हैं। अंडरस्कोर के साथ प्रतीक अभी भी स्वचालित रूप से निर्यात नहीं किए जाते हैं। एईएक्स 5.2 या एआईसी 5.1 पर रखरखाव स्तर 2 पर, यह नए - बेक्सपीफ़्लिल लिंक विकल्प का उपयोग करना संभव है, जो सभी प्रतीकों को निर्यात करेगा और एक अंडरस्कोर (जैसे सी मैंगल नाम से) के साथ शुरु होने वाले प्रतीकों को नहीं छोड़ेगा। पूर्ण नियंत्रण के लिए, एक निर्यात फ़ाइल बनाने के लिए सबसे अच्छा। यदि आप AIXs निर्यात फ़ाइलें, एएक्स लिंकिंग और लोडिंग तंत्र (पीडीएफ 184 केबी) से अपरिचित हैं। जीसीसी द्वारा साझा किया जाने वाला ऐक्स-शैली, कस-बांधा साझा ऑब्जेक्ट, जैसा ऊपर एएक्स बनाम सिस्टम V खंड में वर्णित है। जीसीसी द्वारा साझा किए गए एएक्स लिंकर को- बीएम: एसआरई - बीएनेंट्री इसलिए, आपको इन दो ऐक्स विकल्पों को डुप्लिकेट करने की आवश्यकता नहीं है। - बीटीएल का उपयोग करना एआईएक्स लिंकर लाइब्रेरीज़ को.a और. so दोनों एक्सटेंशन के साथ दियेगा, जैसे कि libfoo. a और libfoo. so। बिना-बीआरटीएल एआईएक्स लिंकर सिर्फ लिबफू के लिए ही दिखता है। आप केवल एक साझा ऑब्जेक्ट को संग्रह करके या libfoo के रूप में साझा ऑब्जेक्ट का नाम बदल कर libfoo. a बना सकते हैं। ए - AIX ध्यान नहीं देता है, जब तक फ़ाइल प्रत्यय है। A। एIX रन-टाइम लिंकिंग का उपयोग करने के लिए, आपको जीसीसी - शेअर - डब्ल्यूएल, - जी का उपयोग करके साझा ऑब्जेक्ट बनाना चाहिए और लाइब्रेरी का उपयोग करके एक्जीक्यूटेबल बनाना चाहिए - वेल जोड़कर। - बीटीएल विकल्प लिंक लाइन पर। तकनीकी तौर पर, आप - शेअर विकल्प छोड़ सकते हैं, लेकिन यह कोई नुकसान नहीं पहुंचाता है और भ्रम को कम करता है। यदि आप जीसीसी के साथ एक साझा ऑब्जेक्ट बनाना चाहते हैं, तो आपको केवल gcc - shared और, संभवतः, - bxpfull विकल्प या - Wl के साथ संदर्भित निर्यात फ़ाइल का उपयोग करने की आवश्यकता है। - बीई: ltexport filenamegt. exp यह इत्ना आसान है। संभावित मसले, जब एएक्स पर जीसीसीजी का इस्तेमाल किया जा रहा है, ये कुछ संभावित समस्याएं हैं जो आपको जीसीसी या जी पर एएक्स का इस्तेमाल करने में मिल सकती हैं। प्रत्येक के लिए, हमने पहले इस मुद्दे को वर्णित किया है, और फिर हम उस मुद्दे के समाधान को दिखाते हैं। आप एएक्स पर जीएनयू लिंकर का उपयोग नहीं कर सकते क्योंकि इससे ग़लत ढंग से जुड़े बायनेरिज़ का कारण होगा। डिफ़ॉल्ट रूप से, एएक्स लिंकर का उपयोग एसीसी पर जीसीसी पर किया जाता है। आपको केवल डिफ़ॉल्ट ऐक्स लिंकर का उपयोग करना चाहिए जब संकलन और - पीथ्रेड के साथ लिंक होता है, तो पथ की शुरुआत में लाइब्रेरी खोज पथ में शामिल होना चाहिए डंप-एचवी के आउटपुट की जांच करें, फ़ाइल स्ट्रिंग आयात करें, एंट्री 0 देखें, पथ क्या हैं I धागे उपनिर्देशिका हमेशा usrlib और lib से पहले आना चाहिए। जीसीसी-ओ फू चल रहा है - लैपथ - lmylib काम नहीं करता है यह लाइब्रेरी खोल सकता है क्योंकि यह libmylib. so के बजाय एक स्थैतिक पुस्तकालय libmylib. a के लिए लग रहा है। यदि एक्सटेंशन। में बदल जाता है। ए, यह ठीक काम करता है - यह संकलित और चलाता है एएक्स पर संग्रह पुस्तकालयों और साझा लाइब्रेरी दोनों में। ए एक्सटेंशन हो सकता है। यह आपको समझाएगा कि आप एक. so के साथ लिंक क्यों नहीं कर सकते और क्यों यह नाम बदलकर काम करता है। ए जब सी साझा लाइब्रेरी और अपवाद हैंडलिंग का उपयोग करते हुए 64-बिट C अनुप्रयोग चलाते हैं, अनुप्रयोग क्रैश होता है। जीसीसी 3.4.3 एक त्रुटि को हल करता है जिसने 64 बिट मोड में सही तरीके से काम करने से साझा लाइब्रेरी में सी अपवाद हैंडलिंग को रोका। ऑब्जेक्ट फ़ाइलों का संग्रह (सामान्य लाइब्रेरी, साझा लाइब्रेरी) के साथ किसी एप्लिकेशन को लिंक करना, अनसुलझे प्रतीकों के बारे में त्रुटि संदेश उत्पन्न करता है। यह तब हो सकता है जब एक पुस्तकालय में ऑब्जेक्ट फाइलें लाइब्रेरी के बाहर प्रतीकों के संदर्भ के साथ होती हैं जो कि प्रोग्रामर ने सोचा कि लिंकर को अनदेखा कर दिया जाएगा। जीसीसी सिस्टम लिंकर के चारों ओर एक आवरण प्रदान करता है जो सभी ऑब्जेक्ट फाइलों को स्कैन करता है और कंसल्टर्स और डिस्ट्रिक्टर्स के लिए गैर-साझा लाइब्रेरी करता है। लिंकर को पुस्तकालय में अनावश्यक ऑब्जेक्ट फाइलों को छोड़ने का एक अवसर होने से पहले ऐसा किया जाता है क्योंकि फ़ंक्शन या डेटा को केवल कन्स्ट्रक्टर या डिस्ट्रक्टर में संदर्भित किया जा सकता है। स्कैन को कन्स्ट्रक्टर और डिस्ट्रक्टर्स मिल सकते हैं जो कि एप्लिकेशन सामान्य रूप से संदर्भ नहीं देता है, लिंक को संतुष्ट करने के लिए अतिरिक्त प्रतीकों की परिभाषा की आवश्यकता होती है। वैकल्पिक रूप से आवेदन के लिए आवश्यक कंस्ट्रक्शंस और डिस्ट्रक्टर्स को याद किया जाएगा क्योंकि पुस्तकालय में कुछ ऑब्जेक्ट फाइलें अनावश्यक रूप से छीनती थीं और उन्हें छोड़ दिया गया था लेकिन वास्तव में आवश्यक कन्स्ट्रक्टरों और डिस्ट्रिक्टर्स की आपूर्ति की गई थी। यह चूक आवेदन को तोड़ने का कारण होगा। एसीसी पर जीसीसी को संकलित करने की कोशिश करते समय, कोडांतरक त्रुटि संदेश अंततः परिणामस्वरूप इसे ठीक करने के लिए, सुनिश्चित करें कि आप जीएनयू कोडल के पुराने संस्करण का उपयोग नहीं कर रहे हैं जो कि कुछ पावरपीसी मॉनेमिक्स को नहीं समझता है। यह ऐन कोडर का उपयोग करने के लिए बेहतर है जैसा कि जीएनयू जीसीसी वेबसाइट पर एईक्स स्थापना निर्देशों में चर्चा की गई है। लिंक करते समय कभी-कभी आपको यह त्रुटि संदेश प्राप्त हो सकता है: यह त्रुटि सबसे अधिक संभावना इंगित करती है कि डिस्क पूर्ण है या या ऐसा कि यूएलआईएमआईआरआईपी पर्यावरण चर फ़ाइल को जितना ज़्यादा ज़रूरी है उतनी जरूरत नहीं रख सकते। जी VisualAge (या एक्स्ट्रा लार्ज सी) के रूप में उसी तरह से नाम उलझाना नहीं करता है। इसका मतलब यह है कि एक संकलक के साथ संकलित ऑब्जेक्ट फ़ाइलों को दूसरे के साथ उपयोग नहीं किया जा सकता है। जीएनयू कोडल (जीएएस) पीआईसी का समर्थन नहीं करता है पीआईसी कोड उत्पन्न करने के लिए, आपको कुछ अन्य कोडर का उपयोग करना होगा, जैसे मूल एिक्स कोडर बिनस। एएक्स पर, फॉर्म का कोड संकलित करें: लिंकर को एक अनिर्धारित प्रतीक foo रिपोर्ट करने का कारण होगा। यद्यपि यह व्यवहार अधिकांश अन्य प्रणालियों से भिन्न है, यह कोई बग नहीं है क्योंकि एक्सटीअर वैरिएबल को रीसेट करने के लिए एएनएसआई सी में एएनएसआई सी में अपरिभाषित नहीं है। जीसीसी संस्करणों में जीसीसी 3.4 के पहले, मान से सभी संरचनाओं को पारित नहीं करता है। जीसीसी 3.4 में अब संरचना तर्क उत्तीर्ण करने के लिए बेहतर ABI समर्थन है। हालांकि यह परिवर्तन जीसीसी को ऐक्स ABI अनुपालन के करीब लाता है, ये परिवर्तन पहले रिलीज़ द्वारा संकलित कोड के साथ असंगतता पैदा कर सकते हैं। अधिक जानकारी के लिए, gcc. gnu. orggcc-3.4powerpc-abi. html देखें। जब जीसीसी को एएक्स के किसी विशेष संस्करण के लिए बनाया गया है, तो यह ओएस और उसके शीर्ष लेख फ़ाइलों के विशिष्ट संस्करणों को तैयार करता है। यह ओएस के नए संस्करण पर जीसीसी निर्माण का उपयोग करते समय समस्या पैदा कर सकता है, यहां तक कि नए ओएस पर कंपाइलर को बूटस्ट्रैप करने के लिए भी। इस समस्या का एक उदाहरण तब होता है जब AIX 5.1 (या पहले) के लिए संकलित जीसीसी के साथ AIX 5.2 पर जीसीसी का निर्माण करते हैं। एएक्स 5.2 ने एटोल () फ़ंक्शन के लिए समर्थन जोड़ा है, लेकिन ऐक्स 5.1 के लिए जीसीसी बनाया गया है जिसमें स्टड लिब एच की कैश की गई प्रति है जिसमें उस फ़ंक्शन के लिए प्रोटोटाइप शामिल नहीं है। एक अनप्रोपाटिड फंक्शन का रिटर्न वैल्यू लंबे समय के बजाय int के लिए डिफ़ॉल्ट होता है, जिसके कारण जीसीसी गलत तरीके से कुछ स्ट्रिंग्स कनवर्ट करता है। AIX 5.2 पर जीसीसी बूटस्ट्रैप करने के लिए, जीसीसी कैश में निर्धारित stdlib. h हेडर फाइल को निकालने की जरूरत है ताकि एएक्स 5.2 शीर्षलेख फ़ाइल का उपयोग किया जा सके। सिस्टम शीर्षलेख फ़ाइल को जीसीसी के पुराने निर्माण द्वारा संकलक को बूटस्ट्रैप के लिए इस्तेमाल किया जा सकता है उदाहरण के लिए, थ्रेड के लिए एक महान पर्याप्त ढेर आकार और pthreads का उपयोग कर एक कार्यक्रम को संकलित करने के लिए जीसीसी का उपयोग करने के लिए संबंधित makefile का उदाहरण है। सरणी को स्टैक पर आवंटित किया जाता है, डेटा अनुभाग में नहीं। समस्या प्रति धागा ढेर आकार है। डिफ़ॉल्ट थ्रेड स्टैक आकार को बढ़ाने के लिए आपको उपयुक्त पथ्रेड फ़ंक्शन का उपयोग करने की आवश्यकता है। नीचे ifdef AIX कोड के बिना, यह कोड coredump होगा। डाउनलोड करने योग्य संसाधन संबंधित विषय एएक्स जीसीसी ग्नू होम पेज के लिए एक्सएल सीसी का मूल्यांकन करें। अधिक जानकारी के लिए जीसीसी साइट पर जाएं बुल ऐक्स फ्रीवेयर अपने ऐक्स के लिए ओपन सोर्स सॉफ़्टवेयर का विस्तृत चयन प्राप्त करें बुल एआईसीस फ्रीवेयर साइट, ऐक्स 5 एल और 6 ओपन सोर्स पैकेज साइट, या लिनक्स एप्लीकेशन साइट्स के लिए आईबीएम एआईआईएस टूलबॉक्स से आपके एएक्स सिस्टम में बायनेरिटी एफ़टीपी। प्लेटफ़ॉर्म-विशिष्ट निर्देशों के लिए जीसीसी स्थापना निर्देशों का पूरा सेट और gcc. gnu. orginstallspecific. html-ibm-aix को देखें। आप जीसीसी बिल्ड रिपोर्ट्स को सफलतापूर्वक स्थापित करने के लिए मिल सकते हैं ताकि आप सफलतापूर्वक जीसीसी स्थापित कर सकें। जीएनयू प्रोजेक्ट और जीसीसी कंपाइलर के बारे में अधिक जानकारी के लिए, gcc. gnu. org पर आधिकारिक वेबसाइट देखें। जीसीसी संस्करण 4.2 में नई सुविधाओं की एक सूची gcc. gnu. orggcc-4.2changes. html पर है। इसी तरह, जीसीसी संस्करण 4.3 में नई सुविधाओं की सूची gcc. gnu. orggcc-4.3changes. html पर है। टिप्पणियों को जोड़ने और सदस्यता लेने के लिए साइन इन करें या पंजीकरण करें। जीसीसी, जीएनयू कंपाइलर कलेक्शन जीएनयू कंपाइलर कलेक्शन सी। सी। उद्देश्य-सी, फोरट्रान के लिए सामने की समाप्ति भी शामिल है। एडा, और गो, साथ ही इन भाषाओं के लिए लाइब्रेरी (लिबस्टडीसी।) जीसीसी मूलतः जीएनयू ऑपरेटिंग सिस्टम के लिए कंपाइलर के रूप में लिखी गई थी जीएनयू प्रणाली को 100 मुक्त सॉफ्टवेयर के रूप में विकसित किया गया था, अर्थात् यह उपयोगकर्ताओं की आजादी का सम्मान करता है। हम नियमित, उच्च गुणवत्ता वाले रिलीज प्रदान करने का प्रयास करते हैं जो हम विभिन्न देशी और पार लक्ष्य (जीएन्यूलिनक्स समेत) पर अच्छी तरह से काम करना चाहते हैं, और सभी को परिवर्तन में योगदान देने या जीसीसी के परीक्षण के लिए प्रोत्साहित करना चाहते हैं। हमारे स्रोत एसवीएन और साप्ताहिक स्नैपशॉट्स के माध्यम से आसानी से उपलब्ध हैं जीसीसी के बारे में प्रमुख निर्णय स्टीयरिंग कमेटी द्वारा किए गए हैं मिशन वक्तव्य द्वारा निर्देशित आरआईएससी-वी समर्थन 2017-02-02 आरआईएससी-वी आईएसए के लिए समर्थन जोड़ा गया, पामर डब्बल्ट और एंड्रयू वॉटरमैन ने योगदान दिया। ब्रिजेल (हिटरोजेनीस सिस्टम्स आर्किटेक्चर इंटरमीडिएट लैंग्वेज) फ्रंटएंड 2017-02-01 में जोड़ा गया है। विषुव सिस्टम्स आर्किटेक्चर 1.0 ब्रिज (एचएसईएल) फ्रंटएंड जीसीसी में जोड़ा गया था। जीसीसी समर्थित लक्ष्यों के लिए एचएसईएल अंतिम रूप देना यह कोड सामान्य प्रोसेसर टेक्नोलॉजीज से प्रायोजन के साथ पर्मेंस द्वारा विकसित किया गया था। Fuchsia ओएस समर्थन 2017-01-10 Fuchsia ओएस समर्थन जीसीसी में जोड़ा गया था, गूगल द्वारा योगदान दिया। जीसीसी 6.3 जारी 2018-12-21 जीसीसी 6.2 जारी 2018-08-22 जीसीसी 4.9.4 जारी 2018-08-03 जीसीसी 5.4 जारी 2018-06-03 2018 एसीएम सॉफ्टवेयर सिस्टम पुरस्कार 2018-04-29 जीसीसी 6.1 2018-04 जारी -27 विषम प्रणालियों आर्किटेक्चर समर्थन 2018-01-27 जीटीसी में विषम प्रणालियों वास्तुकला 1.0 समर्थन जोड़ा गया था। मार्टिन जाम्बोर, मार्टिन लिका और एसयूएसई से माइकल मात्ज़ द्वारा योगदान। जीसीसी 5.3 जारी 2018-12-04 समर्थित रिलीज़
No comments:
Post a Comment