लिनक्स / यूनिक्स कमांड: आईडी

नाम

एलडी - एलडी , जीएनयू लिंकर का उपयोग करना

SYNOPSIS

एलडी [ विकल्प ] objfile ...

विवरण

एलडी कई ऑब्जेक्ट्स और आर्काइव फाइलों को जोड़ती है, उनके डेटा को स्थानांतरित करती है और प्रतीक संदर्भों को जोड़ती है। आमतौर पर एक प्रोग्राम संकलन में अंतिम चरण एलडी चलाने के लिए है।

एलडी लिंकिंग प्रक्रिया पर स्पष्ट और कुल नियंत्रण प्रदान करने के लिए एटी एंड टी के लिंक संपादक कमांड भाषा सिंटैक्स के एक सुपरसेट में लिखी गई लिंकर कमांड भाषा फ़ाइलों को स्वीकार करता है।

यह मैन पेज कमांड भाषा का वर्णन नहीं करता है; कमांड भाषा और जीएनयू लिंकर के अन्य पहलुओं पर पूर्ण जानकारी के लिए, "जानकारी" में एलडी प्रविष्टि, या मैनुअल एलडी: जीएनयू लिंकर देखें।

एलडी का यह संस्करण ऑब्जेक्ट फाइलों पर काम करने के लिए सामान्य उद्देश्य बीएफडी पुस्तकालयों का उपयोग करता है। यह एलडी को कई अलग-अलग प्रारूपों में ऑब्जेक्ट फ़ाइलों को पढ़ने, गठबंधन करने और लिखने की अनुमति देता है --- उदाहरण के लिए, सीओएफएफ या "ए.ओउट"। किसी भी उपलब्ध प्रकार की ऑब्जेक्ट फ़ाइल बनाने के लिए विभिन्न प्रारूपों को एक साथ जोड़ा जा सकता है।

इसकी लचीलापन के अलावा, जीएनयू लिंकर नैदानिक ​​जानकारी प्रदान करने में अन्य लिंकर्स की तुलना में अधिक सहायक है। कई लिंकर्स एक त्रुटि का सामना करने पर तत्काल निष्पादन छोड़ देते हैं; जब भी संभव हो, एलडी निष्पादन जारी रखता है, जिससे आप अन्य त्रुटियों की पहचान कर सकते हैं (या, कुछ मामलों में, त्रुटि के बावजूद आउटपुट फ़ाइल प्राप्त करने के लिए)।

जीएनयू लिंकर एलडी परिस्थितियों की एक विस्तृत श्रृंखला को कवर करने के लिए है, और अन्य लिंकर्स के साथ जितना संभव हो उतना संगत होना है। नतीजतन, आपके व्यवहार को नियंत्रित करने के लिए आपके पास कई विकल्प हैं।

विकल्प

लिंकर कमांड लाइन विकल्पों का एक बड़ा समर्थन करता है, लेकिन वास्तविक अभ्यास में उनमें से कुछ किसी विशेष संदर्भ में उपयोग किए जाते हैं। उदाहरण के लिए, एलडी का लगातार उपयोग मानक यूनिक्स ऑब्जेक्ट फ़ाइलों को मानक, समर्थित यूनिक्स सिस्टम पर लिंक करना है । ऐसी प्रणाली पर, "hello.o" फ़ाइल को लिंक करने के लिए:

ld -o /lib/crt0.o hello.o -lc

यह एलडी को फाइल "/lib/crt0.o" को "hello.o" और लाइब्रेरी "libc.a" से जोड़ने के परिणामस्वरूप आउटपुट नामक फ़ाइल बनाने के लिए कहता है, जो मानक खोज निर्देशिकाओं से आएगा। (नीचे -l विकल्प की चर्चा देखें।)

Ld को कमांड लाइन विकल्पों में से कुछ को कमांड लाइन में किसी भी बिंदु पर निर्दिष्ट किया जा सकता है। हालांकि, विकल्प जो कि -l या -T जैसी फ़ाइलों को संदर्भित करते हैं, उस बिंदु पर फ़ाइल को उस बिंदु पर पढ़ा जा सकता है जिस पर ऑब्जेक्ट फ़ाइलों और अन्य फ़ाइल विकल्पों के सापेक्ष कमांड लाइन में विकल्प दिखाई देता है। किसी भिन्न तर्क के साथ गैर-फ़ाइल विकल्पों को दोहराए जाने पर या तो कोई प्रभाव नहीं होगा, या उस विकल्प के पूर्व घटनाओं (जो कमांड लाइन पर बाईं ओर हैं) को ओवरराइड करेंगे। विकल्प जिन्हें एक से अधिक बार अर्थपूर्ण रूप से निर्दिष्ट किया जा सकता है, नीचे दिए गए विवरणों में नोट किया गया है।

गैर-विकल्प तर्क ऑब्जेक्ट फ़ाइलें या अभिलेखागार हैं जिन्हें एक साथ जोड़ा जाना है। वे आदेश-पंक्ति विकल्पों के साथ अनुसरण, पहले, या मिश्रित हो सकते हैं, सिवाय इसके कि ऑब्जेक्ट फ़ाइल तर्क किसी विकल्प और उसके तर्क के बीच नहीं रखा जा सकता है।

आम तौर पर लिंकर को कम से कम एक ऑब्जेक्ट फ़ाइल के साथ बुलाया जाता है, लेकिन आप -l , -R , और स्क्रिप्ट कमांड भाषा का उपयोग करके बाइनरी इनपुट फ़ाइलों के अन्य रूप निर्दिष्ट कर सकते हैं। यदि कोई बाइनरी इनपुट फाइल बिल्कुल निर्दिष्ट नहीं है, तो लिंकर कोई आउटपुट नहीं बनाता है , और संदेश को कोई इनपुट फाइल नहीं देता है

यदि लिंकर किसी ऑब्जेक्ट फ़ाइल के प्रारूप को पहचान नहीं सकता है, तो यह मान लेगा कि यह एक लिंकर स्क्रिप्ट है। इस तरह से निर्दिष्ट एक स्क्रिप्ट लिंक के लिए उपयोग की जाने वाली मुख्य लिंकर स्क्रिप्ट को बढ़ाती है (या तो डिफ़ॉल्ट लिंकर स्क्रिप्ट या -T का उपयोग करके निर्दिष्ट)। यह सुविधा लिंकर को किसी फ़ाइल या किसी संग्रह के रूप में दिखाई देने वाली फ़ाइल के विरुद्ध लिंक करने की अनुमति देती है, लेकिन वास्तव में केवल कुछ प्रतीक मानों को परिभाषित करती है, या अन्य वस्तुओं को लोड करने के लिए "INPUT" या "GROUP" का उपयोग करती है। ध्यान दें कि इस तरह से एक स्क्रिप्ट निर्दिष्ट करना केवल मुख्य लिंकर स्क्रिप्ट को बढ़ाता है; डिफ़ॉल्ट लिंकर स्क्रिप्ट को पूरी तरह से बदलने के लिए -T विकल्प का उपयोग करें।

उन विकल्पों के लिए जिनके नाम एक ही अक्षर हैं, विकल्प तर्कों को या तो व्हाइटस्पेस में हस्तक्षेप किए बिना विकल्प पत्र का पालन करना होगा, या उन्हें आवश्यक विकल्प के तुरंत बाद अलग तर्क के रूप में दिया जाना चाहिए।

उन विकल्पों के लिए जिनके नाम एकाधिक अक्षर हैं, या तो एक डैश या दो विकल्प नाम से पहले हो सकते हैं; उदाहरण के लिए, -ट्र्रेस-प्रतीक और --trace-symbol बराबर हैं। नोट - इस नियम के लिए एक अपवाद है। कम अक्षर 'ओ' से शुरू होने वाले एकाधिक अक्षर विकल्प केवल दो डैश से पहले किए जा सकते हैं। यह विकल्प के साथ भ्रम को कम करने के लिए है। तो उदाहरण के लिए -ऑमैजिक आउटपुट फ़ाइल नाम को जादू में सेट करता है जबकि - ओमैजिक आउटपुट पर NMAGIC ध्वज सेट करता है।

एकाधिक-अक्षर विकल्पों के लिए तर्कों को या तो समान नाम से विकल्प नाम से अलग किया जाना चाहिए, या उन्हें आवश्यक विकल्प के तुरंत बाद अलग तर्क के रूप में दिया जाना चाहिए। उदाहरण के लिए, --trace-symbol foo और --trace-symbol = foo समकक्ष हैं। एकाधिक-अक्षर विकल्पों के नामों के अद्वितीय संक्षेप स्वीकार किए जाते हैं।

नोट - यदि लिंकर अप्रत्यक्ष रूप से एक कंपाइलर ड्राइवर (जैसे जीसीसी ) के माध्यम से आक्रमण किया जा रहा है, तो सभी लिंकर कमांड लाइन विकल्पों को -ब्लूएल द्वारा पूर्ववर्ती किया जाना चाहिए , (या जो भी विशेष कंपाइलर ड्राइवर के लिए उपयुक्त है) इस तरह:

जीसीसी -ब्लूएल, - startgroup foo.o bar.o -Wl, - endgroup

यह महत्वपूर्ण है, क्योंकि अन्यथा संकलक ड्राइवर प्रोग्राम चुपचाप लिंकर विकल्पों को छोड़ सकता है, जिसके परिणामस्वरूप एक खराब लिंक होता है।

जीएनयू लिंकर द्वारा स्वीकार किए गए सामान्य कमांड लाइन स्विच की एक तालिका यहां दी गई है:

एक कीवर्ड

यह विकल्प एचपी / यूएक्स संगतता के लिए समर्थित है। कीवर्ड तर्क स्ट्रिंग संग्रह , साझा , या डिफ़ॉल्ट में से एक होना चाहिए। -आर्ककीय कार्यशील रूप से समतुल्य है- और अन्य दो कीवर्ड कार्यात्मक रूप से समकक्ष- समेकित हैं । इस विकल्प का इस्तेमाल कई बार किया जा सकता है।

- एक वास्तुकला

--architecture = वास्तुकला

एलडी की वर्तमान रिलीज में, यह विकल्प केवल इंटेल 960 परिवार आर्किटेक्चर के लिए उपयोगी है। उस एलडी कॉन्फ़िगरेशन में, आर्किटेक्चर तर्क 960 परिवार में विशेष आर्किटेक्चर की पहचान करता है, कुछ सुरक्षा उपायों को सक्षम करता है और संग्रह-पुस्तकालय खोज पथ को संशोधित करता है।

एलडी की भविष्य की रिलीज अन्य वास्तुकला परिवारों के लिए समान कार्यक्षमता का समर्थन कर सकती है।

-बी इनपुट प्रारूप

--format = इनपुट प्रारूप

ld को एक से अधिक प्रकार की ऑब्जेक्ट फ़ाइल का समर्थन करने के लिए कॉन्फ़िगर किया जा सकता है। यदि आपका एलडी इस तरह से कॉन्फ़िगर किया गया है, तो आप कमांड लाइन पर इस विकल्प का पालन करने वाले इनपुट ऑब्जेक्ट फ़ाइलों के लिए बाइनरी प्रारूप निर्दिष्ट करने के लिए -b विकल्प का उपयोग कर सकते हैं। यहां तक ​​कि जब वैकल्पिक ऑब्जेक्ट स्वरूपों का समर्थन करने के लिए ld को कॉन्फ़िगर किया गया है, तो आपको आमतौर पर इसे निर्दिष्ट करने की आवश्यकता नहीं होती है, क्योंकि प्रत्येक मशीन पर डिफ़ॉल्ट इनपुट स्वरूप के रूप में डिफ़ॉल्ट इनपुट प्रारूप के रूप में अपेक्षा करने के लिए ld को कॉन्फ़िगर किया जाना चाहिए। इनपुट-प्रारूप एक टेक्स्ट स्ट्रिंग है, जो बीएफडी पुस्तकालयों द्वारा समर्थित किसी विशेष प्रारूप का नाम है। (आप objdump -i के साथ उपलब्ध बाइनरी प्रारूपों को सूचीबद्ध कर सकते हैं।)

यदि आप किसी असामान्य बाइनरी प्रारूप वाली फ़ाइलों को लिंक कर रहे हैं तो आप इस विकल्प का उपयोग करना चाह सकते हैं। आप किसी विशेष प्रारूप में ऑब्जेक्ट फ़ाइलों के प्रत्येक समूह से पहले -b इनपुट-प्रारूप सहित स्पष्ट रूप से प्रारूपों को स्विच करने के लिए -b को विभिन्न प्रारूपों की ऑब्जेक्ट फ़ाइलों को लिंक करने के लिए भी उपयोग कर सकते हैं।

डिफ़ॉल्ट प्रारूप पर्यावरण चर "GNUTARGET" से लिया जाता है।

आप "TARGET" कमांड का उपयोग करके, स्क्रिप्ट से इनपुट प्रारूप को भी परिभाषित कर सकते हैं;

-सी एमआरआई-कमांडफाइल

--mri-script = एमआरआई-कमांडफाइल

एमआरआई द्वारा उत्पादित लिंकर्स के साथ संगतता के लिए, एलडी जीएनयू एलडी दस्तावेज के एमआरआई संगत स्क्रिप्ट फाइल अनुभाग में वर्णित वैकल्पिक, प्रतिबंधित कमांड भाषा में लिखी गई स्क्रिप्ट फ़ाइलों को स्वीकार करता है। विकल्प -सी के साथ एमआरआई स्क्रिप्ट फाइलों का परिचय दें; सामान्य उद्देश्य एलडी स्क्रिप्टिंग भाषा में लिखे गए लिंकर स्क्रिप्ट को चलाने के लिए -T विकल्प का उपयोग करें। यदि एमआरआई-सीएमडीफ़ाइल मौजूद नहीं है, तो एलडी किसी भी विकल्प द्वारा निर्दिष्ट निर्देशिकाओं में इसकी तलाश करता है।

-d

-DC

-dp

ये तीन विकल्प बराबर हैं; कई लिंक अन्य लिंकर्स के साथ संगतता के लिए समर्थित हैं। वे एक सामान्य स्थान पर स्थान निर्दिष्ट करते हैं भले ही एक स्थानापन्न आउटपुट फ़ाइल निर्दिष्ट है (के साथ)। स्क्रिप्ट कमांड "FORCE_COMMON_ALLOCATION" का एक ही प्रभाव है।

-ई प्रवेश

--entry = प्रविष्टि

डिफ़ॉल्ट प्रविष्टि बिंदु की बजाय, अपने प्रोग्राम के निष्पादन की शुरुआत के लिए स्पष्ट प्रतीक के रूप में प्रविष्टि का उपयोग करें। यदि प्रविष्टि नाम का कोई प्रतीक नहीं है, तो लिंकर एक संख्या के रूप में प्रविष्टि को पार्स करने का प्रयास करेगा, और उस प्रविष्टि पते के रूप में उपयोग करेगा (संख्या 10 में व्याख्या की जाएगी; आप आधार 16 के लिए अग्रणी 0x का उपयोग कर सकते हैं, या एक अग्रणी 0 आधार 8 के लिए)।

-E

--export-गतिशील

एक गतिशील रूप से जुड़े निष्पादन योग्य बनाते समय, गतिशील प्रतीक तालिका में सभी प्रतीकों को जोड़ें। गतिशील प्रतीक तालिका प्रतीकों का सेट है जो गतिशील वस्तुओं से रन टाइम पर दिखाई दे रही हैं।

यदि आप इस विकल्प का उपयोग नहीं करते हैं, तो गतिशील प्रतीक तालिका में आमतौर पर केवल उन प्रतीकों को शामिल किया जाएगा जिन्हें लिंक में उल्लिखित कुछ गतिशील वस्तु द्वारा संदर्भित किया जाता है।

यदि आप किसी गतिशील ऑब्जेक्ट को लोड करने के लिए "dlopen" का उपयोग करते हैं, जिसे किसी अन्य गतिशील ऑब्जेक्ट की बजाय प्रोग्राम द्वारा परिभाषित प्रतीकों पर वापस संदर्भित करने की आवश्यकता होती है, तो प्रोग्राम को लिंक करते समय आपको शायद इस विकल्प का उपयोग करने की आवश्यकता होगी।

यदि आप आउटपुट प्रारूप का समर्थन करते हैं तो गतिशील प्रतीक तालिका में कौन से प्रतीकों को जोड़ा जाना चाहिए, यह नियंत्रित करने के लिए आप संस्करण स्क्रिप्ट का भी उपयोग कर सकते हैं। @ Ref {VERSION} में --version-script का विवरण देखें।

-EB

बड़े एंडियन वस्तुओं को लिंक करें। यह डिफ़ॉल्ट आउटपुट प्रारूप को प्रभावित करता है।

हैं El

छोटी-छोटी वस्तुएं लिंक करें। यह डिफ़ॉल्ट आउटपुट प्रारूप को प्रभावित करता है।

-f

- सहायक नाम

ईएलएफ साझा ऑब्जेक्ट बनाते समय, आंतरिक DT_AUXILIARY फ़ील्ड निर्दिष्ट नाम पर सेट करें। यह गतिशील लिंकर को बताता है कि साझा ऑब्जेक्ट की प्रतीक तालिका को साझा ऑब्जेक्ट नाम की प्रतीक तालिका पर एक सहायक फ़िल्टर के रूप में उपयोग किया जाना चाहिए।

यदि आप बाद में इस फ़िल्टर ऑब्जेक्ट के विरुद्ध किसी प्रोग्राम को लिंक करते हैं, तो, जब आप प्रोग्राम चलाते हैं, तो गतिशील लिंकर DT_AUXILIARY फ़ील्ड देखेगा। यदि गतिशील लिंकर फ़िल्टर ऑब्जेक्ट से किसी भी प्रतीक को हल करता है, तो यह पहले जांच करेगा कि साझा ऑब्जेक्ट नाम में कोई परिभाषा है या नहीं। यदि कोई है, तो इसका उपयोग फ़िल्टर ऑब्जेक्ट में परिभाषा के बजाय किया जाएगा। साझा ऑब्जेक्ट नाम मौजूद नहीं है। इस प्रकार साझा ऑब्जेक्ट नाम का उपयोग कुछ कार्यों के वैकल्पिक कार्यान्वयन के लिए किया जा सकता है, शायद डिबगिंग के लिए या मशीन विशिष्ट प्रदर्शन के लिए।

यह विकल्प एक से अधिक बार निर्दिष्ट किया जा सकता है। DT_AUXILIARY प्रविष्टियां उस क्रम में बनाई जाएंगी जिसमें वे कमांड लाइन पर दिखाई देते हैं।

-एफ नाम

- फ़िल्टर नाम

ईएलएफ साझा ऑब्जेक्ट बनाते समय, आंतरिक DT_FILTER फ़ील्ड को निर्दिष्ट नाम पर सेट करें। यह गतिशील लिंकर को बताता है कि साझा ऑब्जेक्ट की प्रतीक तालिका जिसे साझा किया जा रहा है उसे साझा ऑब्जेक्ट नाम की प्रतीक तालिका पर फ़िल्टर के रूप में उपयोग किया जाना चाहिए।

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

कुछ पुराने लिंकर्स ने इनपुट और आउटपुट ऑब्जेक्ट फ़ाइलों दोनों के लिए ऑब्जेक्ट-फ़ाइल प्रारूप निर्दिष्ट करने के लिए एक संकलन टूलचेन में -F विकल्प का उपयोग किया। जीएनयू लिंकर इस उद्देश्य के लिए अन्य तंत्र का उपयोग करता है: -b , --format , --oformat विकल्प, लिंकर स्क्रिप्ट में "TARGET" कमांड, और "GNUTARGET" पर्यावरण चर। ईएलएफ साझा ऑब्जेक्ट नहीं बनाते समय जीएनयू लिंकर -एफ विकल्प को अनदेखा कर देगा।

-फिन नाम

ईएलएफ निष्पादन योग्य या साझा ऑब्जेक्ट बनाते समय, निष्पादन योग्य या साझा ऑब्जेक्ट को अनलोड किए जाने पर NAME को कॉल करें, DT_FINI को फ़ंक्शन के पते पर सेट करके। डिफ़ॉल्ट रूप से, लिंकर कॉल करने के लिए फ़ंक्शन के रूप में "_fini" का उपयोग करता है।

जी

अवहेलना करना। अन्य उपकरणों के साथ संगतता के लिए प्रदान की गई।

-जी मूल्य

--gpsize = मूल्य

आकार के जीपी रजिस्टर का उपयोग कर अनुकूलित करने के लिए ऑब्जेक्ट्स का अधिकतम आकार सेट करें। यह ऑब्जेक्ट फ़ाइल स्वरूपों के लिए केवल सार्थक है जैसे कि एमआईपीएस ईसीओएफएफ जो विभिन्न वर्गों में बड़ी और छोटी वस्तुओं को रखने का समर्थन करता है। इसे अन्य ऑब्जेक्ट फ़ाइल स्वरूपों के लिए अनदेखा किया जाता है।

-हह नाम

-soname = नाम

ईएलएफ साझा ऑब्जेक्ट बनाते समय, आंतरिक DT_SONAME फ़ील्ड को निर्दिष्ट नाम पर सेट करें। जब एक निष्पादन योग्य किसी साझा ऑब्जेक्ट से जुड़ा होता है जिसमें DT_SONAME फ़ील्ड होता है, तो जब निष्पादन योग्य चलाया जाता है तो गतिशील लिंकर लिंकर को दिए गए फ़ाइल नाम का उपयोग करने के बजाय DT_SONAME फ़ील्ड द्वारा निर्दिष्ट साझा ऑब्जेक्ट को लोड करने का प्रयास करेगा।

-मैं

एक वृद्धिशील लिंक करें (विकल्प -आर के समान)।

नाम का नाम

ईएलएफ निष्पादन योग्य या साझा ऑब्जेक्ट बनाते समय, कार्य के पते पर DT_INIT सेट करके निष्पादन योग्य या साझा ऑब्जेक्ट लोड होने पर NAME को कॉल करें। डिफ़ॉल्ट रूप से, लिंकर कॉल करने के लिए फ़ंक्शन के रूप में "_init" का उपयोग करता है।

-एल संग्रह

--library = संग्रह

लिंक करने के लिए फ़ाइलों की सूची में संग्रह फ़ाइल संग्रह जोड़ें। इस विकल्प का इस्तेमाल कई बार किया जा सकता है। एलडी निर्दिष्ट प्रत्येक संग्रह के लिए "libarchive.a" की घटनाओं के लिए अपनी पथ सूची खोजेगा।

साझा पुस्तकालयों का समर्थन करने वाले सिस्टम पर, ld ".a" के अलावा एक्सटेंशन वाले पुस्तकालयों की खोज भी कर सकता है। विशेष रूप से, ईएलएफ और सनोस सिस्टम पर, एलडी "। ए" के विस्तार के साथ ".so" के विस्तार से पहले लाइब्रेरी के लिए एक निर्देशिका खोजेगा। सम्मेलन से, एक ".so" एक्सटेंशन साझा लाइब्रेरी इंगित करता है।

लिंकर केवल एक बार एक संग्रह को खोजेगा, उस स्थान पर जहां यह कमांड लाइन पर निर्दिष्ट है। यदि संग्रह किसी ऐसे ऑब्जेक्ट को परिभाषित करता है जो कमांड लाइन पर संग्रह से पहले दिखाई देने वाली किसी ऑब्जेक्ट में अपरिभाषित था, तो लिंकर में संग्रह से उचित फ़ाइल (ओं) शामिल होगी। हालांकि, कमांड लाइन पर बाद में दिखाई देने वाली ऑब्जेक्ट में एक अनिर्धारित प्रतीक लिंकर को संग्रह को फिर से खोजने का कारण नहीं बनता है।

देखें - ( लिंकर को कई बार अभिलेखागार खोजने के लिए मजबूर करने के लिए विकल्प।

आप कमांड लाइन पर एक ही संग्रह को कई बार सूचीबद्ध कर सकते हैं।

इस प्रकार की संग्रह खोज यूनिक्स लिंकर्स के लिए मानक है। हालांकि, अगर आप एलडी ऑनएक्स का उपयोग कर रहे हैं, तो ध्यान दें कि यह AIX लिंकर के व्यवहार से अलग है।

-एल खोजकर्ता

- पुस्तकालय-पथ = searchdir

पथ खोज सूची को पथ की सूची में जोड़ें जो ld संग्रह पुस्तकालयों और ld नियंत्रण स्क्रिप्ट के लिए खोज करेगा। आप इस विकल्प का कई बार उपयोग कर सकते हैं। निर्देशिकाओं को क्रम में खोजा जाता है जिसमें वे कमांड लाइन पर निर्दिष्ट होते हैं। कमांड लाइन पर निर्दिष्ट निर्देशिकाओं को डिफ़ॉल्ट निर्देशिका से पहले खोजा जाता है। ऑल- एल विकल्प ऑल- एल विकल्पों पर लागू होते हैं, भले ही विकल्प किस क्रम में दिखाई देते हैं।

यदि खोजकर्ता "=" से शुरू होता है, तो "=" को sysroot उपसर्ग द्वारा प्रतिस्थापित किया जाएगा, लिंकर कॉन्फ़िगर किए जाने पर निर्दिष्ट पथ।

खोजे गए पथों का डिफ़ॉल्ट सेट ( -एल के साथ निर्दिष्ट किए बिना) इस पर निर्भर करता है कि कौन सा इम्यूलेशन मोड एलडी उपयोग कर रहा है, और कुछ मामलों में यह भी कॉन्फ़िगर किया गया था।

पथ को "SEARCH_DIR" कमांड के साथ एक लिंक स्क्रिप्ट में भी निर्दिष्ट किया जा सकता है। इस तरह निर्दिष्ट निर्देशिकाओं को उस बिंदु पर खोजा जाता है जिसमें लिंकर स्क्रिप्ट कमांड लाइन में दिखाई देती है।

-एम अनुकरण

इम्यूलेशन लिंकर अनुकरण करें। आप उपलब्ध इम्यूलेशन को --verbose या -V विकल्पों के साथ सूचीबद्ध कर सकते हैं।

यदि -एम विकल्प का उपयोग नहीं किया जाता है, तो अनुकरण को "LDEMULATION" पर्यावरण चर से लिया जाता है, यदि यह परिभाषित किया गया है।

अन्यथा, डिफ़ॉल्ट अनुकरण इस बात पर निर्भर करता है कि लिंकर को कैसे कॉन्फ़िगर किया गया था।

-M

--print-नक्शा

मानक आउटपुट में एक लिंक मैप प्रिंट करें। एक लिंक नक्शा निम्नलिखित के साथ लिंक के बारे में जानकारी प्रदान करता है:

*

जहां वस्तु फ़ाइलों और प्रतीकों को स्मृति में मैप किया जाता है।

*

कितने आम प्रतीक आवंटित किए जाते हैं।

*

सभी संग्रह सदस्यों को लिंक में शामिल किया गया था, जिसमें प्रतीक का उल्लेख किया गया था जिससे संग्रह सदस्य को लाया जा सकता था।

-n

--nmagic

खंडों के पेज संरेखण को बंद करें, और यदि संभव हो तो आउटपुट को "NMAGIC" के रूप में चिह्नित करें।

एन

--omagic

पाठ और डेटा खंडों को पठनीय और लिखने योग्य सेट करें। साथ ही, डेटा सेगमेंट को पेज-संरेखित न करें, और साझा लाइब्रेरीज़ के विरुद्ध लिंकिंग अक्षम करें। यदि आउटपुट प्रारूप यूनिक्स स्टाइल जादू संख्या का समर्थन करता है, तो आउटपुट को "ओमैजिक" के रूप में चिह्नित करें।

--no-omagic

यह विकल्प -एन विकल्प के अधिकांश प्रभावों को अस्वीकार करता है। यह टेक्स्ट सेक्शन को केवल पढ़ने के लिए सेट करता है, और डेटा सेगमेंट को पृष्ठ-संरेखित करने के लिए मजबूर करता है। नोट - यह विकल्प साझा पुस्तकालयों के खिलाफ लिंकिंग को सक्षम नहीं करता है। इसका उपयोग करें- इसके लिए गतिशील

आउटपुट

आउटपुट = आउटपुट

एलडी द्वारा उत्पादित कार्यक्रम के नाम के रूप में उत्पादन का उपयोग करें; यदि यह विकल्प निर्दिष्ट नहीं है, तो डिफ़ॉल्ट रूप से नाम a.out का उपयोग किया जाता है। स्क्रिप्ट कमांड "OUTPUT" आउटपुट फ़ाइल नाम भी निर्दिष्ट कर सकता है।

-ओ स्तर

यदि स्तर शून्य एलडी से अधिक संख्यात्मक मान है तो आउटपुट को अनुकूलित करता है। इसमें काफी समय लग सकता है और इसलिए शायद अंतिम बाइनरी के लिए ही सक्षम होना चाहिए।

-q

--emit-relocs

पूरी तरह से जुड़े exececutables में स्थानांतरण अनुभाग और सामग्री छोड़ दें। निष्पादन योग्यता के सही संशोधन करने के लिए पोस्ट लिंक विश्लेषण और अनुकूलन उपकरण को इस जानकारी की आवश्यकता हो सकती है। इसके परिणामस्वरूप बड़े निष्पादन योग्य होते हैं।

यह विकल्प वर्तमान में केवल ईएलएफ प्लेटफॉर्म पर समर्थित है।

-r

--relocateable

स्थानांतरित आउटपुट उत्पन्न करें --- यानी, आउटपुट फ़ाइल जेनरेट करें जो बदले में एलडी में इनपुट के रूप में काम कर सकती है। इसे अक्सर आंशिक लिंकिंग कहा जाता है। एक दुष्प्रभाव के रूप में, मानक यूनिक्स जादू संख्याओं का समर्थन करने वाले वातावरण में, यह विकल्प आउटपुट फ़ाइल के जादू संख्या को "ओमैजिक" में भी सेट करता है। यदि यह विकल्प निर्दिष्ट नहीं है, तो एक पूर्ण फ़ाइल बनाई जाती है। सी ++ प्रोग्राम को लिंक करते समय, यह विकल्प कन्स्ट्रक्टर के संदर्भों को हल नहीं करेगा ; ऐसा करने के लिए, उपयोग करें- यूआर

जब इनपुट फ़ाइल में आउटपुट फ़ाइल के समान प्रारूप नहीं होता है, तो आंशिक लिंकिंग केवल तभी समर्थित होती है जब उस इनपुट फ़ाइल में कोई स्थानान्तरण न हो। विभिन्न आउटपुट प्रारूपों में और प्रतिबंध हो सकते हैं; उदाहरण के लिए कुछ "a.out"-आधारित प्रारूप अन्य प्रारूपों में इनपुट फ़ाइलों के साथ आंशिक लिंकिंग का समर्थन नहीं करते हैं।

यह विकल्प वही काम करता है जैसे-i

-आर फ़ाइल नाम

--just-symbols = फ़ाइल नाम

फ़ाइल नाम से प्रतीक नाम और उनके पते पढ़ें, लेकिन इसे स्थानांतरित न करें या इसे आउटपुट में शामिल न करें। यह आपकी आउटपुट फ़ाइल को अन्य कार्यक्रमों में परिभाषित स्मृति के पूर्ण स्थानों पर प्रतीकात्मक रूप से संदर्भित करने की अनुमति देता है। आप इस विकल्प का एक से अधिक बार उपयोग कर सकते हैं।

अन्य ईएलएफ लिंकर्स के साथ संगतता के लिए, यदि फ़ाइल नाम के बजाए -R विकल्प को निर्देशिका नाम के बाद किया जाता है, तो इसे -rpath विकल्प के रूप में माना जाता है।

-s

--strip-सब

आउटपुट फ़ाइल से सभी प्रतीकों की जानकारी छोड़ दें।

-S

--strip-डिबग

आउटपुट फ़ाइल से डीबगर प्रतीक जानकारी (लेकिन सभी प्रतीकों नहीं) को छोड़ दें।

आयकर

--trace

इनपुट फ़ाइलों के नाम मुद्रित करें क्योंकि एलडी उन्हें संसाधित करता है।

-टी स्क्रिप्टफाइल

--script = scriptfile

लिंकर स्क्रिप्ट के रूप में स्क्रिप्टफ़ाइल का उपयोग करें। यह स्क्रिप्ट एलडी की डिफ़ॉल्ट लिंकर स्क्रिप्ट को प्रतिस्थापित करने के बजाय प्रतिस्थापित करती है , इसलिए कमांडफाइल को आउटपुट फ़ाइल का वर्णन करने के लिए आवश्यक सब कुछ निर्दिष्ट करना होगा। यदि वर्तमान निर्देशिका में स्क्रिप्टफ़ाइल मौजूद नहीं है, तो "ld" किसी भी पिछले -L विकल्पों द्वारा निर्दिष्ट निर्देशिकाओं में इसकी तलाश करता है। एकाधिक- टी विकल्प जमा होते हैं।

-यू प्रतीक

--undefined = प्रतीक

आउटपुट फ़ाइल में अनिर्धारित प्रतीक के रूप में फोर्स प्रतीक दर्ज किया जाना चाहिए। ऐसा करने से, उदाहरण के लिए, मानक पुस्तकालयों से अतिरिक्त मॉड्यूल को जोड़ने का ट्रिगर हो सकता है। -यू को अतिरिक्त अपरिभाषित प्रतीकों को दर्ज करने के लिए विभिन्न विकल्प तर्कों के साथ दोहराया जा सकता है। यह विकल्प "EXTERN" लिंकर स्क्रिप्ट कमांड के बराबर है।

-Ur

सी ++ कार्यक्रमों के अलावा किसी भी अन्य चीज़ के लिए, यह विकल्प बराबर है -आर : यह स्थानापन्न आउटपुट उत्पन्न करता है --- यानी, एक आउटपुट फ़ाइल जो बदले में एलडी में इनपुट के रूप में काम कर सकती है। सी ++ प्रोग्राम को जोड़ने पर, -उआर रचनाकारों के संदर्भों को हल करता है , विपरीत। यह उन फ़ाइलों पर उपयोग करने के लिए काम नहीं करता है जो स्वयं से जुड़े थे -उआर ; एक बार कन्स्ट्रक्टर टेबल बनाया गया है, इसे इसमें जोड़ा नहीं जा सकता है। अंतिम आंशिक लिंक के लिए केवल यूआर का उपयोग करें, और दूसरों के लिए।

--unique [= सेक्शन ]

प्रत्येक इनपुट अनुभाग सेक्शन सेक्शन के लिए एक अलग आउटपुट अनुभाग बनाता है, या यदि प्रत्येक अनाथ इनपुट खंड के लिए वैकल्पिक वाइल्डकार्ड सेक्शन तर्क गुम है। एक अनाथ अनुभाग एक विशेष रूप से एक लिंकर स्क्रिप्ट में उल्लिखित नहीं है। आप आदेश विकल्प पर कई बार इस विकल्प का उपयोग कर सकते हैं; यह एक ही नाम के साथ इनपुट सेक्शन के सामान्य विलय को रोकता है, एक लिंकर स्क्रिप्ट में आउटपुट सेक्शन असाइनमेंट ओवरराइड करता है।

-v

--version

-वी

एलडी के लिए संस्करण संख्या प्रदर्शित करें। -V विकल्प समर्थित इम्यूलेशन भी सूचीबद्ध करता है।

-एक्स

--discard-सब

सभी स्थानीय प्रतीकों को हटाएं।

-एक्स

--discard-स्थानीय लोगों

सभी अस्थायी स्थानीय प्रतीकों को हटाएं। अधिकांश लक्ष्यों के लिए, यह सभी स्थानीय प्रतीक हैं जिनके नाम एल से शुरू होते हैं।

- प्रतीक

--trace-प्रतीक = प्रतीक

प्रत्येक लिंक की गई फ़ाइल का नाम प्रिंट करें जिसमें प्रतीक दिखाई देता है। यह विकल्प किसी भी समय दिया जा सकता है। कई प्रणालियों पर अंडरस्कोर को प्रीपेड करना आवश्यक है।

यह विकल्प तब उपयोगी होता है जब आपके लिंक में एक अनिर्धारित प्रतीक होता है लेकिन यह नहीं पता कि संदर्भ कहां से आ रहा है।

-Y पथ

डिफ़ॉल्ट लाइब्रेरी खोज पथ में पथ जोड़ें। Solaris संगतता के लिए यह विकल्प मौजूद है।

-z कीवर्ड

मान्यता प्राप्त कीवर्ड "initfirst", "interposefirst", "interfl", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "अब", "मूल", "combreloc", "nocombreloc" और "nocopyreloc" हैं "। Solaris संगतता के लिए अन्य खोजशब्दों को नजरअंदाज कर दिया जाता है। "initfirst" ऑब्जेक्ट को पहले किसी अन्य ऑब्जेक्ट से पहले रनटाइम पर प्रारंभ करने के लिए चिह्नित करता है। "इंटरैप" ऑब्जेक्ट को चिह्नित करता है कि इसकी प्रतीक तालिका सभी प्रतीकों से पहले इंटरपोज़ करती है लेकिन प्राथमिक निष्पादन योग्य। "loadfltr" ऑब्जेक्ट को चिह्नित करता है कि इसकी फाइलों को रनटाइम पर तुरंत संसाधित किया जा सकता है। "nodefaultlib" ऑब्जेक्ट को चिह्नित करता है कि इस ऑब्जेक्ट की निर्भरताओं की खोज अनदेखा करेगी कोई डिफ़ॉल्ट लाइब्रेरी खोज पथ। "nodelete" अंक को रनटाइम पर अनलोड नहीं किया जाना चाहिए। "नोडलोपेन" ऑब्जेक्ट को "dlopen" के लिए उपलब्ध नहीं है। "nodump" अंक ऑब्जेक्ट को "dldump" द्वारा नहीं छोड़ा जा सकता है। "अब" ऑब्जेक्ट को गैर-आलसी रनटाइम बाध्यकारी के साथ चिह्नित करता है। "मूल" अंक में ऑब्जेक्ट में $ मूल शामिल हो सकता है। "defs" अपरिभाषित प्रतीकों को अस्वीकार करता है। "muldefs" कई परिभाषाओं की अनुमति देता है। "combreloc" कई रिलाक अनुभागों को जोड़ती है और गतिशील प्रतीक लुकअप कैशिंग को संभव बनाने के लिए उन्हें टाइप करती है।

"nocombreloc" संयोजन एकाधिक एकाधिक खंड खंड अक्षम करता है। "nocopyreloc" कॉपी relocs के उत्पादन को अक्षम करता है।

- ( अभिलेखागार -)

- स्टार्ट-समूह अभिलेखागार - समूह-समूह

अभिलेखागार संग्रह फ़ाइलों की एक सूची होना चाहिए। वे या तो स्पष्ट फ़ाइल नाम, या -l विकल्प हो सकते हैं।

निर्दिष्ट अभिलेखागार बार-बार खोजे जाते हैं जब तक कि कोई नया अपरिभाषित संदर्भ नहीं बनाया जाता है। आम तौर पर, एक संग्रह केवल एक बार खोजा जाता है ताकि आदेश कमांड पर निर्दिष्ट किया जा सके। यदि कमांड लाइन पर बाद में दिखाई देने वाले संग्रह में ऑब्जेक्ट द्वारा निर्दिष्ट एक अपरिभाषित प्रतीक को हल करने के लिए उस संग्रह में एक प्रतीक की आवश्यकता है, तो लिंकर उस संदर्भ को हल करने में सक्षम नहीं होगा। अभिलेखागार को समूहीकृत करके, सभी को बार-बार खोजा जाता है जब तक कि सभी संभावित संदर्भ हल नहीं हो जाते।

इस विकल्प का उपयोग करना एक महत्वपूर्ण प्रदर्शन लागत है। यह केवल तभी उपयोग करना सबसे अच्छा है जब दो या दो से अधिक अभिलेखागार के बीच अपरिहार्य परिपत्र संदर्भ हों।

--accept-अज्ञात-इनपुट-चाप

--no-स्वीकार-अज्ञात-इनपुट-चाप

लिंकर को उन इनपुट फ़ाइलों को स्वीकार करने के लिए कहता है जिनकी वास्तुकला को पहचाना नहीं जा सकता है। धारणा यह है कि उपयोगकर्ता जानता है कि वे क्या कर रहे हैं और जानबूझकर इन अज्ञात इनपुट फ़ाइलों में लिंक करना चाहते हैं। रिलीज 2.14 से पहले यह लिंकर का डिफ़ॉल्ट व्यवहार था। रिलीज 2.14 के बाद से डिफ़ॉल्ट व्यवहार ऐसी इनपुट फ़ाइलों को अस्वीकार करना है, और पुराने व्यवहार को पुनर्स्थापित करने के लिए - अस्वीकरण-अज्ञात-इनपुट-आर्क विकल्प जोड़ा गया है।

-सर्ट कीवर्ड

SunOS अनुकूलता के लिए यह विकल्प अनदेखा किया गया है।

-Bdynamic

-dy

-call_shared

गतिशील पुस्तकालयों के खिलाफ लिंक। यह प्लेटफॉर्म पर केवल सार्थक है जिसके लिए साझा पुस्तकालय समर्थित हैं। यह विकल्प आमतौर पर ऐसे प्लेटफ़ॉर्म पर डिफ़ॉल्ट होता है। इस विकल्प के विभिन्न रूप विभिन्न प्रणालियों के साथ संगतता के लिए हैं। आप कमांड लाइन पर इस विकल्प का कई बार उपयोग कर सकते हैं: यह लाइब्रेरी को -l विकल्पों के लिए खोजता है जो इसका अनुसरण करता है।

-Bgroup

गतिशील खंड में "DT_FLAGS_1" प्रविष्टि में "DF_1_GROUP" ध्वज सेट करें। यह रनटाइम लिंकर को इस ऑब्जेक्ट में लुकअप को संभालने का कारण बनता है और इसकी निर्भरता केवल समूह के अंदर ही की जाती है। --no-undefined अंतर्निहित है। यह विकल्प ईएलएफ प्लेटफॉर्म पर केवल सार्थक है जो साझा पुस्तकालयों का समर्थन करता है

-Bstatic

-dn

-non_shared

स्थैतिक

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

-Bsymbolic

साझा लाइब्रेरी बनाते समय, साझा लाइब्रेरी के भीतर परिभाषा के लिए वैश्विक प्रतीकों के संदर्भों को बाध्य करें, यदि कोई हो। आम तौर पर, साझा लाइब्रेरी के भीतर परिभाषा को ओवरराइड करने के लिए साझा लाइब्रेरी के विरुद्ध जुड़े कार्यक्रम के लिए यह संभव है। यह विकल्प केवल ELFplatforms पर सार्थक है जो साझा पुस्तकालयों का समर्थन करता है।

--check वर्गों

--no-चेक-वर्गों

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

--cref

एक क्रॉस संदर्भ तालिका आउटपुट। यदि एक लिंकर मानचित्र फ़ाइल उत्पन्न की जा रही है, तो क्रॉस संदर्भ तालिका मानचित्र फ़ाइल पर मुद्रित की जाती है। अन्यथा, यह मानक आउटपुट पर मुद्रित है।

तालिका का प्रारूप जानबूझकर सरल है, ताकि यदि आवश्यक हो तो इसे आसानी से एक स्क्रिप्ट द्वारा संसाधित किया जा सकता है। प्रतीकों को मुद्रित किया जाता है, नाम से क्रमबद्ध किया जाता है। प्रत्येक प्रतीक के लिए, फ़ाइल नामों की एक सूची दी जाती है। यदि प्रतीक परिभाषित किया गया है, तो सूचीबद्ध पहली फ़ाइल परिभाषा का स्थान है। शेष फ़ाइलों में प्रतीक के संदर्भ होते हैं।

--no-परिभाषित-आम

यह विकल्प आम प्रतीकों के पते के असाइनमेंट को रोकता है। स्क्रिप्ट कमांड "INHIBIT_COMMON_ALLOCATION" का एक ही प्रभाव है।

--no-define-common विकल्प आउटपुट फ़ाइल प्रकार की पसंद से सामान्य प्रतीकों को पते असाइन करने का निर्णय decoupling की अनुमति देता है; अन्यथा एक गैर-स्थानापन्न आउटपुट प्रकार बलों सामान्य प्रतीकों को पते निर्दिष्ट करते हैं। --no-Define-common का उपयोग करना आम प्रतीकों को साझा करता है जिन्हें साझा लाइब्रेरी से संदर्भित किया जाता है ताकि केवल मुख्य कार्यक्रम में असाइन किए गए पते हों। यह साझा लाइब्रेरी में अप्रयुक्त डुप्लिकेट स्थान को समाप्त करता है, और गलत डुप्लिकेट को हल करने पर किसी भी संभावित भ्रम को रोकता है जब रनटाइम प्रतीक रिज़ॉल्यूशन के लिए विशेष खोज पथ वाले कई डायनामिक मॉड्यूल होते हैं।

--defsym प्रतीक = अभिव्यक्ति

आउटपुट फ़ाइल में एक वैश्विक प्रतीक बनाएं, जिसमें अभिव्यक्ति द्वारा दिया गया पूर्ण पता शामिल है। आप कमांड लाइन में एकाधिक प्रतीकों को परिभाषित करने के लिए जितनी बार आवश्यक हो उतनी बार इस विकल्प का उपयोग कर सकते हैं। इस संदर्भ में अभिव्यक्ति के लिए अंकगणित का एक सीमित रूप समर्थित है: आप हेक्साडेसिमल स्थिर या मौजूदा प्रतीक का नाम दे सकते हैं, या हेक्साडेसिमल स्थिरांक या प्रतीकों को जोड़ने या घटाने के लिए "+" और "-" का उपयोग कर सकते हैं। यदि आपको अधिक विस्तृत अभिव्यक्तियों की आवश्यकता है, तो स्क्रिप्ट से लिंकर कमांड भाषा का उपयोग करने पर विचार करें। नोट: प्रतीक के बीच कोई सफेद स्थान नहीं होना चाहिए, बराबर चिह्न (`` = ''), और अभिव्यक्ति

- डेमंगल [= शैली ]

--no-demangle

ये विकल्प नियंत्रित करते हैं कि त्रुटि संदेशों और अन्य आउटपुट में प्रतीक नामों को विचलित करना है या नहीं। जब लिंकर को विचलित करने के लिए कहा जाता है, तो यह एक पठनीय फैशन में प्रतीक नाम प्रस्तुत करने का प्रयास करता है: यदि ऑब्जेक्ट फ़ाइल प्रारूप द्वारा उपयोग किया जाता है, तो यह अंडरस्कोर को अग्रणी बनाता है, और सी ++ उलझन वाले प्रतीक नामों को उपयोगकर्ता पठनीय नामों में परिवर्तित करता है। विभिन्न कंपाइलरों में अलग-अलग मैंगलिंग शैली होती है। वैकल्पिक demangling शैली तर्क का उपयोग आपके कंपाइलर के लिए उचित demangling शैली का चयन करने के लिए किया जा सकता है। जब तक पर्यावरण परिवर्तनीय COLLECT_NO_DEMANGLE सेट नहीं किया जाता है तब तक लिंकर डिफ़ॉल्ट रूप से विचलित हो जाएगा। इन विकल्पों का उपयोग डिफ़ॉल्ट को ओवरराइड करने के लिए किया जा सकता है।

- गतिशील-लिंकर फ़ाइल

गतिशील लिंकर का नाम सेट करें। गतिशील रूप से जुड़े ईएलएफ निष्पादन योग्य उत्पन्न करते समय यह केवल सार्थक है। डिफ़ॉल्ट गतिशील लिंकर सामान्य रूप से सही है; इसका उपयोग तब तक न करें जब तक कि आप नहीं जानते कि आप क्या कर रहे हैं।

--embedded-relocs

यह विकल्प केवल एमआईपीएस एम्बेडेड पीआईसी कोड को जोड़ने के दौरान सार्थक है, जीएमयू कंपाइलर और असेंबलर को -मेम्बेड-पिक विकल्प द्वारा उत्पन्न किया गया है। यह लिंकर को एक टेबल बनाने का कारण बनता है जिसे किसी भी डेटा को स्थानांतरित करने के लिए रनटाइम पर उपयोग किया जा सकता है जो मूल रूप से सूचक मूल्यों के लिए प्रारंभ किया गया था। विवरण के लिए testuite / ld-empic में कोड देखें।

--fatal-चेतावनी

त्रुटियों के रूप में सभी चेतावनियों का इलाज करें।

--force-एक्स-प्रत्यय

सुनिश्चित करें कि आउटपुट फ़ाइल में एक .exe प्रत्यय है।

यदि सफलतापूर्वक निर्मित पूरी तरह से जुड़ी आउटपुट फ़ाइल में "। Exe " या " .dll " प्रत्यय नहीं है, तो यह विकल्प लिंकर को आउटपुट फ़ाइल को ".exe" प्रत्यय के साथ एक ही नाम में कॉपी करने के लिए मजबूर करता है। माइक्रोसॉफ्ट विंडोज होस्ट पर अनमोडिफाइड यूनिक्स मेकफ़ाइल का उपयोग करते समय यह विकल्प उपयोगी होता है, क्योंकि विंडोज़ के कुछ संस्करण एक छवि नहीं चलाएंगे जब तक कि यह ".exe" प्रत्यय में समाप्त न हो जाए।

--no-जीसी वर्गों

--gc वर्गों

अप्रयुक्त इनपुट खंडों के कचरा संग्रह सक्षम करें। इसे उन लक्ष्यों पर नजरअंदाज कर दिया जाता है जो इस विकल्प का समर्थन नहीं करते हैं। यह विकल्प -r के साथ संगत नहीं है, न ही इसे गतिशील लिंकिंग के साथ उपयोग किया जाना चाहिए। डिफ़ॉल्ट व्यवहार (इस कचरा संग्रह नहीं करने) को कमांड लाइन पर --no-gc-section निर्दिष्ट करके पुनर्स्थापित किया जा सकता है।

--मदद

मानक आउटपुट और बाहर निकलने पर कमांड लाइन विकल्पों का सारांश प्रिंट करें।

--target सहायता

मानक आउटपुट और बाहर निकलने पर सभी लक्ष्य विशिष्ट विकल्पों का सारांश प्रिंट करें।

मैपफ़ाइल मैप करें

फ़ाइल मैपफ़ाइल में एक लिंक मैप प्रिंट करें। उपरोक्त -एम विकल्प का विवरण देखें।

--no-रखें स्मृति

एलडी सामान्य रूप से स्मृति में इनपुट फ़ाइलों के प्रतीक तालिकाओं को कैश करके स्मृति उपयोग पर गति के लिए अनुकूलित करता है। यह विकल्प आवश्यक रूप से प्रतीक तालिकाओं को फिर से पढ़कर, स्मृति उपयोग के लिए अनुकूलित करने के लिए ld को बताता है। यदि बड़े निष्पादन योग्य को जोड़ने के दौरान एलडी मेमोरी स्पेस से बाहर हो जाता है तो इसकी आवश्यकता हो सकती है।

--no-अपरिभाषित

-z defs

आम तौर पर जब एक गैर-प्रतीकात्मक साझा लाइब्रेरी बनाते हैं, तो अपरिभाषित प्रतीकों को रनटाइम लोडर द्वारा हल करने के लिए अनुमति दी जाती है। ये विकल्प ऐसे अपरिभाषित प्रतीकों को अस्वीकार करते हैं।

--allow-कई परिभाषा

-z muldefs

आम तौर पर जब एक प्रतीक को कई बार परिभाषित किया जाता है, तो लिंकर एक घातक त्रुटि की रिपोर्ट करेगा। ये विकल्प एकाधिक परिभाषाओं की अनुमति देते हैं और पहली परिभाषा का उपयोग किया जाएगा।

--allow-shlib-अपरिभाषित

साझा वस्तुओं में अपरिभाषित प्रतीकों की अनुमति दें, भले ही --no-undefined सेट हो। शुद्ध परिणाम यह होगा कि नियमित वस्तुओं में अनिर्धारित प्रतीक अभी भी एक त्रुटि को ट्रिगर करेंगे, लेकिन साझा वस्तुओं में अपरिभाषित प्रतीकों को अनदेखा कर दिया जाएगा। No_undefined के कार्यान्वयन को धारणा है कि रनटाइम लिंकर अपरिभाषित प्रतीकों पर चकित होगा। हालांकि कम से कम एक सिस्टम (बीओएस) है जहां साझा पुस्तकालयों में अपरिभाषित प्रतीक सामान्य हैं क्योंकि कर्नेल उन्हें लोड समय पर पैच करता है यह चुनने के लिए कि कौन सा फ़ंक्शन वर्तमान आर्किटेक्चर के लिए सबसे उपयुक्त है। आईई गतिशील रूप से उपयुक्त मेमसेट फ़ंक्शन का चयन करें। स्पष्ट रूप से एचपीपीए साझा पुस्तकालयों के लिए अपरिभाषित प्रतीकों के लिए यह भी सामान्य है।

--no-अपरिभाषित-संस्करण

आम तौर पर जब किसी प्रतीक के पास एक अपरिभाषित संस्करण होता है, तो लिंकर इसे अनदेखा कर देगा। यह विकल्प अपरिभाषित संस्करण वाले प्रतीकों को अस्वीकार करता है और इसके बजाय एक घातक त्रुटि जारी की जाएगी।

--no-चेतावनी दी-बेमेल

आम तौर पर यदि आप कुछ कारणों से मेल खाने वाली इनपुट फ़ाइलों को एक साथ जोड़ने का प्रयास करते हैं, तो शायद एलडी एक त्रुटि देगा, शायद इसलिए कि वे विभिन्न प्रोसेसर या विभिन्न endiannesses के लिए संकलित किया गया है। यह विकल्प एलडी को बताता है कि इसे चुपचाप ऐसी संभावित त्रुटियों की अनुमति देनी चाहिए। इस विकल्प का केवल देखभाल के साथ उपयोग किया जाना चाहिए, मामलों में जब आपने कुछ विशेष कार्रवाई की है जो सुनिश्चित करता है कि लिंकर त्रुटियां अनुचित हैं।

--no-पूरे संग्रह

बाद की संग्रह फ़ाइलों के लिए - व्हाहोल-संग्रह विकल्प का प्रभाव बंद करें।

--noinhibit-कार्यकारी

निष्पादन योग्य आउटपुट फ़ाइल को तब भी बनाए रखें जब भी यह उपयोग योग्य हो। आम तौर पर, लिंकर एक आउटपुट फ़ाइल का उत्पादन नहीं करेगा अगर यह लिंक प्रक्रिया के दौरान त्रुटियों का सामना करता है; यह आउटपुट फ़ाइल लिखने के बिना बाहर निकलता है जब यह किसी भी त्रुटि को हल करता है।

-nostdlib

कमांड लाइन पर स्पष्ट रूप से निर्दिष्ट लाइब्रेरी निर्देशिका खोजें। लिंकर स्क्रिप्ट्स में निर्दिष्ट लाइब्रेरी निर्देशिका (कमांड लाइन पर निर्दिष्ट लिंकर स्क्रिप्ट सहित) को अनदेखा किया जाता है।

--oformat आउटपुट प्रारूप

ld को एक से अधिक प्रकार की ऑब्जेक्ट फ़ाइल का समर्थन करने के लिए कॉन्फ़िगर किया जा सकता है। यदि आपका एलडी इस तरह से कॉन्फ़िगर किया गया है, तो आप आउटपुट ऑब्जेक्ट फ़ाइल के लिए बाइनरी प्रारूप निर्दिष्ट करने के लिए --oformat विकल्प का उपयोग कर सकते हैं। यहां तक ​​कि जब वैकल्पिक ऑब्जेक्ट स्वरूपों का समर्थन करने के लिए ld को कॉन्फ़िगर किया गया है, तो आपको आमतौर पर इसे निर्दिष्ट करने की आवश्यकता नहीं होती है, क्योंकि प्रत्येक मशीन पर सामान्य आउटपुट स्वरूप के रूप में उत्पादन करने के लिए ld को कॉन्फ़िगर किया जाना चाहिए। आउटपुट-प्रारूप एक टेक्स्ट स्ट्रिंग है, जो बीएफडी पुस्तकालयों द्वारा समर्थित एक विशेष प्रारूप का नाम है। (आप objdump -i के साथ उपलब्ध बाइनरी प्रारूपों को सूचीबद्ध कर सकते हैं।) स्क्रिप्ट कमांड "OUTPUT_FORMAT" आउटपुट प्रारूप भी निर्दिष्ट कर सकता है, लेकिन यह विकल्प इसे ओवरराइड करता है।

-qmagic

लिनक्स संगतता के लिए यह विकल्प अनदेखा किया गया है।

-Qy

एसवीआर 4 संगतता के लिए यह विकल्प अनदेखा किया गया है।

--आराम करें

मशीन निर्भर प्रभाव के साथ एक विकल्प। यह विकल्प केवल कुछ लक्ष्यों पर समर्थित है।

कुछ प्लेटफ़ॉर्म पर, --relax विकल्प वैश्विक अनुकूलन करता है जो लिंकर द्वारा प्रोग्राम में संबोधित करने का समाधान करता है, जैसे कि एड्रेस ऑब्जेक्ट फ़ाइल में नए निर्देशों को संश्लेषित करना और संश्लेषित करना।

कुछ प्लेटफ़ॉर्म पर इन लिंक समय वैश्विक अनुकूलन परिणामी निष्पादन योग्य असंभव की प्रतीकात्मक डिबगिंग कर सकते हैं। यह प्रोसेसर के मत्सुशिता एमएन 10200 और एमएन 10300 परिवार के मामले में जाना जाता है।

प्लेटफ़ॉर्म पर जहां यह समर्थित नहीं है, --relax स्वीकार किया जाता है, लेकिन अनदेखा किया जाता है।

--retain-symbols-फ़ाइल फ़ाइल नाम

फ़ाइल फाइलनाम में सूचीबद्ध सभी प्रतीकों को बनाए रखें, अन्य सभी को छोड़ दें। फ़ाइल नाम केवल एक फ्लैट फ़ाइल है, प्रति पंक्ति एक प्रतीक नाम के साथ। यह विकल्प विशेष रूप से वातावरण (जैसे VxWorks) में उपयोगी है जहां रन-टाइम मेमोरी को संरक्षित करने के लिए धीरे-धीरे एक बड़ी वैश्विक प्रतीक तालिका जमा की जाती है।

--retain-symbols-file अपरिपक्व प्रतीकों, या स्थानान्तरण के लिए आवश्यक प्रतीकों को त्याग नहीं करता है।

आप कमांड लाइन में केवल एक बार - रीटेन-प्रतीकों-फ़ाइल निर्दिष्ट कर सकते हैं। यह ओवरराइड - एस और एसएस

-रपथ डीआईआर

रनटाइम लाइब्रेरी खोज पथ में एक निर्देशिका जोड़ें। साझा वस्तुओं के साथ ELFexecutable को लिंक करते समय इसका उपयोग किया जाता है। ऑल- स्ट्रैथ तर्कों को समेकित किया जाता है और रनटाइम लिंकर को पास किया जाता है, जो रनटाइम पर साझा ऑब्जेक्ट्स का पता लगाने के लिए उनका उपयोग करता है। साझा किए गए ऑब्जेक्ट्स को स्पष्ट रूप से लिंक में शामिल किए गए साझा ऑब्जेक्ट्स की आवश्यकता होने पर -rpath विकल्प का भी उपयोग किया जाता है; -rpath-link विकल्प का विवरण देखें। यदि ईएलएफ निष्पादन योग्य लिंक करते समय -प्रैथ का उपयोग नहीं किया जाता है, तो पर्यावरण चर "LD_RUN_PATH" की सामग्री का उपयोग तब किया जाएगा जब इसे परिभाषित किया गया हो।

-रोपथ विकल्प का उपयोग सनोस पर भी किया जा सकता है। डिफ़ॉल्ट रूप से, सनोस पर, लिंकर दिए गए सभी- एल विकल्पों में से एक रनटाइम खोज पैच बनाएगा। यदि एक -rpath विकल्प का उपयोग किया जाता है, तो रनटाइम खोज पथ -एल विकल्पों को अनदेखा कर, विशेष रूप से -rpath विकल्पों का उपयोग करके बनाया जाएगा। जीसीसी का उपयोग करते समय यह उपयोगी हो सकता है, जो कई- एल विकल्प जोड़ता है जो एनएफएस माउंट किए गए फाइल सिस्टम पर हो सकते हैं।

अन्य ईएलएफ लिंकर्स के साथ संगतता के लिए, यदि फ़ाइल नाम के बजाए -R विकल्प को निर्देशिका नाम के बाद किया जाता है, तो इसे -rpath विकल्प के रूप में माना जाता है।

-प्रपथ-लिंक डीआईआर

ईएलएफ या सनोस का उपयोग करते समय, एक साझा लाइब्रेरी को दूसरे की आवश्यकता हो सकती है। ऐसा तब होता है जब एक "ld -shared" लिंक में एक साझा लाइब्रेरी इनपुट इनपुट फ़ाइलों में से एक के रूप में शामिल होती है।

जब गैर-साझा, गैर-स्थानांतरित करने योग्य लिंक करते समय लिंकर ऐसी निर्भरता से मुकाबला करता है, तो यह स्वचालित रूप से आवश्यक साझा लाइब्रेरी का पता लगाने की कोशिश करेगा और इसे लिंक में शामिल करेगा, अगर इसे स्पष्ट रूप से शामिल नहीं किया गया है। ऐसे मामले में, -rpath-link विकल्प खोज के लिए निर्देशिकाओं का पहला सेट निर्दिष्ट करता है। -प्रैथ-लिंक विकल्प कॉलन द्वारा अलग किए गए नामों की सूची निर्दिष्ट करके या कई बार प्रदर्शित करके निर्देशिका नामों का अनुक्रम निर्दिष्ट कर सकता है।

इस विकल्प का सावधानी से उपयोग किया जाना चाहिए क्योंकि यह उस खोज पथ को ओवरराइड करता है जो साझा लाइब्रेरी में संकलित हो सकता है। ऐसे मामले में रनटाइम लिंकर की तुलना में अनजाने में एक अलग खोज पथ का उपयोग करना संभव है।

आवश्यक साझा पुस्तकालयों का पता लगाने के लिए लिंकर निम्न खोज पथ का उपयोग करता है।

1।

-rpath-link विकल्पों द्वारा निर्दिष्ट कोई भी निर्देशिका।

2।

-rpath विकल्पों द्वारा निर्दिष्ट कोई भी निर्देशिका। -rpath और -rpath-link के बीच का अंतर यह है कि -rpath विकल्पों द्वारा निर्दिष्ट निर्देशिका निष्पादन योग्य में शामिल होती है और रनटाइम पर उपयोग की जाती है, जबकि -rpath-link विकल्प केवल लिंक समय पर प्रभावी होता है। यह केवल देशी लिंकर के लिए है।

3।

ईएलएफ सिस्टम पर, यदि -प्रपथ और "rpath-link" विकल्पों का उपयोग नहीं किया गया था, तो पर्यावरण चर "LD_RUN_PATH" की सामग्री खोजें। यह केवल देशी लिंकर के लिए है।

4।

SunOS पर, यदि -rpath विकल्प का उपयोग नहीं किया गया था, तो -L विकल्पों का उपयोग करके निर्दिष्ट निर्देशिकाओं को खोजें।

5।

एक मूल लिंकर के लिए, पर्यावरण चर "LD_LIBRARY_PATH" की सामग्री।

6।

एक मूल ईएलएफ लिंकर के लिए, साझा लाइब्रेरी के "DT_RUNPATH" या "DT_RPATH" में निर्देशिकाओं को साझा पुस्तकालयों के लिए खोजा जाता है। "DT_RPATH" प्रविष्टियां अनदेखा की जाती हैं यदि "DT_RUNPATH" प्रविष्टियां मौजूद हैं।

7।

डिफ़ॉल्ट निर्देशिका, सामान्य रूप से / lib और / usr / lib

8।

ईएलएफ सिस्टम पर देशी लिंकर के लिए, अगर फ़ाइल /etc/ld.so.conf मौजूद है, तो उस फ़ाइल में मिली निर्देशिकाओं की सूची।

यदि आवश्यक साझा लाइब्रेरी नहीं मिली है, तो लिंकर एक चेतावनी जारी करेगा और लिंक के साथ जारी रहेगा।

कमरा साझा

-Bshareable

एक साझा पुस्तकालय बनाएँ। यह वर्तमान में केवल ईएलएफ, एक्ससीओएफएफ और सनोस प्लेटफार्मों पर समर्थित है। SunOS पर, लिंकर स्वचालित रूप से एक साझा लाइब्रेरी बना देगा यदि -e विकल्प का उपयोग नहीं किया गया है और लिंक में अपरिभाषित प्रतीक हैं।

--sort-आम

यह विकल्प सामान्य प्रतीकों को आकार के अनुसार क्रमबद्ध करने के लिए ld को बताता है जब यह उन्हें उपयुक्त आउटपुट अनुभाग में रखता है। सबसे पहले सभी बाइट प्रतीकों, फिर सभी दो बाइट, फिर सभी चार बाइट, और फिर बाकी सब कुछ आओ। यह संरेखण बाधाओं के कारण प्रतीकों के बीच अंतराल को रोकने के लिए है।

--split-by-file [ आकार ]

--split-by-reloc के समान, लेकिन आकार पहुंचने पर प्रत्येक इनपुट फ़ाइल के लिए एक नया आउटपुट अनुभाग बनाता है। यदि दिया नहीं गया तो आकार 1 के आकार में डिफ़ॉल्ट हो जाता है।

--प्लिट-बाय-रिलाक [ गिनती ]

आउटपुट फ़ाइल में अतिरिक्त अनुभाग बनाने की कोशिश करता है ताकि फ़ाइल में कोई एकल आउटपुट अनुभाग गिनती स्थानान्तरण से अधिक न हो। सीओएफएफ ऑब्जेक्ट फ़ाइल प्रारूप के साथ कुछ वास्तविक समय कर्नेल में डाउनलोड करने के लिए विशाल स्थानापन्न फ़ाइलों को उत्पन्न करते समय यह उपयोगी होता है; चूंकि सीओएफएफकैनोट एक खंड में 65535 से अधिक स्थानान्तरण का प्रतिनिधित्व करता है। ध्यान दें कि यह ऑब्जेक्ट फ़ाइल स्वरूपों के साथ काम करने में विफल रहेगा जो मनमानी वर्गों का समर्थन नहीं करते हैं। लिंकर पुनर्वितरण के लिए अलग-अलग इनपुट अनुभागों को विभाजित नहीं करेगा, इसलिए यदि एक इनपुट इनपुट में गिनती स्थानान्तरण से अधिक होता है तो एक आउटपुट सेक्शन में कई स्थानान्तरण होंगे। 32768 के मान पर डिफ़ॉल्ट गिनती करें

--stats

लिंकर के संचालन के बारे में आंकड़े गणना करें और प्रदर्शित करें, जैसे निष्पादन समय और स्मृति उपयोग।

--traditional प्रारूप

कुछ लक्ष्यों के लिए, कुछ मौजूदा लिंकर के आउटपुट से कुछ तरीकों से एलडी का उत्पादन अलग होता है। यह स्विच इसके बजाय पारंपरिक प्रारूप का उपयोग करने के लिए ld अनुरोध करता है।

उदाहरण के लिए, सनोस पर, एलडी प्रतीक स्ट्रिंग तालिका में डुप्लिकेट प्रविष्टियों को जोड़ती है। यह 30% से अधिक पूर्ण डीबगिंग जानकारी के साथ आउटपुट फ़ाइल के आकार को कम कर सकता है। दुर्भाग्य से, सनोस "डीबीएक्स" प्रोग्राम परिणामस्वरूप प्रोग्राम नहीं पढ़ सकता ("gdb" में कोई परेशानी नहीं है)। - परंपरागत प्रारूप स्विच एलडी को डुप्लिकेट प्रविष्टियों को गठबंधन करने के लिए नहीं बताता है।

--क्शन-प्रारंभ खंडनाम = संगठन

संगठन द्वारा दिए गए पूर्ण पते पर आउटपुट फ़ाइल में एक सेक्शन का पता लगाएं। आप कमांड लाइन में एकाधिक सेक्शन का पता लगाने के लिए जितनी बार आवश्यक हो इस विकल्प का उपयोग कर सकते हैं। संगठन एक हेक्साडेसिमल पूर्णांक होना चाहिए; अन्य लिंकर्स के साथ संगतता के लिए, आप आमतौर पर हेक्साडेसिमल मानों से जुड़े अग्रणी 0x को छोड़ सकते हैं। नोट: खंडनाम , बराबर चिह्न (`` = ''), और संगठन के बीच कोई सफेद स्थान नहीं होना चाहिए।

-टीबीएस संगठन

-टाडा संगठन

-टेक्स्ट ऑर्ग

क्रमशः --- "बीएसएस", "डेटा", या आउटपुट फ़ाइल के "पाठ" खंड के लिए प्रारंभिक पते के रूप में संगठन का उपयोग करें। संगठन एक हेक्साडेसिमल पूर्णांक होना चाहिए; अन्य लिंकर्स के साथ संगतता के लिए, आप आमतौर पर हेक्साडेसिमल मानों से जुड़े अग्रणी 0x को छोड़ सकते हैं।

--dll-वर्बोज़

--verbose

एलडी के लिए संस्करण संख्या प्रदर्शित करें और समर्थित लिंकर एम्यूलेशन सूचीबद्ध करें। प्रदर्शित करें कि कौन सी इनपुट फाइलें खोली जा सकती हैं और नहीं खोली जा सकती हैं। लिंकर द्वारा उपयोग की जाने वाली लिंकर स्क्रिप्ट प्रदर्शित करें।

--version-script = version-scriptfile

लिंकर को एक संस्करण स्क्रिप्ट का नाम निर्दिष्ट करें। लाइब्रेरी के निर्माण के लिए संस्करण विरासत के बारे में अतिरिक्त जानकारी निर्दिष्ट करने के लिए साझा पुस्तकालयों का निर्माण करते समय आमतौर पर इसका उपयोग किया जाता है। यह विकल्प ईएलएफ प्लेटफॉर्म पर केवल सार्थक है जो साझा पुस्तकालयों का समर्थन करता है।

--warn-आम

चेतावनी दें जब एक आम प्रतीक किसी अन्य आम प्रतीक या प्रतीक परिभाषा के साथ जोड़ा जाता है। यूनिक्स लिंकर्स कुछ हद तक मैला अभ्यास की अनुमति देते हैं, लेकिन कुछ अन्य ऑपरेटिंग सिस्टम पर लिंकर्स नहीं करते हैं। यह विकल्प आपको वैश्विक प्रतीकों को जोड़ने से संभावित समस्याओं को खोजने की अनुमति देता है। दुर्भाग्यवश, कुछ सी पुस्तकालय इस अभ्यास का उपयोग करते हैं, इसलिए आपको पुस्तकालयों के साथ-साथ आपके कार्यक्रमों में प्रतीकों के बारे में कुछ चेतावनियां मिल सकती हैं।

सी उदाहरणों द्वारा यहां दिखाए गए तीन प्रकार के वैश्विक प्रतीक हैं:

int i = 1;

एक परिभाषा, जो आउटपुट फ़ाइल के आरंभिक डेटा खंड में जाती है।

बाहरी int i;

एक अपरिभाषित संदर्भ, जो अंतरिक्ष आवंटित नहीं करता है। कहीं भी चर के लिए एक परिभाषा या एक आम प्रतीक होना चाहिए।

int i;

एक आम प्रतीक यदि एक चर के लिए केवल (एक या अधिक) आम प्रतीक हैं, तो यह आउटपुट फ़ाइल के प्रारंभिक डेटा क्षेत्र में जाता है। लिंकर एक ही चर के लिए एक ही प्रतीक में एकाधिक आम प्रतीकों को विलीन करता है। यदि वे अलग-अलग आकार के हैं, तो यह सबसे बड़ा आकार चुनता है। यदि एक ही वैरिएबल की परिभाषा है तो लिंकर एक आम प्रतीक को घोषणा में बदल देता है।

- वार्न-आम विकल्प पांच प्रकार की चेतावनियां उत्पन्न कर सकता है। प्रत्येक चेतावनी में रेखाओं की एक जोड़ी होती है: पहला प्रतीक का वर्णन करता है, और दूसरा एक ही नाम के साथ पिछले प्रतीक का वर्णन करता है। दो या दोनों प्रतीकों का एक आम प्रतीक होगा।

1।

एक संदर्भ में एक आम प्रतीक को चालू करना, क्योंकि प्रतीक के लिए पहले से ही एक परिभाषा है।

(
): चेतावनी: परिभाषा (
) द्वारा ओवरराइड ` 'का सामान्य: चेतावनी: यहां परिभाषित

2।

एक संदर्भ में एक सामान्य प्रतीक को बदलना, क्योंकि प्रतीक के लिए बाद की परिभाषा का सामना करना पड़ रहा है। यह पिछले मामले के समान है, सिवाय इसके कि प्रतीक एक अलग क्रम में सामने आते हैं।

(
): चेतावनी: '' की परिभाषा सामान्य (
) ओवरराइडिंग: चेतावनी: सामान्य यहां है

3।

पिछले समान आकार के आम प्रतीक के साथ एक आम प्रतीक विलय करना।

(
): चेतावनी: '' (
) के एकाधिक सामान्य: चेतावनी: पिछला सामान्य यहां है

4।

पिछले बड़े आम प्रतीक के साथ एक आम प्रतीक विलय।

(
): चेतावनी: '' का सामान्य बड़ा सामान्य (
) द्वारा ओवरराइड किया गया: चेतावनी: यहां बड़ा सामान्य है

5।

पिछले छोटे आम ​​प्रतीक के साथ एक आम प्रतीक विलय। यह पिछले मामले के समान है, सिवाय इसके कि प्रतीक एक अलग क्रम में सामने आते हैं।

(
): चेतावनी: '' का सामान्य छोटा सामान्य (
) ओवरराइड करना: चेतावनी: यहां छोटा सामान्य है

--warn-कंस्ट्रक्टर्स

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

--warn-बहु-जीपी

चेतावनी दें कि आउटपुट फ़ाइल में एकाधिक वैश्विक सूचक मान आवश्यक हैं या नहीं । अल्फा जैसे कुछ प्रोसेसर के लिए यह केवल सार्थक है। विशेष रूप से, कुछ प्रोसेसर एक विशेष खंड में बड़े मूल्यवान स्थिरांक डालते हैं। एक विशेष रजिस्टर (वैश्विक सूचक) इस खंड के मध्य में इंगित करता है, ताकि आधार-रजिस्टर सापेक्ष एड्रेसिंग मोड के माध्यम से स्थिरांक को कुशलता से लोड किया जा सके। चूंकि बेस-रजिस्टर रिश्तेदार मोड में ऑफ़सेट तय किया गया है और अपेक्षाकृत छोटा है (उदाहरण के लिए, 16 बिट्स), यह निरंतर पूल के अधिकतम आकार को सीमित करता है। इस प्रकार, बड़े कार्यक्रमों में, सभी संभावित स्थिरांकों को संबोधित करने में सक्षम होने के लिए अक्सर कई वैश्विक सूचक मूल्यों का उपयोग करना आवश्यक होता है। यह विकल्प जब भी होता है तो चेतावनी जारी की जाती है।

--warn-एक बार

प्रति मॉड्यूल एक बार के बजाय, प्रत्येक अनिर्धारित प्रतीक के लिए केवल एक बार चेतावनी दें।

--warn-धारा-align

चेतावनी के कारण आउटपुट सेक्शन का पता बदल दिया गया है तो चेतावनी दें। आमतौर पर, संरेखण एक इनपुट खंड द्वारा निर्धारित किया जाएगा। पता केवल तभी बदला जाएगा जब यह स्पष्ट रूप से निर्दिष्ट नहीं किया गया हो; यानी, यदि "सेक्शन" कमांड अनुभाग के लिए प्रारंभ पता निर्दिष्ट नहीं करता है।

--whole-संग्रह

--whole-archive विकल्प के बाद कमांड लाइन पर उल्लिखित प्रत्येक संग्रह के लिए, आवश्यक ऑब्जेक्ट फ़ाइलों के लिए संग्रह खोजने के बजाय लिंक में संग्रह में प्रत्येक ऑब्जेक्ट फ़ाइल शामिल करें। इसका उपयोग आम तौर पर एक साझा लाइब्रेरी में एक संग्रह फ़ाइल को चालू करने के लिए किया जाता है, जिससे प्रत्येक ऑब्जेक्ट को परिणामी साझा लाइब्रेरी में शामिल किया जा सकता है। यह विकल्प एक से अधिक बार इस्तेमाल किया जा सकता है।

Gcc से इस विकल्प का उपयोग करते समय दो नोट्स: सबसे पहले, gcc इस विकल्प के बारे में नहीं जानता है, इसलिए आपको -Wl, -whole-archive का उपयोग करना होगा । दूसरा, अभिलेखागार की अपनी सूची के बाद -ब्लूएल-नो-पूर्ण-संग्रह का उपयोग करना न भूलें, क्योंकि जीसीसी आपके लिंक पर अभिलेखागार की अपनी सूची जोड़ देगा और आप यह ध्वज उन लोगों को प्रभावित नहीं करना चाहेंगे।

- लपेटो प्रतीक

प्रतीक के लिए एक रैपर समारोह का प्रयोग करें। प्रतीक के लिए कोई अपरिभाषित संदर्भ "__ wrap_symbol" को हल किया जाएगा। "__real_symbol" के लिए कोई अपरिभाषित संदर्भ प्रतीक के लिए हल किया जाएगा।

इसका उपयोग सिस्टम फ़ंक्शन के लिए एक रैपर प्रदान करने के लिए किया जा सकता है। रैपर फ़ंक्शन को "__wrap_symbol" कहा जाना चाहिए। यदि यह सिस्टम फ़ंक्शन को कॉल करना चाहता है, तो उसे "__ real_symbol" कॉल करना चाहिए।

यहां एक मामूली उदाहरण है:

शून्य * __wrap_malloc (int c) {printf ("malloc% ld \ n", c) के साथ बुलाया गया; वापसी __real_malloc (सी); }

यदि आप --wrap malloc का उपयोग करके इस फ़ाइल के साथ अन्य कोड को लिंक करते हैं, तो "malloc" पर सभी कॉल इसके बजाय फ़ंक्शन "__wrap_malloc" को कॉल करेंगे। "__wrap_malloc" में "__real_malloc" पर कॉल वास्तविक "malloc" फ़ंक्शन को कॉल करेगा।

आप एक "__real_malloc" फ़ंक्शन भी प्रदान करना चाहते हैं, ताकि --wrap विकल्प के बिना लिंक सफल हो जाएंगे। यदि आप ऐसा करते हैं, तो आपको "__wrap_malloc" के समान फ़ाइल में "__ real_malloc" की परिभाषा नहीं डालना चाहिए; यदि आप करते हैं, तो लिंकर को "malloc" में लपेटने का मौका मिलने से पहले असेंबलर कॉल को हल कर सकता है।

--enable-नई-dtags

--disable-new-dtags

यह लिंकर ईएलएफ में नए गतिशील टैग बना सकता है। लेकिन पुराने ईएलएफ सिस्टम उन्हें समझ नहीं सकते हैं। यदि आप --enable-new-dtags निर्दिष्ट करते हैं, तो गतिशील टैग आवश्यकतानुसार बनाए जाएंगे। यदि आप निर्दिष्ट करते हैं - अक्षम-नए-डीटीएजी , कोई नया गतिशील टैग नहीं बनाया जाएगा। डिफ़ॉल्ट रूप से, नए गतिशील टैग नहीं बनाए जाते हैं। ध्यान दें कि वे विकल्प केवलELF सिस्टम के लिए उपलब्ध हैं।

I386 पीई लिंकर शेर विकल्प का समर्थन करता है, जो आउटपुट को सामान्य निष्पादन योग्य के बजाय गतिशील रूप से लिंक की गई लाइब्रेरी (डीएलएल) का कारण बनता है। जब आप इस विकल्प का उपयोग करते हैं तो आपको आउटपुट "* .dll" का नाम देना चाहिए। इसके अतिरिक्त, लिंकर मानक "* .def" फ़ाइलों का पूरी तरह से समर्थन करता है, जो किसी ऑब्जेक्ट फ़ाइल की तरह लिंकर कमांड लाइन पर निर्दिष्ट किया जा सकता है (वास्तव में, यह अभिलेखागार से पहले होना चाहिए, यह सुनिश्चित करने के लिए कि वे लिंक हो जाएं, एक सामान्य ऑब्जेक्ट फ़ाइल की तरह)।

सभी लक्ष्यों के लिए सामान्य विकल्पों के अलावा, i386 पीई लिंकर अतिरिक्त कमांड लाइन विकल्प का समर्थन करता है जो i386 पीई लक्ष्य के लिए विशिष्ट हैं। विकल्प जो मूल्य लेते हैं उन्हें उनके मूल्यों से या तो एक स्थान या बराबर चिह्न से अलग किया जा सकता है।

--add-stdcall-उर्फ

यदि दिया गया है, तो stdcall प्रत्यय (@ एनएन ) के साथ प्रतीकों को निर्यात किया जाएगा और प्रत्यय छीनने के साथ भी।

--बेस फ़ाइल फ़ाइल

फ़ाइल को उस फ़ाइल के नाम के रूप में उपयोग करें जिसमें डीएलएलओएल के साथ डीएलएल उत्पन्न करने के लिए आवश्यक सभी स्थानान्तरणों के मूल पते को सहेजना है।

--dll

एक नियमित निष्पादन योग्य के बजाय एक डीएलएल बनाएँ। आप किसी दिए गए ".def" फ़ाइल में "शेररी" निर्दिष्ट या निर्दिष्ट भी कर सकते हैं।

--enable-stdcall-Fixup

--disable-stdcall-Fixup

यदि लिंक एक प्रतीक पाता है जिसे वह हल नहीं कर सकता है, तो यह एक अन्य परिभाषित प्रतीक की तलाश करके `अस्पष्ट लिंकिंग 'करने का प्रयास करेगा जो केवल प्रतीक नाम (सीडीसीएल बनाम stdcall) के प्रारूप में भिन्न होता है और लिंक करके उस प्रतीक को हल करेगा मैच में उदाहरण के लिए, अपरिभाषित प्रतीक "_foo" फ़ंक्शन "_foo @ 12" से जोड़ा जा सकता है, या अपरिभाषित प्रतीक "_bar @ 16" फ़ंक्शन "_bar" से जोड़ा जा सकता है। जब लिंकर ऐसा करता है, तो यह एक चेतावनी प्रिंट करता है, क्योंकि इसे सामान्य रूप से लिंक करने में विफल होना चाहिए था, लेकिन कभी-कभी तृतीय-पक्ष डीएल से उत्पन्न पुस्तकालयों को आयात करने के लिए इस सुविधा को उपयोग करने की आवश्यकता हो सकती है। यदि आप --enable-stdcall-fixup निर्दिष्ट करते हैं, तो यह सुविधा पूरी तरह सक्षम है और चेतावनियां मुद्रित नहीं होती हैं। यदि आप --disable-stdcall-fixup निर्दिष्ट करते हैं, तो यह सुविधा अक्षम है और ऐसे विसंगतियों को त्रुटियां माना जाता है।

--export-सभी प्रतीकों

यदि दिया गया है, तो डीएलएल बनाने के लिए उपयोग की जाने वाली वस्तुओं में सभी वैश्विक प्रतीकों को डीएलएल द्वारा निर्यात किया जाएगा। ध्यान दें कि यह डिफ़ॉल्ट है अगर अन्यथा कोई निर्यातित प्रतीक नहीं होगा। जब प्रतीकों को डीईएफ फाइलों के माध्यम से स्पष्ट रूप से निर्यात किया जाता है या फ़ंक्शन विशेषताओं के माध्यम से निहित रूप से निर्यात किया जाता है, तो डिफ़ॉल्ट विकल्प किसी अन्य को निर्यात नहीं करना है जब तक यह विकल्प नहीं दिया जाता है। ध्यान दें कि "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", और "impure_ptr" प्रतीक स्वचालित रूप से निर्यात नहीं किए जाएंगे। साथ ही, अन्य डीएलएल से आयात किए गए प्रतीकों को फिर से निर्यात नहीं किया जाएगा, न ही डीएलएल के आंतरिक लेआउट को निर्दिष्ट करने वाले प्रतीक होंगे जैसे "_head_" से शुरू होने वाले या "_iname" के साथ समाप्त हो रहे हैं। इसके अलावा, "libgcc", "libstd ++", "libmingw32", या "crtX.o" से कोई प्रतीक निर्यात नहीं किया जाएगा। सी ++ डीएलएल के साथ मदद करने के लिए जिन नामों का नाम "__rtti_" या "__builtin_" से शुरू होता है, निर्यात नहीं किया जाएगा। अंत में, साइगविन-निजी प्रतीकों की विस्तृत सूची है जो निर्यात नहीं की जाती हैं (जाहिर है, यह सिग्विन लक्ष्यों के लिए डीएलएल बनाने के दौरान लागू होती है)।

इन सिगविन-बहिष्कार हैं: "_cygwin_dll_entry @ 12", "_cygwin_crt0_common @ 8", "_ cygwin_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3" ", और" पर्यावरण "।

- बहिष्कार प्रतीक प्रतीक , प्रतीक , ...

प्रतीकों की एक सूची निर्दिष्ट करता है जिन्हें स्वचालित रूप से निर्यात नहीं किया जाना चाहिए। प्रतीक नाम अल्पविराम या कोलन द्वारा सीमित किया जा सकता है।

- exclude-libs lib , lib , ...

संग्रह पुस्तकालयों की एक सूची निर्दिष्ट करता है जिनसे प्रतीकों को स्वचालित रूप से निर्यात नहीं किया जाना चाहिए। लाइब्रेरी नाम को अल्पविराम या कोलन द्वारा सीमित किया जा सकता है। "- exclude-libs ALL" निर्दिष्ट करना स्वचालित निर्यात से सभी संग्रह पुस्तकालयों में प्रतीकों को शामिल करता है। इस विकल्प के बावजूद, एक .def फ़ाइल में स्पष्ट रूप से सूचीबद्ध प्रतीक अभी भी निर्यात किए गए हैं।

--file-संरेखण

फ़ाइल संरेखण निर्दिष्ट करें। फ़ाइल में अनुभाग हमेशा फाइल ऑफसेट पर शुरू होंगे जो इस संख्या के गुणक हैं। यह 512 के लिए डिफ़ॉल्ट है।

--heap आरक्षित

--heap आरक्षित , प्रतिबद्ध

इस कार्यक्रम के लिए ढेर के रूप में उपयोग करने के लिए आरक्षित (और वैकल्पिक रूप से प्रतिबद्ध) को स्मृति की मात्रा निर्दिष्ट करें। डिफ़ॉल्ट 1 एमबी आरक्षित है, 4K प्रतिबद्ध है।

--image- आधार मूल्य

अपने प्रोग्राम या डीएल के मूल पते के रूप में मूल्य का उपयोग करें। यह सबसे कम स्मृति स्थान है जिसका उपयोग तब किया जाएगा जब आपका प्रोग्राम या डीएल लोड हो। अपने डीएलएस के प्रदर्शन को स्थानांतरित करने और सुधारने की आवश्यकता को कम करने के लिए, प्रत्येक के पास एक अद्वितीय आधार पता होना चाहिए और किसी अन्य डीएल को ओवरलैप नहीं करना चाहिए। निष्पादन योग्य के लिए 0x400000 डिफ़ॉल्ट है, और dlls के लिए 0x10000000 है।

--kill-पर

यदि दिया गया है, तो stdcall प्रत्यय (@ एनएन ) निर्यात किए जाने से पहले प्रतीकों से छीन लिया जाएगा।

- मुख्य-छवि-संस्करण मान

'छवि संस्करण' की प्रमुख संख्या सेट करता है। 1 के लिए डिफ़ॉल्ट।

- major-os-version मान

'ओएस संस्करण' की प्रमुख संख्या सेट करता है। 4 के लिए डिफ़ॉल्ट।

- प्रमुख-सबसिस्टम-संस्करण मान

`उपप्रणाली संस्करण 'की प्रमुख संख्या सेट करता है। 4 के लिए डिफ़ॉल्ट।

--minor-image-version मान

'छवि संस्करण' की मामूली संख्या सेट करता है। 0 के लिए डिफ़ॉल्ट।

--minor-os- संस्करण मान

'ओएस संस्करण' की मामूली संख्या सेट करता है। 0 के लिए डिफ़ॉल्ट।

--मिनर-उपप्रणाली-संस्करण मान

`उपप्रणाली संस्करण 'की मामूली संख्या सेट करता है। 0 के लिए डिफ़ॉल्ट।

--output-def फ़ाइल

लिंकर फ़ाइल फ़ाइल बनाएगा जिसमें लिंकर उत्पन्न होने वाले डीएलएल से संबंधित एक डीईएफ फ़ाइल होगी। यह डीईएफ फ़ाइल (जिसे "* .def" कहा जाना चाहिए) का उपयोग "dlltool" के साथ एक आयात लाइब्रेरी बनाने के लिए किया जा सकता है या स्वचालित रूप से या निहित रूप से निर्यात किए गए प्रतीकों के संदर्भ के रूप में उपयोग किया जा सकता है।

--out-implib फ़ाइल

लिंकर फ़ाइल फ़ाइल बनाएगा जिसमें लिंकर उत्पन्न होने वाले डीएलएल से संबंधित एक आयात lib होगा। यह आयात lib (जिसे "* .dll.a" या "* .a" कहा जाना चाहिए, जेनरेट किए गए डीएलएल के खिलाफ ग्राहकों को जोड़ने के लिए उपयोग किया जा सकता है; यह व्यवहार एक अलग "dlltool" आयात लाइब्रेरी निर्माण चरण को छोड़ना संभव बनाता है।

--enable-ऑटो छवि आधार

डीएलएल के लिए छवि आधार स्वचालित रूप से चुनें, जब तक कि कोई "--image-base" तर्क का उपयोग करके निर्दिष्ट न हो। प्रत्येक डीएलएल, इन-मेमोरी टकराव और स्थानान्तरण के लिए अद्वितीय छवि अड्डों को बनाने के लिए dllname से उत्पन्न हैश का उपयोग करके प्रोग्राम निष्पादन में देरी हो सकती है।

--disable-ऑटो छवि आधार

स्वचालित रूप से एक अद्वितीय छवि आधार उत्पन्न न करें। यदि कोई उपयोगकर्ता निर्दिष्ट छवि आधार नहीं है ("--image-base") तो प्लेटफॉर्म डिफ़ॉल्ट का उपयोग करें।

--dll-search-prefix स्ट्रिंग

आयात लाइब्रेरी के बिना गतिशील रूप से एक डीएलएल को लिंक करते समय, "lib .dll" को प्राथमिकता में " .dll" खोजें। यह व्यवहार विभिन्न `` subplatforms 'के लिए बनाए गए डीएलएल के बीच आसान अंतर की अनुमति देता है: मूल, सिग्विन, यूविन, पीडब्ल्यू इत्यादि। उदाहरण के लिए, साइगविन डीएलएल आमतौर पर "--dll-search-prefix = cyg" का उपयोग करते हैं।

--enable-ऑटो आयात

डीएलएल से डेटा आयात के लिए "_symbol" से "__imp__symbol" के परिष्कृत लिंकिंग करें, और उन DATAexports के साथ आयात पुस्तकालयों का निर्माण करते समय आवश्यक थंकिंग प्रतीक बनाएं। यह आम तौर पर 'बस काम करेगा' --- लेकिन कभी-कभी आप यह संदेश देख सकते हैं:

"वेरिएबल '' स्वतः आयात नहीं किया जा सकता है। कृपया विवरण के लिए एलडी के" --enable-auto-import "के लिए प्रलेखन पढ़ें।"

यह संदेश तब होता है जब कुछ (उप) अभिव्यक्ति अंततः दो स्थिरांक के योग द्वारा दिए गए पते तक पहुंचती है (Win32 आयात तालिका केवल एक को अनुमति देती है)। ऐसे उदाहरण जहां यह हो सकता है, एक डीएलएल से आयातित संरचना चर के सदस्य फ़ील्ड तक पहुंच के साथ-साथ एक डीएलएल से आयातित सरणी चर में निरंतर अनुक्रमणिका का उपयोग करना शामिल है। कोई भी बहु शब्द परिवर्तनीय (सरणी, structs, लंबे समय, आदि) इस त्रुटि की स्थिति को ट्रिगर कर सकते हैं। हालांकि, अपमानजनक निर्यातित चर के सटीक डेटा प्रकार की परवाह किए बिना, एलडी हमेशा इसका पता लगाएगा, चेतावनी जारी करेगा, और बाहर निकलें।

निर्यातित चर के डेटा प्रकार के बावजूद, इस कठिनाई को हल करने के कई तरीके हैं:

एक तरीका है --enable-runtime-छद्म-रिलाक स्विच का उपयोग करना। यह रनटाइम पर्यावरण के लिए आपके क्लाइंट कोड में संदर्भों को समायोजित करने का कार्य छोड़ देता है, इसलिए यह विधि तभी काम करती है जब रनटाइम एनवायरमेंट इस सुविधा का समर्थन करता है।

दूसरा समाधान एक स्थिरांक होने के लिए 'स्थिरांक' में से एक को मजबूर करना है --- जो कि संकलित समय पर अज्ञात और अप्रत्याशित है। सरणी के लिए, दो संभावनाएं हैं: ए) सूचकांक (सरणी का पता) एक चर बनाते हैं, या बी) 'स्थिर' सूचकांक को एक चर बनाते हैं। इस प्रकार:

बाहरी प्रकार extern_array []; extern_array [1] -> {अस्थिर प्रकार * टी = extern_array; टी [1]}

या

बाहरी प्रकार extern_array []; extern_array [1] -> {अस्थिर int टी = 1; extern_array [टी]}

Structs (और अधिकांश अन्य गुण डेटा प्रकार) के लिए एकमात्र विकल्प संरचना को स्वयं बनाना है (या लंबे समय तक, या ...) चर:

बाहरी संरचना s extern_struct; extern_struct.field -> {अस्थिर संरचना एस * टी = और extern_struct; टी-> फ़ील्ड}

या

बाहरी लंबे लंबे extern_ll; extern_ll -> {अस्थिर लंबा लंबा * local_ll = & extern_ll; * local_ll}

इस कठिनाई से निपटने का एक तीसरा तरीका अपमानजनक प्रतीक के लिए 'ऑटो-आयात' को त्यागना है और इसे "__declspec (dllimport)" के साथ चिह्नित करना है। हालांकि, अभ्यास में संकलन-समय # परिभाषाओं का उपयोग करने के लिए यह इंगित करने की आवश्यकता है कि क्या आप एक डीएलएल बना रहे हैं, क्लाइंट कोड बनाना जो डीएलएल से लिंक होगा, या केवल एक स्थिर पुस्तकालय के निर्माण / लिंकिंग करेगा। 'निरंतर ऑफसेट' समस्या के साथ सीधे पते को हल करने के विभिन्न तरीकों के बीच चुनाव करने में, आपको सामान्य वास्तविक दुनिया के उपयोग पर विचार करना चाहिए:

मूल:

--foo.h बाहरी int arr []; --foo.c # शामिल "foo.h" शून्य मुख्य (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

समाधान 1:

--foo.h बाहरी int arr []; --foo.c # शामिल "foo.h" शून्य मुख्य (int argc, char ** argv) {/ * यह वर्कअराउंड Win32 और cygwin के लिए है; "अनुकूलित करें" * / अस्थिर int * parr = arr; printf ( "% d \ n", पैर [1]); }

समाधान 2:

--foo.h / * नोट: ऑटो-निर्यात माना जाता है (नहीं __declspec (dllexport)) * / #if (परिभाषित (_WIN32) || परिभाषित (__ CYGWIN__)) && \! (परिभाषित (FOO_BUILD_DLL) || परिभाषित (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif बाहरी FOO_IMPORT int arr []; --foo.c # शामिल "foo.h" शून्य मुख्य (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

इस समस्या से बचने का चौथा तरीका अपमानजनक चर (जैसे set_foo () और get_foo () एक्सेसर फ़ंक्शंस के लिए डेटा इंटरफ़ेस की बजाय एक कार्यात्मक इंटरफ़ेस का उपयोग करने के लिए अपनी लाइब्रेरी को दोबारा कोड करना है।

--disable-ऑटो आयात

DLLs से DATAimports के लिए "_symbol" से "__imp__symbol" के परिष्कृत लिंक करने का प्रयास न करें।

--enable-क्रम-छद्म reloc

यदि आपके कोड में --enable-auto-import अनुभाग में वर्णित अभिव्यक्तियां हैं, यानी, गैर-शून्य ऑफसेट के साथ डीएलएल से डेटाएम्पोर्ट्स, यह स्विच 'रनटाइम छद्म स्थान' का वेक्टर बना देगा जिसका उपयोग संदर्भों को समायोजित करने के लिए रनटाइम पर्यावरण द्वारा किया जा सकता है अपने क्लाइंट कोड में ऐसे डेटा के लिए।

--disable-क्रम-छद्म reloc

डीएलएल से गैर-शून्य ऑफसेट डेटा आयात के लिए छद्म स्थानान्तरण न बनाएं। यह डिफ़ॉल्ट है।

--enable-अतिरिक्त-पे-डिबग

स्वत: आयात प्रतीक thunking से संबंधित अतिरिक्त डीबग जानकारी दिखाएं।

--section-संरेखण

अनुभाग संरेखण सेट करता है। स्मृति में अनुभाग हमेशा उन पते पर शुरू होंगे जो इस संख्या के एकाधिक हैं। 0x1000 के लिए डिफ़ॉल्ट।

--स्टैक रिजर्व

--स्टैक रिजर्व , प्रतिबद्ध

इस कार्यक्रम के लिए ढेर के रूप में उपयोग करने के लिए आरक्षित (और वैकल्पिक रूप से प्रतिबद्ध) को स्मृति की मात्रा निर्दिष्ट करें। डिफ़ॉल्ट 2 एमबी आरक्षित है, 4K प्रतिबद्ध है।

- सबसिस्टम जो

- सबसिस्टम जो : प्रमुख

- सबसिस्टम जो : प्रमुख नाबालिग

उपप्रणाली निर्दिष्ट करता है जिसके अंतर्गत आपका प्रोग्राम निष्पादित होगा। कानूनी मान जो "मूल", "विंडोज़", "कंसोल" और "पॉज़िक्स" हैं। आप वैकल्पिक रूप से उपप्रणाली संस्करण भी सेट कर सकते हैं।

महत्वपूर्ण: यह देखने के लिए मैन कमांड ( % man ) का उपयोग करें कि आपके विशेष कंप्यूटर पर कमांड का उपयोग कैसे किया जाता है।