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

NAME

ld - LD प्रयोग गर्दै , जीएनयू लिङ्कर

SYNOPSIS

ld [ विकल्पहरू ] objfile ...

वर्णन

ld ले धेरै वस्तु र सङ्ग्रह फाइलहरू संयोजन गर्दछ , तिनीहरूको डेटा र सम्बन्धहरू माथिको सन्दर्भहरूलाई बदल्दछ। सामान्यतया कार्यक्रम संकलन गर्न अन्तिम चरण ld चलाउन हो।

ld ले लिङ्क कमान भाषा भाषा फाइलहरूलाई एटी एन्ड टीको लिङ्क सम्पादक कमान भाषा सिन्ट्याक्सको लिङ्कमा लेखिएको छ, लिङ्क प्रक्रियामा स्पष्ट र पूर्ण नियन्त्रण प्रदान गर्न।

यो पुरुष पृष्ठले आदेश भाषा वर्णन गर्दैन। "जानकारी" मा ld प्रविष्टि हेर्नुहोस्, वा आदेश भाषामा पूर्ण जानकारीको लागि र जीएनयू लिङ्करका अन्य पक्षहरूको लागि म्यानुअल ld: GNU लिङ्कर।

लेडीको संस्करणमा वस्तु फाइलहरूमा काम गर्न सामान्य उद्देश्य BFD पुस्तकालयहरू प्रयोग गर्दछ। यसले एलडीलाई पढ्न, संयोजन गर्न र वस्तु फाइलहरू धेरै फरक ढाँचाहरूमा लेख्न अनुमति दिन्छ --- उदाहरणका लागि, COFF वा "a.out"। कुनैपनि प्रकारका वस्तु फाइलहरू सिर्जना गर्न विभिन्न ढाँचाहरू सँगै जोड्न सकिन्छ।

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

जीएनयू लिङ्कर एलडीले एक व्यापक दायराको परिस्थिति समाविष्कार गर्दछ र अन्य लिङ्कहरूसँग सम्भव छ जस्तो। फलस्वरूप, तपाईंसँग यसको व्यवहार नियन्त्रण गर्न धेरै छनौटहरू छन्।

विकल्पहरू

लिङ्करले आदेश-लाइन विकल्पहरूको बहुसंख्यक समर्थन गर्दछ, तर वास्तविक अभ्यासमा तीमध्ये केहि पनि कुनै विशेष सन्दर्भमा प्रयोग गरिन्छ। उदाहरणका लागि, ld को लगातार प्रयोग मानक, समर्थित यूनिक्स प्रणाली मा मानक युनिक्स ओब्जेक्ट फाइलहरु लाई लिंक गर्न को लागी छ। यस्तो प्रणालीमा, फाइल "नमस्ते।" मा लिङ्क गर्न:

ld -o <आउटपुट> / lib/crt0.o hello.o -lc

यसले "Ll/crt0.o" फाइल "हेलो.ओ" र पुस्तकालय "libc.a" को साथ लिङ्कको नतिजाको रूपमा उत्पादन नाम फाइल गर्न उत्पादन गर्दछ जुन जो मानक खोजी निर्देशिकाहरूबाट आउनेछ। (तल -l विकल्पको छलफल हेर्नुहोस्।)

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

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

सामान्यतया लिङ्क कम से कम एक वस्तु फाइलसँग बोलाइएको छ, तर तपाईले -l , -R , र स्क्रिप्ट आदेश भाषा प्रयोग गरेर बाइनरी इनपुट फाइलहरूको अन्य ढाँचा निर्दिष्ट गर्न सक्नुहुन्छ। यदि कुनै पनि बाइनरी इनपुट फाईलहरू निर्दिष्ट गरिएको छैन भने, लिङ्कले कुनै आउटपुट उत्पादन गर्दैन, र सन्देशमा कुनै इनपुट फाईलहरू मामिला गर्दैन।

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

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

विकल्पहरूको लागि जसका नामहरू धेरै अक्षरहरू छन्, कि त एक ड्यास वा दुई विकल्प नाम भन्दा अघि गर्न सक्दछ; उदाहरणको लागि, -चन्द्र-चिन्ह--ट्रेस-प्रतीक बराबर छन्। नोट - त्यहाँ यो नियम एक अपवाद हो। बहु अक्षर 'कम' 'ओ' सँग सुरू गर्न मात्र दुई ड्यासहरूद्वारा मात्र गर्न सकिन्छ। यो -o विकल्प संग भ्रम को कम गर्न को लागी हो। यसैले उदाहरणका लागि -माजिकले आउटपुट फाईल नाम जादूमा सेट गर्दछ जबकि --माजिकले आउटपुटमा NMAGIC झण्डा सेट गर्दछ।

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

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

Gcc -Wl, - startgroup foo.o bar.o -Wl, - endgroup

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

यहाँ जीएनयू लिङ्कर द्वारा स्वीकृत सामान्य कमांड लाइन स्वीचको तालिका हो:

-ए खोजशब्द

यो विकल्प HP / UX अनुकूलताको लागि समर्थित छ। खोजशब्द तर्क तर्क तार , साझा , वा पूर्वनिर्धारित मध्ये एक हुनु पर्छ। -अर्चिभिक कार्यात्मक रूपमा कार्यात्मक रूपमा बराबर छ, र अन्य दुई कुञ्जीशब्दहरू कार्यात्मक रूपमा -बाइमिकमको बराबर छन्। यो विकल्प कुनै पनि पटक प्रयोग गर्न सकिन्छ।

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

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

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

एलडीको भविष्यका विज्ञप्तिहरूले अन्य वास्तुकला परिवारका लागि समान कार्यक्षमतालाई समर्थन गर्न सक्छ।

-b इनपुट ढाँचा

--सूचना = इनपुट ढाँचा

ld एक भन्दा बढी प्रकारको वस्तु फाइल समर्थन गर्न कन्फिगर हुन सक्छ। यदि तपाईंको ld यो तरिका कन्फिगर गरिएको छ भने, तपाईँले आदेश वस्तु फाइलको लागि बाइनरी ढाँचा निर्दिष्ट गर्न -b विकल्प प्रयोग गर्न सक्नुहुन्छ जुन यो विकल्प आदेश रेखामा पछ्याउनुहोस्। वैकल्पिक वस्तु ढाँचाहरू समर्थन गर्नको लागि ld कन्फिगर गरिएको भए तापनि तपाईँ सामान्यतया यो निर्दिष्ट गर्न आवश्यक छैन, किनभने ld कन्फिगर हुन अनिवार्य इनपुट ढाँचा प्रत्येक मेशिनमा सबैभन्दा सामान्य ढाँचाको रूपमा आशा गर्न सकिन्छ। इनपुट-ढाँचा एक पाठ स्ट्रिङ हो, BFD पुस्तकालयहरू द्वारा समर्थित एक विशेष ढाँचाको नाम। (तपाइँ objdump -i सँग उपलब्ध बाइनरी ढाँचा सूची गर्न सक्नुहुन्छ)

यदि तपाईँ फाइलहरू असामान्य बाइनरी ढाँचासँग लिङ्क गर्दै हुनुहुन्छ भने यो विकल्प प्रयोग गर्न सक्नुहुन्छ। तपाईले पनि प्रयोग गर्न सक्नुहुन्छ -b स्पष्ट रूपमा ढाँचा (जब विभिन्न ढाँचाका वस्तु फाइलहरू लिंक गर्दै), -b वस्तु - फर्मको प्रत्येक समूहमा एक विशेष ढाँचामा अघिल्लो इनपुट-ढाँचा सहित।

पूर्वनिर्धारित ढाँचा वातावरण चर "GNUTARGET" बाट लिइएको छ।

तपाईं "TARGET" आदेश प्रयोग गरेर स्क्रिप्टबाट आगत ढाँचा परिभाषित गर्न सक्नुहुन्छ;

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

--म्री-लिपि = एमआरआई-कमांडफाइल

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

-d

-dc

-dp

यी तीन विकल्प बराबर छन्; बहु फारमहरू अन्य लिङ्ककर्ताहरूसँग अनुकूलताका लागि समर्थित छन्। तिनीहरू ठाउँको साधारण प्रतीकहरूलाई ठाउँ प्रदान गर्दछ तापनि एक रिसेप्टेबल आउटपुट फाइल निर्दिष्ट गरिएको छ ( -आर ) सँग। स्क्रिप्ट आदेश "FORCE_COMMON_ALLOCATION" सँग एकै प्रभाव छ।

-ई प्रविष्टि

--न्ट्री = प्रविष्टि

पूर्वनिर्धारित प्रवेश बिन्दुको सट्टामा तपाईँको कार्यक्रमको निष्पादन सुरु गर्नको लागि स्पष्ट प्रतीकको रूपमा प्रविष्टि प्रयोग गर्नुहोस्। यदि त्यहाँ प्रविष्टिको नाममा कुनै प्रतीक छैन भने, लिङ्कले नम्बरको रूपमा प्रविष्टि को पार्स गर्न प्रयास गर्नेछ, र त्यो ठेगानाको रूपमा प्रयोग गर्नुहोस् (नम्बर आधार 10 मा व्याख्या गरिनेछ; तपाईं आधार 16 को लागि एक प्रमुख 0x प्रयोग गर्न सक्नुहुन्छ, वा 0 अग्रिम 0 आधार 8 को लागि)।

-ई

--पोर्ट-गतिशील

गतिशील रूपमा कार्यान्वयन योग्य हुँदा सिर्जना गर्नुहोस्, सबै प्रतीकहरू गतिशील प्रतीक तालिकामा थप्नुहोस्। गतिशील प्रतीक तालिका प्रतीकहरूको सेट हो जुन गतिशील वस्तुहरु देखि रन समय मा देखिने छ।

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

यदि तपाइँ "गतिशील" वस्तुलाई लोड गर्न को लागी प्रयोग गर्न चाहानुहुन्छ जुन प्रोग्रामद्वारा परिभाषित प्रतीकहरू फिर्ता गर्न आवश्यक पर्दछ, अन्य कुनै गतिशील वस्तुको साटो, त्यसपछि तपाईले यो प्रोग्रामलाई सम्पादित गर्दा यो विकल्प प्रयोग गर्न आवश्यक पर्दछ।

यदि तपाईं आउटपुट ढाँचा समर्थन गर्दछ भने कुन चिन्हहरूलाई गतिशील प्रतीक तालिकामा थप्न सकिन्छ कुन नियन्त्रण गर्न प्रयोग गर्न सक्नुहुन्छ। वर्णन गर्नुहोस् - संस्करण-स्क्रिप्ट @ ref {VERSION} मा।

-EB

लिङ्क ठूलो-अन्त्यियन वस्तुहरू लिङ्क गर्नुहोस्। यसले पूर्वनिर्धारित आउटपुट ढाँचालाई प्रभाव पार्छ।

-EL

सानो- endian वस्तुहरू लिङ्क गर्नुहोस्। यसले पूर्वनिर्धारित आउटपुट ढाँचालाई प्रभाव पार्छ।

-f

- सहायक नाम

ELF साझेदारी गरिएको वस्तु सिर्जना गर्दा, निर्दिष्ट नाममा आन्तरिक DT_AUXILIARY फिल्ड सेट गर्नुहोस्। यसले डायनामिक लिंकरलाई बताउँछ जुन साझा वस्तुको प्रतीक तालिका साझा वस्तु नामको प्रतीक तालिकामा सहायक फिल्टरको रूपमा प्रयोग गर्नुपर्छ।

यदि तपाइँ पछि यो फिल्टर वस्तु विरुद्ध एक कार्यक्रम लिङ्क गर्नुहुन्छ भने, त्यस बेला तपाईँले कार्यक्रम चलाउनुहुन्छ, डायनामिक लिङ्ककर्ताले DT_AUXILARYARY फिल्ड देख्नेछ। यदि डायनामिक लिङ्करले फिल्टर वस्तुबाट कुनै पनि प्रतीकहरू समाधान गर्दछ भने, यो पहिलो जाँच गर्नेछ कि साझा वस्तु नाममा परिभाषा छ कि छैन। यदि त्यहाँ छ भने, यो फिल्टर वस्तुमा परिभाषाको सट्टा प्रयोग गरिनेछ। साझा वस्तु नाम अवस्थित छैन। यसैले साझा वस्तु नामले केहि प्रकार्यहरूको वैकल्पिक कार्यान्वयन प्रदान गर्न प्रयोग गर्न सकिन्छ, सम्भवतः डिबगिङ वा मेशिन विशिष्ट प्रदर्शनको लागि।

यो विकल्प एक पटक भन्दा बढी निर्दिष्ट हुन सक्छ। DT_AUXILARYARY प्रविष्टिहरू क्रमबद्ध गरिनेछ जुन तिनीहरू कमान लाइनमा देखा पर्दछ।

-F नाम

--फिल्टर नाम

ELF साझा वस्तु सिर्जना गर्दा, आन्तरिक DT_FILTER फिल्ड निर्दिष्ट नाममा सेट गर्नुहोस्। यसले गतिशील लिङ्करलाई बताउँछ जुन साझा वस्तुको प्रतीक तालिका सिर्जना गरिएको छ जुन साझा वस्तु नामको प्रतीक तालिकामा फिल्टरको रुपमा प्रयोग गर्नुपर्छ।

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

केहि पुरानो लिङ्कहरूले इनपुट-आउट वस्तु फाइलहरू दुवैका लागि वस्तु-फाईल ढाँचा निर्दिष्ट गर्नका लागि -F विकल्प सम्पूर्ण संकलन टच चेन प्रयोग गर्यो। GNU लिङ्करले यस उद्देश्यका लागि अन्य तंत्रहरू प्रयोग गर्दछ: the -b , --format , --formform विकल्पहरू, लिङ्कर लिपिहरूमा "TARGET" आदेश, र "GNUTARGET" वातावरण चर। GNU लिङ्ककर्ताले ELF साझा वस्तु सिर्जना गर्दा एफ-उप विकल्पलाई बेवास्ता गर्नेछ।

-फिनी नाम

ELF कार्यान्वयनयोग्य वा साझा वस्तु सिर्जना गर्दा, NAME लाई कार्यान्वयनयोग्य वा साझा वस्तु अनलोड गरिएको बेला कल गर्नुहोस्, DT_FINI लाई प्रकार्यको ठेगानामा सेट गरेर। पूर्वनिर्धारित रूपमा लिङ्कले "_fini" लाई कल गर्न प्रकार्यको रूपमा प्रयोग गर्दछ।

-g

उपेक्षा गरियो। अन्य उपकरणहरूसँग अनुकूलताको लागि प्रदान गरिएको।

- जी मूल्य

- gpsize = मान

जीपी रजिष्ट्रेसनमा साइज प्रयोग गरी अनुकूलित हुन वस्तुहरूको अधिकतम साइज सेट गर्नुहोस्। यो वस्तु फाईल स्वरूपहरू जस्तै MIPS ECOFF को लागि मात्र सार्थक हो जसले ठूलो र साना वस्तुहरूलाई विभिन्न भागहरूमा राख्ने समर्थन गर्दछ। यो अन्य वस्तु फाइल ढाँचाका लागि उपेक्षा गरिएको छ।

-h नाम

-नाम = नाम

ELF साझेदारी वस्तु सिर्जना गर्दा, आन्तरिक DT_SONAME फिल्ड निर्दिष्ट नाममा सेट गर्नुहोस्। जब एक कार्यान्वयन योग्य साझा वस्तुसँग सम्बन्धित छ जुन DT_SONAME फिल्ड छ, त्यसपछि जब कार्यान्वयनयोग्य चलिरहेको गतिशील लिङ्ककर्ताले DT_SONAME फिल्ड द्वारा निर्दिष्ट गरिएको लिङ्कलाई लिङ्करमा फाइल नामको प्रयोग गरी लोड गर्न प्रयास गर्नेछ।

-i

एक वृद्धिशील लिङ्क (जस्तै विकल्प -आर ) प्रदर्शन गर्नुहोस्।

-init नाम

ELF कार्यान्वयनयोग्य वा साझा वस्तु सिर्जना गर्दा, NAME लाई कार्यान्वयनयोग्य वा साझेदारी गरिएको वस्तु लोड भएको बेला कल गर्नुहोस् DT_INIT लाई प्रकार्यको ठेगानामा सेट गरेर। पूर्वनिर्धारित रूपमा लिङ्कले "_init" लाई प्रकार्यको रूपमा कल गर्न प्रयोग गर्दछ।

-l संग्रह

--library = संग्रह

अभिलेख फाइल फाइल जोड्नका लागि फाइलहरूको सूचीमा थप्नुहोस्। यो विकल्प कुनै पनि पटक प्रयोग गर्न सकिन्छ। ld हरेक संग्रहको लागि "libarchive.a" को घटनाहरूका लागि यसको पथ-सूची खोजी गर्नेछ।

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

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

हेर्नुहोस् - ( लिङ्कलाई बलियो बनाउन एकाधिक अभिलेख संग्रहण गर्नका लागि विकल्प धेरै चोटि।

तपाईले समान संग्रह एकाधिक समयलाई आदेश लाइनमा सूचीबद्ध गर्न सक्नुहुनेछ।

यो प्रकारको सङ्ग्रह खोज खोजी युनिक्स लिङ्कहरूको लागि मानक हो। यद्यपि, यदि तपाईं ld onAIX प्रयोग गर्दै हुनुहुन्छ भने, नोट गर्नुहोस् कि यो AIX लिंकरको व्यवहारबाट फरक छ।

-L searchdir

- लिपि-पथ = खोजीडाइर

मार्ग खोज सूचीमा राख्नुहोस् पथहरूको सूची जुन ld सङ्ग्रह पुस्तकालयहरू र ld नियन्त्रण स्क्रिप्टहरूको खोजी गर्नेछ। तपाईले यो विकल्पको कुनै पनि पटक प्रयोग गर्न सक्नुहुनेछ। डाइरेक्टरीहरू क्रममा खोजी गरिन्छ जुन तिनीहरू आदेश लाइनमा निर्दिष्ट छन्। आदेश रेखामा निर्दिष्ट गरिएका डाइरेक्टरीहरू पूर्वनिर्धारित निर्देशिकाहरू भन्दा खोजी गरिएका छन्। सबै -एल विकल्पहरू सबै -ल विकल्पहरूमा लागू हुन्छन्, बिना क्रम देखा पर्दछ।

यदि खोजीडाइर "=" सँग सुरु हुन्छ भने, "=" साइस्रोट उपसर्गद्वारा प्रतिस्थापित गरिनेछ, लिङ्क कन्फिगर हुँदा निर्दिष्ट गरिएको निर्दिष्ट मार्ग।

पथहरूको पूर्वनिर्धारित सेट खोजी गरियो (बिना -L- निर्दिष्ट निर्दिष्ट गरिएको) मा निर्भर गर्दछ जुन ईमुलेशन मोड LD प्रयोग गरिन्छ, र केहि अवस्थाहरूमा पनि कन्फिगर गरिएको थियो।

पथहरू पनि "SEARCH_DIR" आदेशको साथ लिङ्क लिपिमा निर्दिष्ट गर्न सकिन्छ। यस तरिका निर्दिष्ट गरिएको डाइरेक्टरीहरूले पोष्ट लाइनमा लिङ्कर लिपि देखा पर्ने कुरामा खोजिएको छ।

-म अनुकरण

इम्युलेशन लिङ्कलाई समेट्नुहोस्। तपाईं उपलब्ध एव्युलेशनहरू - सर्भर वा -V विकल्पहरूसँग सूचीबद्ध गर्न सक्नुहुनेछ।

यदि -m विकल्प प्रयोग गरिएको छैन भने, एमुलेसन "LDEMULATION" वातावरण चरबाट लिइएको छ, यदि यो परिभाषित गरिएको छ।

अन्यथा, पूर्वनिर्धारित इम्युसनले लिङ्क कन्फिगर गरिएको कसरी गर्ने भनेर निर्भर गर्दछ।

-एम

- छाप्ने-नक्सा

लिङ्क नक्शा मानक आउटपुटमा छाप्नुहोस्। लिङ्क नक्साले लिङ्कको बारेमा जानकारी प्रदान गर्दछ, निम्न समावेश सहित:

*

जहाँ फाइलहरू र प्रतीकहरू वस्तु मेमोरीमा म्याप गरिन्छ।

*

कसरी सामान्य प्रतीक आवंटित गरिन्छ।

*

सबै सङ्ग्रह सदस्यहरूले लिङ्कमा सामेलको उल्लेखको साथ समावेश गरेका थिए जुन अङ्ग्रेजी सदस्यलाई ल्याइयो।

-n

--म्याटिक

खण्डहरूको पृष्ठ पङ्क्तिबद्धता बन्द गर्नुहोस्, र यदि सम्भव भए "आउटपुट" को रूपमा आउटपुट चिन्ह लगाउनुहोस्।

-N

--माजिक

पाठ र डेटा सेक्शनहरू पढ्न योग्य र लेख्न योग्य बनाउनुहोस्। साथै, पृष्ठ खण्डलाई पङ्क्तिबद्ध नगर्नुहोस्, र साझा गरिएका पुस्तकालयहरू विरुद्ध लिङ्क असक्षम पार्नुहोस्। यदि आउटपुट ढाँचा यूनिक्स शैली जादुई संख्याहरूलाई समर्थन गर्दछ, आउटपुट "OMAGIC" को रूपमा चिन्ह लगाउनुहोस्।

--no-omagic

यो विकल्पले एन- विकल्पको धेरै प्रभावहरूलाई नकारात्मक बनाउँछ। यसले पढ्ने-मात्र पढ्न पाठ सेक्सन सेट गर्दछ, र डेटा खण्डलाई पृष्ठ-सङ्कलन गर्न बलियो बनाउँछ। नोट - यो विकल्पले साझा पुस्तकालयहरूसँग लिङ्क सक्षम पार्दैन। यसका लागि -बदमै प्रयोग गर्नुहोस्।

-ओ आउटपुट

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

उत्पादनको लागि नामको रूपमा उत्पादनको प्रयोग गर्नुहोस् ld द्वारा उत्पादित; यदि यो विकल्प निर्दिष्ट गरिएको छैन भने, a.out नाम पूर्वनिर्धारित रूपमा प्रयोग गरिन्छ। लिपि आदेश "OUTPUT" ले निर्गत फाइल नाम पनि निर्दिष्ट गर्न सक्छ।

-O स्तर

यदि स्तर शून्य ld भन्दा ठूलो संख्यात्मक मानहरू आउटपुट अनुकूलन गर्दछ भने। यो धेरै लामो समय लाग्न सक्छ र यसैले शायद अन्तिम बाइनरीको लागि मात्र सक्षम हुनुपर्छ।

-q

--मिट-रिक्स

पूर्ण रूपमा लिङ्क गरिएको exececutables मा स्थान परिवर्तन र सामग्री छोड्नुहोस्। लिङ्क विश्लेषण र अप्टिमाइजेसन उपकरणहरू पोस्ट गर्नका लागि यस सूचनाको लागि आवश्यक कार्यान्वयन गर्नका लागि सही परिमार्जन गर्न आवश्यक हुन सक्छ। यसले परिणामहरू ठूलो कार्यान्वयन गर्न सक्छ।

यो विकल्प हाल ELF प्लेटफार्महरूमा मात्रै समर्थित छ।

-r

- सम्बन्धित

Relocatable उत्पादन उत्पन्न गर्नुहोस् --- यदी, आउटपुट फाईल उत्पन्न गर्नुहोस् जुन बदल्न सक्छ इनपुटको रूपमा LD लाई । यो प्राय: आंशिक लिङ्क भनिन्छ। एक साइड इफेक्टको रूपमा, मानक युनिक्स जादुई संख्याहरूको समर्थन गर्ने वातावरणमा, यो विकल्पले "OMAGIC" मा आउटपुट फाईलको म्याजिक नम्बर सेट गर्दछ। यदि यो विकल्प निर्दिष्ट गरिएको छैन भने, पूर्ण फाइल उत्पादन गरिन्छ। जब C ++ कार्यक्रमहरू लिङ्क गर्दै, यो विकल्प निर्माणकर्ताहरूको सन्दर्भहरू समाधान गर्नेछैन ; त्यसो गर्न, प्रयोग गर्नुहोस् --र

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

यो विकल्पले समान काम गर्दछ asi

-आर फाइलनाम

- समाय-प्रतीक = फाइलनाम

फाइलनामबाट प्रतीक नाम र तिनीहरूको ठेगानाहरू पढ्नुहोस्, तर यसलाई रिकोट गर्नुहोस् वा आउटपुटमा समावेश गर्नुहोस्। यसले तपाईंको आउटपुट फाइललाई प्रतीक रूपमा सन्दर्भ गर्न अनुमति दिन्छ कि सम्पूर्ण कार्यक्रमहरू अन्य कार्यक्रमहरूमा परिभाषित मेमोरी। तपाइँ यो विकल्प एक पटक भन्दा बढी प्रयोग गर्न सक्नुहुनेछ।

अन्य ELF लिङ्कहरूसँग अनुकूलताका लागि, यदि फाइल फाइलको सट्टा -आर विकल्प पछि डाइरेक्टरी नामको पालना गरिन्छ, यो -आरपीड विकल्पको रूपमा व्यवहार गरिन्छ।

-s

--स्ट्रिप-सबै

निर्गत फाइलबाट सबै प्रतीक जानकारी मेटाउनुहोस्।

-एस

--स्ट्रिप-डिबग

आउटपुटफाइलबाट डिबगर प्रतीक जानकारी (तर सबै चिन्हहरू होइन) मेटाउनुहोस्।

-t

--ट्रेस

Ld लाई प्रक्रिया गर्नका रूपमा इनपुट फाइलहरूको नामहरू छाप्नुहोस्।

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

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

लिपि लिपिको रूपमा स्क्रिप्टफाइल प्रयोग गर्नुहोस्। यो लिपिले Ld को पूर्वनिर्धारित लिङ्कर लिपिलाई (यसलाई थप्नको लागि) बदल्दछ , त्यसैले आदेशफाइलले आउटपुट फाईल वर्णन गर्न आवश्यक सबै को निर्दिष्ट गर्नु पर्छ। यदि हालको डाइरेक्टरीमा स्क्रिप्टफाइल अवस्थित छैन भने, "ld" यसको कुनैपनि अघिल्लो- एल विकल्पहरूद्वारा निर्दिष्ट डाइरेक्टरीहरूमा यसको लागि देखिन्छ। बहु- टी विकल्पहरू संकलन गर्दछ।

-u प्रतीक

--निर्धारित = प्रतीक

अपरिभाषित प्रतीकको रूपमा आउटपुट फाइलमा प्रविष्ट गर्न बल प्रतीक। यो गर्न सक्छ, उदाहरणका लागि, मानक पुस्तकालयहरूबाट अतिरिक्त मोडलहरूको लिङ्क ट्रिगर गर्नुहोस्। -u अतिरिक्त अपरिभाषित प्रतीकहरू प्रविष्ट गर्न विभिन्न विकल्प आर्गुमेन्टहरूसँग दोहोर्याउन सकिन्छ। यो विकल्प "EXTERN" लिङ्कर स्क्रिप्ट कमानको बराबर छ।

-अरू

C ++ प्रोग्रामहरू भन्दा अन्यका लागि, यो विकल्प -r को बराबर छ - यो: relocatable उत्पादन उत्पन्न गर्दछ --- यानी, एक निर्गत फाइल जो बारीमा इनपुट को लागी LD लाई प्रयोग गर्न सक्छ। जब C ++ कार्यक्रमहरू लिङ्क गर्दै, -यैले निर्माणकर्ताहरूको सन्दर्भ समाधान गर्दछ, विपरीत --आर । यसले प्रयोग गर्न काम गर्दैन - फाइलहरू जुन आफैसँग जोडिएका थिए र - उर ; एक पटक निर्माण तालिका बनाइयो, यसलाई थप गर्न सकिँदैन। प्रयोग गर्नुहोस् -अहिले अन्तिम आंशिक लिङ्कको लागि, र -r अरूका लागि।

युनिक [= SECTION ]

प्रत्येक इनपुट खण्ड SECTION सँग मेल खाने एक अलग उत्पादन खण्ड सिर्जना गर्दछ, वा वैकल्पिक वैकल्पिक वाइल्डकार्ड SECTION तर्क हराएको छ, प्रत्येक अनाथ इनपुट खण्डको लागि। लिङ्कर स्क्रिप्टमा एक अनाथ खण्ड विशेष गरी उल्लेख गरिएको छैन। तपाईले यो विकल्प धेरै पटक कमाई लाइनमा प्रयोग गर्न सक्नुहुन्छ; यसले लिङ्कर लिपि मा आउटपुट सेक्शन असाइनमेन्ट ओवरराइड गरेको नामको साथ इनपुट सेक्शनहरूको सामान्य मर्ज रोक्छ।

-v

--वर्धन

-V

Ld को संस्करण संस्करण प्रदर्शन गर्नुहोस्। यस -V विकल्पले समर्थित उत्सर्जनहरू पनि सूची गर्दछ।

-x

--discard-all

सबै स्थानीय प्रतीकहरू मेट्नुहोस्।

-X

--डेस्कर्ड-स्थानीयहरू

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

-y प्रतीक

--ट्रेस - प्रतीक = चिन्ह

प्रत्येक लिङ्क गरिएको फाइलको नाम छाप्नुहोस् जुन प्रतीक देखिन्छ। यो विकल्प कुनै पनि पटक दिइएको हुन सक्छ। धेरै प्रणालीहरूमा यो अन्डरस्कोर गर्न आवश्यक छ।

यो विकल्प उपयोगी छ जब तपाईंसँग तपाइँको लिङ्कमा अपरिभाषित प्रतीक छ तर थाहा छैन जहाँ सन्दर्भ आउँदैछ।

-Y मार्ग

पूर्वनिर्धारित पुस्तकालय खोजी मार्गमा पथ थप्नुहोस्। यो विकल्प Solaris अनुकूलताको लागि अवस्थित छ।

-z खोजशब्द

मान्यता प्राप्त कुञ्जी शब्दहरू "इन्फिफ्राइ" छन्, "इन्फ्राइभ", "इन्फ्राइभ", "इन्फ्राइभ", "इन्फ्राइभ", "इन्फ्राइभ", "लोडफ्रन्ट", "नोडफल्टलिब", "नोडिडल्टलिब", "नोडलाइट", "नोडलोप", "नोडम्प", "अब", "मूल", "Combreloc", "nocombreloc" र "नोकोप्लिइरो" "। अन्य किबोर्डहरू सोलिसिस अनुकूलताको लागि उपेक्षित छन्। "initfirst" वस्तुलाई पहिले कुनै पनि अन्य वस्तुहरू भन्दा पहिले राइमटाइममा प्रारम्भ गर्न सकिन्छ। "हस्तक्षेप गर्नुहोस्" वस्तुमा चिन्ह लगाउँदछ जुन यसको प्रतीक तालिका सबै प्रतीकहरू भन्दा पहिले हस्तक्षेप गर्दछ तर प्राथमिक कार्यान्वयनयोग्य। "लोडफ्लू" वस्तुमा प्वाइन्टमा तुरुन्तै प्रशोधन गरिएको वस्तुलाई चिन्ह लगाउँदछ। "nodefaultlib" यो वस्तुको निर्भरताहरूका लागि खोजी बेवास्ता गर्दछ। कुनै पूर्वनिर्धारित पुस्तकालय खोजी मार्गहरू। "nodelete" वस्तुलाई अंकलाई अनलाईन गर्न सकिँदैन। "नोडलोन" वस्तु "dlopen" मा उपलब्ध उपलब्ध छैन। "नोडम्प" ले वस्तुलाई "dldump" द्वारा डम्प गर्न सकिदैन। "अब" वस्तुले गैर-सट्टा रनटाइम बाध्यकारी वस्तुमा चिन्ह लगाउँछ। "मूल" मा चिन्ह $ ORIGIN हुन सक्छ। "defs" अपरिभाषित प्रतीकहरू अस्वीकार गर्दछ। "muldefs" बहु परिभाषाहरू अनुमति दिन्छ। "combreloc" बहु रिजोलेशन खण्डहरू जोड्दछ र तिनीहरूलाई गतिशील प्रतीक लुकअप क्यासिंग सम्भव बनाउन दिन्छ।

"nocombreloc" संयोजन बहु रिकोक खण्डहरू अक्षम गर्दछ। "nocopyreloc" प्रतिलिपि रिक्सको उत्पादनलाई अक्षम बनाउँछ।

- ( अभिलेख -)

- सुरुवात समूह अभिलेख --अन्त-समूह

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

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

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

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

--no-accept-unknown-input-arch

लिङ्ककर्तालाई इनपुट फाइलहरू स्वीकार गर्न को लागी बताउँछ जसको वास्तुकला पहिचान गर्न सकिदैन। धारणा यो हो कि प्रयोगकर्ताले तिनीहरू के गर्दैछन् थाहा छ र जानबूझै यी अज्ञात इनपुट फाईलमा लिंक गर्न चाहन्छ। यो लिङ्कको पूर्वनिर्धारित व्यवहार थियो, 2.14 रिलीज गर्नु अघि। रिलीज 2.14 पछि डिफल्ट व्यवहार भनेको यस्तो इनपुट फाईलहरू अस्वीकार गर्नु हो र यसैले पुरानो व्यवहार पुनर्स्थापित गर्न --accept-unknown-input-arch विकल्प थपिएको छ।

कुञ्जीशब्द खोज्नुहोस्

यो विकल्प SunOS अनुकूलताको लागि उपेक्षा गरिएको छ।

- गतिशील

-dy

-call_shared

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

-समूह

गतिशील खण्डमा "DT_FLAGS_1" प्रविष्टिमा "DF_1_GROUP" झण्डा सेट गर्नुहोस्। यसले रनटाइम लिंकरले यस वस्तुमा लुकअपहरू ह्यान्डल गर्न र यसको निर्भरता केवल समूह भित्र प्रदर्शन गर्नको कारण दिन्छ। --अन-अपरिभाषित गरिएको छ। यो विकल्प केवल ELF प्लेटफार्महरूमा मात्र अर्थपूर्ण छ जुन साझा पुस्तकालयहरू समर्थन गर्दछ

-बोस्ट्याट

-dn

-non_shared

-static

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

-बीएसएमबोलिक

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

--चेक-सेक्शनहरू

- न्यु-चेक-सेक्शनहरू

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

--सीफ

क्रस सन्दर्भ तालिका निर्गत गर्नुहोस्। यदि लिङ्कर नक्सा फाइल उत्पन्न हुँदैछ भने, क्रस सन्दर्भ तालिका नक्शा फाइलमा प्रिन्ट गरिएको छ। अन्यथा, यो मानक उत्पादनमा छापिएको छ।

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

--no-define-common

यो विकल्पले आम प्रतीकहरूलाई ठेगानाहरूको असाइनमेन्टलाई रोक्दछ। स्क्रिप्ट आदेश "INHIBIT_COMMON_ALLOCATION" सँग एकै प्रभाव छ।

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

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

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

--ममनले [= शैली ]

--न-डेमिलले

यी विकल्पहरूले नियन्त्रण सन्देशहरू र अन्य आउटपुटमा प्रतीक नामहरू ध्वस्त पार्न कि गर्दैन नियन्त्रण गर्दछ। जब लिङ्कलाई डेमिलले भनिन्छ, यो पढ्नयोग्य फर्ममा प्रतीक नामहरू प्रस्तुत गर्न प्रयास गर्दछ: यदि यो वस्तु फाइल ढाँचाद्वारा प्रयोग गरिन्छ भने पूर्वनिर्धारितहरू स्ट्रिप गर्दछ, र प्रयोगकर्ताहरू पठाउन योग्य नामहरूमा C ++ मार्जिन प्रतीक नामहरू कन्भर्ट गर्दछ। विभिन्न compilers सँग विभिन्न मंगोल शैलीहरू छन्। वैकल्पिक डाइमिङ्गलिंग स्टाइल तर्कले तपाइँको कम्पाइलरको लागि उपयुक्त डेमलिंग शैली चयन गर्न प्रयोग गर्न सकिन्छ। लिङ्कर पूर्वनिर्धारित रूपमा डिम्याङ्ग हुनेछ जब सम्म पर्यावरण चर COLLECT_NO_DEMANGLE सेट गरिएको छैन। यी विकल्पहरू पूर्वनिर्धारित ओभरराइड गर्न प्रयोग गर्न सकिन्छ।

- डायनामिक-लिङ्कर फाईल

डायनामिक लिङ्करको नाम सेट गर्नुहोस्। गतिशील रूपमा संलग्न एएलएफ कार्यान्वयनयोग्य जब उत्पन्न गर्दै यो मात्र अर्थपूर्ण हुन्छ। पूर्वनिर्धारित गतिशील लिंकर सामान्य रूपमा सही छ; तपाईंले प्रयोग गरिरहनुभन्दा सम्म यो प्रयोग नगर्नुहोस्।

--मार्जित-रिजक्स

यो विकल्प केवल सार्थक छ जब MIPS एम्बेडेड PIC कोड लिङ्क, जीएमयू कम्पाइलर र सम्बोधनकर्ता -मार्जित-तस्वीर विकल्प द्वारा उत्पन्न। यसले लिङ्ककर्तालाई तालिका सिर्जना गर्नको लागि जुन कुनै पनि डेटा को स्थानान्तरण गर्न को लागी रनटाइममा प्रयोग गर्न सकिन्छ जुन स्थिर रूपमा सूचक मानहरूमा प्रारम्भ गरिएको थियो। विवरणहरूको लागि परीक्षण परीक्षा / ld-empic मा कोड हेर्नुहोस्।

- घातक चेतावनी

सबै चेतावनीहरूलाई त्रुटिको रूपमा व्यवहार गर्नुहोस्।

--force-exe-suffix

सुनिश्चित गर्नुहोस् कि आउटपुट फाइलसँग .exe फाईल छ।

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

--no-gc-sections

- जीसी-खण्डहरू

अप्रयुक्त इनपुट सेक्शन को कचरा संग्रह सक्षम गर्नुहोस्। यो लक्ष्यमा बेवास्ता गरिएको छ जुन यस विकल्पलाई समर्थन गर्दैन। यो विकल्प -r सँग मिल्दो छैन, न त यसलाई गतिशील लिङ्कसँग प्रयोग गर्नुपर्छ। पूर्वनिर्धारित व्यवहार (यो कचरा संग्रह प्रदर्शन गर्ने) निर्दिष्ट गर्न सकिंदैन --no-gc-section आदेश रेखामा।

--help

मानक आउटपुटमा आदेश-लाइन विकल्पहरूको सारांश छाप्नुहोस् र बाहिर निस्कनुहोस्।

- लक्षित - सहयोग

मानक आउटपुटमा सबै लक्षित विशिष्ट विकल्पहरूको सारांश छाप्नुहोस् र बाहिर निस्कनुहोस्।

-नक्सा नक्साफाइल

लिङ्क नक्शा नक्सा नक्साफाइलमा छाप्नुहोस् । माथि-एम विकल्पको विवरण हेर्नुहोस्।

--नन-मेमोरी

ld लाई सामान्य रूपमा गति मेमोरी प्रयोगमा स्मृतिको इनपुट फाइलहरूको प्रतीक क्याच गरेर स्मृतिको लागि अनुकूलित गर्दछ। यो विकल्पले एलडीलाई मेमोरी प्रयोगको लागि अनुकूलन गर्न आवश्यक छ, आवश्यक रूपमा आवश्यक चिन्ह तालिकाहरू द्वारा। यो आवश्यक हुन सक्छ यदि ठूलो कार्यान्वयन गर्न लिङ्क गर्दा ld मेमोरी स्पेसबाट बाहिर जान्छ।

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

-z defs

सामान्यतया गैर-प्रतीकात्मक साझेदारी लाइब्रेरी सिर्जना गर्दा, अपरिभाषित प्रतीकहरूलाई अनुमति दिइन्छ र बायाँसमय लोडकर्ता द्वारा समाधान गर्न बाँकी छ। यी विकल्पहरूले यस्ता अपरिभाषित प्रतीकहरूलाई अनुमति दिँदैन।

--अधिक-एकाधिक परिभाषा

-z muldefs

साधारणतया जब एक प्रतीक बहुविध पटक परिभाषित गरिन्छ, लिङ्करले घातक त्रुटि रिपोर्ट गर्नेछ। यी विकल्पहरू बहुविध परिभाषाहरूलाई अनुमति दिन्छ र पहिलो परिभाषा प्रयोग गरिनेछ।

--all-shlib-undefined

साझा गरिएका वस्तुहरूमा अपरिभाषित प्रतीकहरूलाई अनुमति दिनुहोस् जब पनि - नन-अपरेटेड सेट गरिएको छ। नेट परिणाम यो हुनेछ कि नियमित वस्तुहरूमा अपरिभाषित प्रतीकहरूले अझै पनि एउटा त्रुटि ट्रिगर गर्नेछ, तर साझा वस्तुहरूमा अपरिभाषित प्रतीकहरूलाई उपेक्षा गरिनेछ। No_undefined को कार्यान्वयन ले धारणा अपरिभाषित प्रतीकहरु मा दबाइने को लागी रनटाइम लिंकर हुनेछ। तर त्यहाँ कम्तिमा एक प्रणाली हो (BeOS) जहाँ साझा गरिएका पुस्तकालयहरूमा अपरिभाषित प्रतीकहरू सामान्य छ किनकि कर्नेलले लोड समयमा उनलाई खाली गर्ने कामलाई हालको वास्तुकलाका लागि कुन कार्य उपयुक्त छ भनेर चयन गर्न सक्दछ। IE गतिशील रूपमा एक उपयुक्त memset प्रकार्य चयन गर्नुहोस्। जाहिर छ यो एचपीपीका पुस्तकालयहरूसँग अपरिभाषित प्रतीकहरूको लागि सामान्य छ।

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

सामान्य रूपमा जब एक प्रतीक एक अपरिभाषित संस्करण छ, लिंकर यसलाई उपेक्षा गर्नेछ। यस विकल्पले अपरिभाषित संस्करणको साथ प्रतीकहरूलाई अनुमति दिन्छ र एक घातक त्रुटि यसको सट्टा जारी गरिनेछ।

--नोट-चेतावनी-बेमेल

सामान्यतया ld एक त्रुटि दिनेछ यदि तपाईं इनपुट फाईलहरू एकसाथ जोड्न प्रयास गर्नुहुन्छ जुन केहि कारणका लागि बेमेल गरिएको छ, सम्भवतः तिनीहरू विभिन्न प्रोसेसरका लागि वा विभिन्न ईन्टिआइनेसनेसहरूका लागि संकलन गरिएको छ। यो विकल्पले एलडीलाई बताउँछ कि यो कुकुरले यस्ता सम्भावित त्रुटिहरूलाई अनुमति दिनुपर्छ। यो विकल्प केवल हेरचाहको साथ प्रयोग गरिनु पर्छ, जब तपाईँ केही विशेष कार्य लिनु भएको छ जुन लिङ्क त्रुटिहरू अनुपयुक्त छन् भनेर सुनिश्चित गर्दछ।

--नू-सारा-संग्रह

पछिल्लो सङ्ग्रह फाइलहरूको लागि whole-archive विकल्प को प्रभाव बन्द गर्नुहोस्।

--नोटिबिट-कार्यान्वयन

जब पनि यो अझै पनि प्रयोग योग्य छ भने कार्यान्वयनयोग्य आउटपुट फाइल पुन: राख्नुहोस्। साधारणतया, लिङ्कले आउटपुट फाईल उत्पादन गर्दैन यदि यसले लिङ्क प्रक्रियाको क्रममा त्रुटिहरू पार गर्दछ; यो कुनै आउटपुट फाइल लेख्न को लागी बाहिर आउछ जब यसले कुनै पनि त्रुटिमा समस्या गर्दछ।

-अस्टस्ट्रिब

केवल खोजी निर्देशिका निर्देशिकाहरू स्पष्ट रूपमा आदेश रेखामा निर्दिष्ट गरिएको छ। लिङ्कर लिपिहरूमा निर्दिष्ट गरिएको लाइब्रेरी डाइरेक्टरीहरू (आदेश आदेशमा निर्दिष्ट लिंकर लिपिहरू सहित) उपेक्षित छन्।

--सूचना आउटपुट ढाँचा

ld एक भन्दा बढी प्रकारको वस्तु फाइल समर्थन गर्न कन्फिगर हुन सक्छ। यदि तपाईंको ld यस तरिका कन्फिगर गरिएको छ भने, आउटपुट फाइल फाइलको लागि बाइनरी ढाँचा निर्दिष्ट गर्न --formform विकल्प प्रयोग गर्न सक्नुहुन्छ। वैकल्पिक वस्तु ढाँचाहरू समर्थन गर्नको लागि ld कन्फिगर गरिएको भए तापनि तपाईँ सामान्यतया यो निर्दिष्ट गर्न आवश्यक छैन किनकि ld प्रत्येक मेनुमा सबै भन्दा सामान्य ढाँचा पूर्वनिर्धारित आउटपुट ढाँचाको रूपमा उत्पादन गर्न कन्फिगर गरिएको हुनुपर्छ। आउटपुट-ढाँचा एक पाठ स्ट्रिङ हो, BFD पुस्तकालयहरू द्वारा समर्थित एक विशेष ढाँचाको नाम। (तपाईं objdump -i सँग उपलब्ध बाइनरी ढाँचा सूची गर्न सक्नुहुन्छ) स्क्रिप्ट आदेश "OUTPUT_FORMAT" ले आउटपुट ढाँचा पनि निर्दिष्ट गर्न सक्छ, तर यो विकल्प यो ओवरराइड गर्दछ।

-म्याटिक

यो विकल्प लिनक्स अनुकूलताका लागि उपेक्षा गरिएको छ।

-Qy

यो विकल्प SVR4 अनुकूलताको लागि उपेक्षा गरिएको छ।

--relax

मेसिन आश्रित प्रभावहरूको साथ एक विकल्प। यो विकल्प केवल केहि लक्ष्यमा समर्थित छ।

केहि प्लेटफार्महरुमा, --एक्सक्सक्स विकल्प वैश्विक अनुकूलन को प्रदर्शन गर्दछ जुन संभवतः जब लिंकर प्रोग्राम मा संबोधित गर्दछ, त्यहि आराम देखि ठेगाना मोड र आउटपुट ऑब्जेक्ट फाइल मा नयाँ निर्देशहरु synthesizing।

केही प्लेटफार्महरूमा यी लिंक समय विश्वव्यापी अनुकूलनले परिणामकारी कार्यान्वयनयोग्य असंभवको प्रतीकात्मक डिबग गर्न सक्छ। यो प्रोसेसर को Matsushita MN10200 र MN10300 परिवार को लागि मामला हो जानिन्छ।

प्लेटफर्ममा जहाँ यो समर्थित छैन, --relax स्वीकार गरिन्छ, तर बेवास्ता गरिएको छ।

--ट्रेन्स-प्रतीक-फाईल फाइलनाम

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

- अफर-प्रतीक-फाइलले अपरिभाषित प्रतीकहरू खारेज गर्दैन, वा स्थानान्तरणका लागि आवाश्यक प्रतीकहरू खारेज गर्दैन।

तपाईले मात्र निर्दिष्ट गर्न सक्छ --retain-symbols-file command line मा एक पटक। यो ओभरराइड गर्दछ -सएस

-rpath dir

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

-प्राथम विकल्प पनि SunOS मा प्रयोग गर्न सकिन्छ। पूर्वनिर्धारित रूपमा, SunOS मा, लिङ्कले सबै- एल विकल्पहरू दिइएका मध्ये एक रनटाइम खोज प्याच बनाउनेछ। यदि एक- राड विकल्प प्रयोग गरिन्छ, रन-टाइम खोजी मार्ग विशेष रूपमा आरआरपी विकल्पहरू प्रयोग गरेर, एल- विकल्पहरू उपेक्षा गर्दछ। जीसीसी प्रयोग गर्दा यो उपयोगी हुन सक्छ, जसले धेरै थप्छ - एल विकल्पहरू जुन NFS मा फाईल प्रणालीहरू माउन्ट हुन सक्छ।

अन्य ELF लिङ्कहरूसँग अनुकूलताका लागि, यदि फाइल फाइलको सट्टा -आर विकल्प पछि डाइरेक्टरी नामको पालना गरिन्छ, यो -आरपीड विकल्पको रूपमा व्यवहार गरिन्छ।

राहत-लिंक DIR

ELF वा SunOS प्रयोग गर्दा, एक साझा लाइब्रेरीलाई अर्को आवश्यक पर्न सक्छ। यो हुन्छ जब "ld -shared" लिङ्कमा एक इनपुट फाइलहरू को रूपमा एक इनपुट फाइलहरू समावेश गर्दछ।

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

यो विकल्प सावधानी संग प्रयोग गर्नु पर्छ किनकि यो खोजी पथलाई सजिलो भण्डारणमा सजिलो हुन सक्छ जुन ओभरराइड गर्दछ। यस्तो अवस्थामा यो रनबाइम लिङ्करले भन्दा अनियमित रूपमा फरक खोजी मार्ग प्रयोग गर्न सम्भव छ।

लिङ्कर आवश्यक साझे पुस्तकालयहरू पत्ता लगाउन निम्न खोजी मार्गहरूको प्रयोग गर्दछ।

1।

-पैड-लिङ्क विकल्प द्वारा निर्दिष्ट कुनै डाइरेक्टरीहरू।

2।

राहत विकल्पहरू द्वारा निर्दिष्ट कुनै डाइरेक्टरीहरू। -प्राथमराहत-लिङ्कको बीचमा फरक छ कि राहत विकल्पहरू द्वारा निर्दिष्ट गरिएका निर्देशिकाहरू कार्यान्वयनयोग्य र रनटाइममा प्रयोग गरिएका छन्, जबकि -rpath-link विकल्प लिङ्क समयमा मात्र प्रभावकारी हुन्छ। यो मात्र मूल लिङ्करको लागि हो।

3।

एक ELF प्रणालीमा, यदि -rpath र "rpath-link" विकल्पहरू प्रयोग भएन भने, पर्यावरण चरको सामग्री "LD_RUN_PATH" खोज्नुहोस्। यो मात्र मूल लिङ्करको लागि हो।

4।

SunOS मा, यदि -आरपीपी विकल्प प्रयोग गरिएको थिएन भने -L विकल्पहरू प्रयोग गरी निर्दिष्ट निर्देशिकाहरू खोज्नुहोस्।

5।

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

6।

एक स्थानीय ELF लिङ्ककर्ताको लागि, "DT_RUNPATH" वा "DT_RPATH" साझेदारी लाइब्रेरीको डाइरेक्ट्रीहरू यसको खोजी गरिएको साझा पुस्तकालयहरूको खोजी गरीएको छ। यदि "DT_RUNPATH" प्रविष्टिहरू अवस्थित छन् भने "DT_RPATH" प्रविष्टिहरू उपेक्षा गरिएका छन्।

7।

डिफल्ट निर्देशिकाहरू, सामान्यतया / lib/ usr / lib

8।

एएलएफ प्रणालीमा एक देशी लिङ्करको लागि, यदि फाइल /etc/ld.so.conf अवस्थित छ, त्यस फाइलमा डाइरेक्टरीहरूको सूची भेटिन्छ।

यदि आवश्यक साझेदारी लाइब्रेरी फेला परेन भने, लिंकरले चेतावनी जारी गर्नेछ र लिंकसँग जारी राख्नेछ।

-शेयर गरिएको

-उपयोग्य

साझेदारी गरिएको पुस्तकालय सिर्जना गर्नुहोस्। यो हाल ELF, XCOFF र SunOS प्लेटफार्महरूमा मात्र समर्थित छ। SunOS मा, लिङ्कर स्वचालित रूपमा एक साझा लाइब्रेरी सिर्जना गर्नेछ यदि -e विकल्प प्रयोग भएन र लिंकमा अपरिभाषित प्रतीकहरू छन्।

--सर्भर-सामान्य

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

--split-by-file [ size ]

जस्तै --split-by-reloc तर साइज पुग्दा प्रत्येक इनपुट फाइलको लागि नयाँ उत्पादन खण्ड सिर्जना गर्दछ। आकारको पूर्वनिर्धारित 1 साइजमा यदि दिइएको छैन।

--split-by-reloc [ count ]

निर्गत फाईलमा थप खण्डहरू सिर्जना गर्न प्रयास गर्दछ ताकि फाइलमा कुनै पनि आउटपुट खण्ड गणना गणना भन्दा अधिक समावेश गर्दछ। यो उपयोगी छ जब COFF वस्तु फाइल ढाँचाको साथ निश्चित वास्तविक समय कर्नेलहरूमा डाउनलोड गर्नको लागि ठूला रिटोकेट फाइलहरू सिर्जना गर्दै; चूंकि COFFcannot एक सेक्शन मा 65535 देखि अधिक रिलीज को प्रतिनिधित्व गर्दछ। ध्यान दिनुहोस् कि यो वस्तु फाईल स्वरूपहरूसँग काम गर्न असफल हुनेछ जुन मनमानेक सेक्शनहरू समर्थन गर्दैन। लिङ्करले पुन: वितरणको लागि व्यक्तिगत इनपुट सेक्सनहरू विभाजन गर्दैन, त्यसैले यदि एक इनपुट सेक्शनले गणना गन्तव्य भन्दा बढी समावेश गर्दछ भने एक आउटपुट सेक्सनमा धेरै रिजर्भेसनहरू समावेश हुनेछन्। 32768 को एक मान को लागि पूर्वनिर्धारित गणना

--स्टाट्स

लिंकरको अपरेसनको बारेमा तथ्याङ्क कम्प्युट गर्नुहोस् र प्रदर्शन गर्नुहोस् जस्तै कार्यान्वयन समय र मेमोरी उपयोग।

--ट्र्याटिक-ढाँचा

केहि लक्ष्यका लागि, केहि अवस्थित लिङ्करको उत्पादनबाट केहि तरिकामा ld को उत्पादन फरक छ। यो स्विचले LD लाई सट्टा पारंपरिक ढाँचा प्रयोग गर्न अनुरोध गर्दछ।

उदाहरणका लागि, SunOS मा, एलडीले डुप्लिकेट प्रविष्टिहरूलाई प्रतीक स्ट्रिंग तालिकामा मिलाउँछ। यसले पूर्ण डिबगिङ जानकारीको साथ 30 प्रतिशत भन्दा बढि आउटपुट फाइलको आकार घटाउन सक्छ। दुर्भाग्यवश, SunOS "dbx" कार्यक्रम परिणामकारी कार्यक्रम पढ्न सक्दैन ("gdb" सँग कुनै समस्या छैन)। The --traditional-format switch ले LD लाई डुप्लिकेट प्रविष्टिहरू संयोजन गर्दैन।

--अनुच्छेद-सुरु सेक्शननाम = org

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

-टेब्स org

-टत्ता डाटा

-टेक्टिङ्ग org

Org --- क्रमशः --- "bss", "डेटा", वा आउटपुट फाइलको "पाठ" खण्डको लागि सुरु ठेगानाको रूपमा org प्रयोग गर्नुहोस्। org एकल हेक्साडेसिमल पूर्णाङ्क हुनु पर्छ; अन्य लिंकरहरूसँग अनुकूलताका लागि, तपाईले 0x लाई सामान्यतया हेक्सडेसिमल मानसँग सम्बन्धित हुन सक्नुहुनेछ।

--dll-verbose

--अगाडि

Ld को लागि संस्करण नम्बर प्रदर्शन गर्नुहोस् र लिङ्क इम्युलेशनहरू समर्थित सूचीबद्ध गर्नुहोस्। कुन इनपुट फाइलहरू खोल्न सकिन्छ र खोल्न सक्दैन। लिङ्क द्वारा लिङ्क लिङ्क लिपि प्रदर्शन गर्नुहोस्।

- संस्करण-स्क्रिप्ट = संस्करण-स्क्रिप्टफाइल

लिङ्कमा संस्करण संस्करण लिपि निर्दिष्ट गर्नुहोस्। यो सामान्यतया प्रयोग गरिएको पुस्तकालयहरूको सिर्जना संस्करण संस्करणमा थप जानकारी निर्दिष्ट गर्न साझेदारी पुस्तकालयहरू प्रयोग गर्दा प्रयोग गरिन्छ। यो विकल्प केवल ELF प्लेटफार्महरूमा मात्र अर्थपूर्ण छ जुन साझा पुस्तकालयहरू समर्थन गर्दछ।

- वार्न-सामान्य

जब एक सामान्य प्रतीक अर्को साधारण प्रतीकसँग वा प्रतीक परिभाषाको साथ संयुक्त हुन्छ वा चेतावनी दिनुहोस्। यूनिक्स लिङ्करहरूले यो केही हदसम्म स्ल्योप प्रकृयालाई अनुमति दिन्छन्, तर केही अन्य अपरेटिङ सिस्टमहरूमा लिङ्कहरू छैनन्। यो विकल्पले तपाईंलाई वैश्विक प्रतीकहरू संयोजन गर्न सम्भावित समस्याहरू फेला पार्न अनुमति दिन्छ। दुर्भाग्यवश, केही सी पुस्तकालयहरू यो अभ्यास प्रयोग गर्छन्, त्यसैले तपाईंले पुस्तकालयहरू र साथै तपाईंको कार्यक्रमहरूमा प्रतीकहरूको बारेमा केही चेतावनी पाउन सक्नुहुनेछ।

त्यहाँ तीन प्रकारका वैश्विक प्रतीकहरू छन्, यहाँ सी उदाहरणहरूद्वारा चित्रण गरिएको:

int i = 1;

एक परिभाषा, जुन आउटपुट फाइलको प्रारम्भिक डेटा सेक्सनमा जान्छ।

extern int i;

एक अपरिभाषित सन्दर्भ, जुन ठाउँ आवंटित गर्दैन। त्यहाँ कुनै ठाँउको लागि एक परिभाषा वा एक सामान्य प्रतीक हुनुपर्छ।

int i;

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

--वार्न-सामान्य विकल्पले पाँच प्रकारको चेतावनी उत्पादन गर्न सक्छ। प्रत्येक चेतावनी रेखाको जोडीको हो: पहिलेको प्रतीकले मात्र वर्णन गरेको छ, र दोस्रोले सोही नामको सामना गरेको अघिल्लो प्रतीक वर्णन गर्दछ। एक वा दुई दुबै प्रतीकहरू एक साधारण प्रतीक हुनेछन्।

1।

सन्दर्भमा एक सामान्य प्रतीक बदल्दै, किनकि पहिले नै प्रतीकको लागि परिभाषा हो।

<फाइल> (<खण्ड>): चेतावनी: `<प्रतीक> को सामान्य <परिभाषा> द्वारा ओभरराइड <फाइल> (
): चेतावनी: यहाँ परिभाषित

2।

सन्दर्भमा एक सामान्य प्रतीक बदलिँदै, किनकि पछिको प्रतीकको लागि पछिको परिभाषा सामना भएको छ। यो अघिल्लो अवस्थामा जस्तै हो, बाहेक प्रतीकहरू फरक क्रममा सामना भइरहेको छ।

<फाइल> (<खण्ड>): चेतावनी: `<प्रतीक> को परिभाषा सामान्य (
) ओवरराइड: चेतावनी: सामान्य यहाँ छ

3।

अघिल्लो समान-आकारको सामान्य प्रतीकसँग एक सामान्य प्रतीक मर्ज गरिँदै।

<फाइल> (<खण्ड>): चेतावनी: `<प्रतीक> '<फाइल> (<खण्ड>) को धेरै आम: चेतावनी: अघिल्लो सामान्य यहाँ छ

4।

अघिल्लो ठूलो आम प्रतीकसँग एक सामान्य प्रतीक मर्ज गरिँदै।

<फाइल> (<खण्ड>): चेतावनी: `सामान्य <` प्रतीक> को भन्दा ठूलो आम <फाइल> (<खण्ड>) द्वारा ओभरराइड गरिएको छ: चेतावनी: ठूला साधारण यहाँ छ।

5।

अघिल्लो सानो सामान्य प्रतीकसँग एक सामान्य प्रतीक मर्ज गरिँदै। यो अघिल्लो अवस्थामा जस्तै हो, बाहेक प्रतीकहरू फरक क्रममा सामना भइरहेको छ।

<फाइल> (<खण्ड>): चेतावनी: सामान्य <`प्रतीक> को सामान्य (
) को ओभरराइड: चेतावनी: सानो सामान्य यहाँ छ

- वार्न-निर्माणकर्ता

यदि कुनै पनि वैश्विक निर्माणकर्ता प्रयोग गरिन्छ भने चेतावनी दिनुहोस्। यो केहि वस्तु फाइल ढाँचाका लागि मात्र उपयोगी छ। COFF वा ELF जस्तै ढाँचाहरूका लागि लिङ्कले वैश्विक निर्माणकर्ताहरूको प्रयोग पत्ता लगाउन सक्दैन।

--warn-multiple-gp

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

--वार्न-एक पटक

प्रत्येक अपरिभाषित प्रतीकका लागि एक चोटि मात्र चेतावनी दिनुहोस्, प्रति मोडलमा एक मोडल जसले यसलाई बुझाउँछ।

--वार्न-सेक्शन-पङ्क्तिबद्ध गर्नुहोस्

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

--जोल-संग्रह

प्रत्येक संग्रहका लागि आदेश - रेखामा उल्लेखित आदेश रेखामा उल्लेखितका लागि, आवश्यक वस्तु फाईलहरूका लागि सङ्ग्रह खोजी गर्नुको सट्टा लिंकमा प्रत्येक वस्तु फाईल लिङ्कमा संग्रहमा समावेश गर्दछ। यो सामान्यतया एक अभिलेख फाइललाई साझेदारी गरिएको लाइब्रेरीमा बदल्न प्रयोग गरिन्छ, प्रत्येक वस्तुलाई परिणामबद्ध साझा पुस्तकालयमा समावेश गर्न मजबूर गर्दछ। यो विकल्प एक पटक भन्दा बढी प्रयोग गर्न सकिन्छ।

Gcc बाट यो विकल्प प्रयोग गर्दा दुई टिप्पणीहरू: पहिलो, जीसीले यस विकल्पको बारेमा थाहा छैन, त्यसैले तपाईलाई प्रयोग गर्नु पर्छ -Wl, -whole-archive । दोस्रो, प्रयोग गर्न नबिर्सनुहोस् -Wl, -सबै पुरालेख अभिलेखहरूको सूची पछि, किनकि जीसीसीले तपाइँको लिङ्कमा आफ्नै अभिलेखको सूची थप गर्नेछ र तपाईं यो फ्ल्यागलाई पनि असर गर्न चाहँदैनन्।

लुगा चिन्ह

प्रतीकको लागि आवरण प्रकार्य प्रयोग गर्नुहोस्। प्रतीकको कुनै पनि अपरिभाषित सन्दर्भ "__ wrap_symbol" मा समाधान गरिनेछ। "__real_symbol" को कुनै पनि अपरिभाषित सन्दर्भ प्रतीकमा समाधान गरिनेछ।

यो प्रणाली प्रकार्यको लागि आवरण प्रदान गर्न प्रयोग गर्न सकिन्छ। Wrapper प्रकार्यलाई "__wrap_symbol" भनिन्छ। यदि यो प्रणाली प्रकार्यलाई कल गर्न चाहन्छ भने, यसले "__ real_symbol" लाई कल गर्नुपर्छ।

यहाँ एक सानो उदाहरण हो:

शून्य * __wrap_malloc (int c) {printf ("% ld \ n" भनिन्छ। फिर्ती __real_malloc (c); }

यदि तपाइँ यस फाइलसँग अन्य कोड लिङ्क गर्नुहोस् - wrap malloc प्रयोग गरेर, त्यसपछि "मल्लोक" मा सबै कलहरूले "__wrap_malloc" प्रकार्यलाई कल गर्नेछ। "__wrap_malloc" मा "__real_malloc" लाई कल "real" malloc "प्रकार्यलाई कल गर्नेछ।

तपाईं एक "__real_malloc" प्रकार्य पनि प्रदान गर्न चाहनुहुन्छ, ताकि कि बिना लपेट विकल्प सफल हुनेछ। यदि तपाईले यो गर्नुभयो भने, तपाईंले "__ real_malloc" को परिभाषालाई "__wrap_malloc" को रूपमा फाइलमा राख्नु हुँदैन। यदि तपाईले गर्नुहुन्छ भने, लिङ्ककर्ताले यसलाई "मल्लोक" लाई लपेटो गर्ने मौका गर्नु अघि सम्बोधनले कललाई समाधान गर्न सक्दछ।

--अन्य-नयाँ-डीटीएगहरू

--dableable-new-dtags

यस लिंकरले ELF मा नयाँ गतिशील ट्याग सिर्जना गर्न सक्छ। तर पुरानो ELF प्रणालीहरूले तिनीहरूलाई बुझ्न सक्दैनन्। यदि तपाइँ निर्दिष्ट गर्नुहुन्छ --अर्जीयोग्य-नयाँ-डीटीएगहरू , आवश्यक पर्ने रूपमा गतिशील ट्यागहरू सिर्जना गरिनेछ। यदि तपाइँ निर्दिष्ट गर्नुहुन्छ - सक्षम-नयाँ-डीटीएगहरू , नयाँ गतिशील ट्यागहरू सिर्जना हुने छैन। पूर्वनिर्धारित रूपमा, नयाँ गतिशील ट्यागहरू सिर्जना गरिएन। ध्यान दिनुहोस् कि ती विकल्पहरू केवल FORELF प्रणालीहरू उपलब्ध छन्।

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

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

--add-stdcall-alias

यदि दिइन्छ भने स्टडीकोल प्रत्यिक्स (@ एनएन ) सँगको प्रतीकहरू निर्यात गरिनेछ जस्तै - र प्रत्यय स्ट्रिङसँग पनि।

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

फाईलको नामको रूपमा फाईल प्रयोग गर्नुहोस् जुन सबै रिजर्भेसनहरूको आधार ठेगानाहरू बचत गर्न को लागी Dlltool सँग DLL हरु उत्पन्न गर्न आवश्यक छ।

--dll

नियमित कार्यान्वयन योग्यको सट्टा DLL सिर्जना गर्नुहोस्। तपाईं पनि प्रयोग गरिएको वा "दिइएको" "दिइएको" .def "फाइलमा" लाइब्रेरी "निर्दिष्ट गर्न सक्नुहुनेछ।

--अन्य-स्टडको-फिक्सअप

--dableable-stdcall-fixup

यदि लिङ्क एक प्रतीक पत्ता लगाउँदछ जुन यसलाई समाधान गर्न सक्दैन, यसले `` फज्जी लिङ्किंग 'गर्न प्रयास गर्नेछ जुन अर्को परिभाषित प्रतीक खोज्ने प्रयास गर्दछ जुन केवल प्रतीक नाम (cdecl vs stdcall) को ढाँचामा फरक छ र लिङ्क गरेर यो प्रतीक समाधान गर्नेछ। म्याचमा। उदाहरणको लागि, अपरिभाषित प्रतीक "_foo" प्रकार्यसँग "_foo @ 12", वा अपरिभाषित प्रतीक "_bar @ 16" सँग जोडिएको हुन सक्छ "_bar" प्रकार्यसँग लिङ्क हुन सक्छ। जब लिङ्कले यो गर्दछ, यसले एउटा चेतावनी प्रिन्ट गर्छ, किनकी यसले सामान्य रूपमा लिंक गर्न सकेन, तर कहिलेकाहीँ तेस्रो पक्षीय डीलबाट उत्पन्न ल्याब्रेरीहरू आयात गर्न सक्दछ यो सुविधा प्रयोग गर्न योग्य हुन सक्छ। यदि तपाईंले निर्दिष्ट गर्न सक्नुहुनेछ -अर्जीयोग्य-स्टडको-फिक्सअप , यो फिचर पूर्ण सक्षम छ र चेतावनी छापिएको छैन। यदि तपाइँ निर्दिष्ट गर्नुहुन्छ - सक्षम-स्टडको-फिक्सअप , यो सुविधा असक्षम छ र त्यस्ता बेमेलहरू त्रुटिहरू जस्ता मानिन्छ।

--पत्रपत्र-सबै-चिन्हहरू

यदि दिइन्छ, DLL निर्माण गर्न प्रयोग हुने वस्तुहरूमा सबै वैश्विक प्रतीकहरू DLL द्वारा निर्यात गरिनेछ। ध्यान दिनुहोस् कि यो पूर्वनिर्धारित हो भने अन्यथा कुनै पनि निर्यात चिन्हहरू छैनन्। जब DEF फाइलहरू मार्फत स्पष्ट रूपमा निर्यात गरिएका प्रतीकहरू वा प्रकार्य विशेषताहरूको माध्यमद्वारा निर्यात गरिन्छ, पूर्वनिर्धारित यो विकल्प दिइएको नभएसम्म अरू कुनै निर्यात निर्यात गर्दैन। ध्यान दिनुहोस् कि "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTSTartup @ 12", र "impure_ptr" स्वचालित रूपमा निर्यात हुनेछैन। साथै, अन्य DLL बाट आयात गरिएका प्रतीकहरू पुन: निर्यात गरिने छैन, न त DLL को आन्तरिक लेआउट निर्दिष्ट गर्ने चिन्हहरू जस्तै "_head_" वा "_iname" सँग अन्त्य गर्ने प्रतीकहरू हुनेछ। यसको अलावा, "libgcc", "libstd ++", "libmingw32", वा "crtX.o" बाट कुनै चिन्हहरू निर्यात गरिनेछैन। जसका नामहरू "__rtti_" वा "__builtin_" सँग सुरु हुन्छ C ++ DLLs सँग मद्दत गर्नका लागि निर्यात गरिने छैन। अन्तमा, साइगविन-निजी प्रतीकहरूको विस्तृत सूची हो जुन निर्यात गरिएको छैन (जाहिर छ, यो साइभविन लक्ष्यका लागि DLLs निर्माण गर्दा लागू हुन्छ)।

यी साइगविन समावेश छ: "_ साइकलविन_डिल_ेन्ट्री 12", "_क्रिनिन_crt0_common @ 8", "_ cygwin_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3 ", र" वातावरण "।

--विशेषता-प्रतीक चिन्ह , प्रतीक , ...

प्रतीकहरूको सूची निर्दिष्ट गर्दछ जुन स्वचालित रूपमा निर्यात हुँदैन। प्रतीक नामहरू अल्पविराम वा कलमहरू द्वारा छोटो हुन सक्छ।

--अगाडि-libs lib , lib , ...

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

--फाइल-पङ्क्तिबद्ध

फाईल संरेखण निर्दिष्ट गर्नुहोस्। फाइलमा सेक्सनहरू सधैँ फाईल अफसेटमा सुरू हुने छ जुन यस नम्बरका बहुविधहरू हुन्। यो डिफल्ट 512 सम्म।

--हामी आरक्षित

--हामी आरक्षित , प्रतिबद्ध

यस प्रोग्रामको लागि ढोकाको रुपमा प्रयोग गर्न मेमोरीको रकम (र वैकल्पिक रूपमा) प्रयोग गर्न निर्दिष्ट गर्नुहोस्। पूर्वनिर्धारित 1 एमबी आरक्षित छ, 4K प्रतिबद्ध छ।

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

तपाईँको कार्यक्रम वा Dll को आधार ठेगानाको रूपमा मान प्रयोग गर्नुहोस्। यो सबै भन्दा कम मेमोरी स्थान हो जुन तपाईंको प्रोग्राम वा डीएल लोड हुन्छ जब प्रयोग गरिनेछ। स्थानान्तरण गर्न आवश्यक छ र तपाईंको Dll को प्रदर्शन सुधार गर्न को लागी, प्रत्येकमा एक अद्वितीय बेस ठेगाना हुनु पर्छ र कुनै अन्य DLL ओवरलैप गर्नु हुँदैन। पूर्वनिर्धारित फाइलहरूको लागि पूर्वनिर्धारित 0x400000, र dlls को लागि 0x10000000।

--kill-at

यदि दिइएको छ भने, स्टडीकोल प्रत्ययहरू (@ एनएन ) निर्यात गर्नु अघि चिन्हहरूबाट हटाइने छ।

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

`` छवि संस्करण '' को प्रमुख संख्या सेट गर्छ। 1 को डिफल्ट

--मजोर-ओएस संस्करण संस्करण

`` ओएस संस्करण '' को प्रमुख संख्या सेट गर्छ। 4 को डिफल्ट

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

`` उपप्रणाली संस्करण '' को प्रमुख संख्या सेट गर्दछ। 4 को डिफल्ट

--minor-image-version मान

सानो अक्षरको `` संस्करण संस्करण '' सेट गर्दछ। 0 को डिफल्ट

--minor-os-version मान

`` ओएस संस्करण '' को सानो नम्बर सेट गर्छ। 0 को डिफल्ट

--minor-subsystem-version value

`` उपप्रणाली संस्करण '' को सानो नम्बर सेट गर्छ। 0 को डिफल्ट

--आउट - def फाइल

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

--आउट-इम्प्लिब फाइल

लिङ्कर फाइल फाईल सिर्जना गर्नेछ जुन डीएलएलसँग सम्बन्धित आयात लि समावेश हुनेछ लिङ्ककर्ता उत्पन्न हुँदैछ । यो आयात लिङ्क (जुन "* .dll.a" वा "* .a" भनिन्छ भने ग्राहकहरूलाई उत्पन्न गरिएको डीएलएल विरुद्ध लिङ्क गर्न प्रयोग गर्न सकिन्छ; यो व्यवहारले यसलाई "dlltool" आयात लाइब्रेरी सिर्जना चरण छोड्न सम्भव गर्दछ।

--अन्य-छवि-आधारित आधार

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

- स्वत: स्वत-छवि-आधार

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

--dll-search-prefix string

जब डायल लाइब्रेरी बिना डेलाइटमा DLL लाई लिङ्क गर्दै, " .dll" को लागि "lib .dll" मा प्राथमिकतामा खोज्नुहोस्। यो व्यवहारले `` subplatforms '': native, cygwin, uwin, pw, etc. को लागि निर्मित DLLs को बीचमा सरल भेद दिन्छ। उदाहरणका लागि, साइगविन DLL सामान्यतया "--dll-search-prefix = cyg" प्रयोग गर्दछ।

- सक्षम-स्वत: आयात

"_symbol" को परिष्कृत लिंक DLLs बाट डेटा आयात को लागि "__imp__symbol" मा, र ती डेटाटापोर्टहरु संग आयोत पुस्तकालयहरु को निर्माण गर्दा आवश्यक thunking प्रतीकहरु बनाएँ। यो सामान्यतया 'मात्र काम गर्नेछ' --- तर कहिलेकाहीं तपाईंले यो सन्देश देख्न सक्नुहुनेछ:

"चर '' स्वत: आयात गर्न सकिँदैन। विवरणका लागि ld को" --अन्य-आयात-आयात "को लागि कृपया कागजातहरू पढ्नुहोस्।"

यो सन्देश तब हुन्छ जब केही (उप) अभिव्यक्तिले एउटा ठेगानालाई अन्ततः दुईवटा अवधारणाहरूको योगद्वारा दिइएको ठेगाना पहुँच गर्दछ (Win32 आयात तालिकाहरू मात्र एक मात्र अनुमति दिन्छ)। उदाहरणहरू यो हुन सक्छ जहाँ समावेश हुन सक्छ समावेश गर्दछ ढाँचाका सदस्य क्षेत्रहरूमा DLL बाट आयात गरिएको चर चरहरू, साथै साथ डीभीलबाट आयात गरिएका array variable मा स्थिर सूचकांक प्रयोग। कुनै पनि बहुशब्द चर (arrays, structs, लामो लामो, आदि) यो त्रुटि अवस्था ट्रिगर गर्न सक्छ। यद्यपि, अपमानजनक निर्यात चरको सही डेटा प्रकारको बावजूद, एलडीले सधैँ यसलाई अन्वेषण गर्दछ, चेतावनी, र निस्कनुहोस्।

यस कठिनाईलाई सम्बोधन गर्ने थुप्रै तरिकाहरू छन्, निर्यात चरको डेटा प्रकारको बाहेक:

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

एक दोस्रो समाधान बल 'एक' एक चर हुन बलियो बल - यो छ, संकलन समयमा अज्ञात र अप-अनुकूलन योग्य। Arrays को लागि, त्यहाँ दुई सम्भावनाहरू छन्: a) अनुक्रमणिका (सरणी ठेगाना) एक चर, वा ख) 'निरंतर' सूचकांक एक चर बनाउन। यसरी:

extern type extern_array []; extern_array [1] -> {अस्थायी प्रकार * t = extern_array; t [1]}

वा

extern type extern_array []; extern_array [1] -> {अस्थायी int t = 1; extern_array [t]}

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

extern struct s extern_struct; extern_struct.field -> {अस्थायी संरचना s * t = & extern_struct; t-> फिल्ड}

वा

extern long long extern_ll; extern_ll -> {अस्थायी लामो लामो * local_ll = & extern_ll; * local_ll}

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

मूल:

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

समाधान 1:

--foo.h extern int arr []; --foo.c # शामिल "foo.h" शून्य मुख्य (int argc, char ** argv) {/ * यो workaround win32 र cygwin को लागि हो; "अनुकूलित" * / अस्थिर int * parr = arr; printf ("% d \ n", parr [1]); }

समाधान 2:

--foo.h / * नोट: स्वत: निर्यात ग्रहण गरिएको छैन (कुनै __declspec (dllexport)) * / #if (परिभाषित (_WIN32) || परिभाषित (__ CYGWIN__)) && \! (परिभाषित (FOO_BUILD_DLL) || परिभाषित (FOO_STATIC )) # डिफाइन FOO_IMPORT __declspec (dllimport) # खाली # Fine_IMPORT #endif extern FOO_IMPORT int arr []; --foo.c # शामिल "foo.h" शून्य मुख्य (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

यस समस्याबाट टाढाको चौथो तरिका तपाइँको अफगानिस्तानले अफग्रेडिङ चरहरूको लागि डाटा इन्टरफेसको सट्टा (कार्यात्मक इन्टरफेस प्रयोग गर्नको लागि पुन: कोड पुन: कोड गर्ने ) जस्तै उदाहरण set_foo ()get_foo () पहुँचकर्ता प्रकार्यहरू)।

- सक्षम-स्वत: आयात

DLLim बाट DATAIMports को लागि "_symbol" को "__imp__symbol" को sophisticalted लिंक गर्ने कोशिश मत करो।

--अर्जीयोग्य-रनटाइम- pseudo-reloc

यदि तपाईंको कोडले समावेश गर्दछ -अन्य-आयात-आयात सेक्शनमा, जुन, गैर-शून्य अफसेटसँग DATAIMports DLL बाट, यो स्विचले 'रन टाइम छद्म स्थानान्तरण' को प्रयोग गर्दछ जुन रनटाइम वातावरण द्वारा प्रयोग गर्न सकिन्छ सन्दर्भहरू समायोजन गर्न सकिन्छ। तपाईंको ग्राहक कोडमा यस्तो डाटामा।

--disable-runtime-pseudo-reloc

गैर-शून्य अफसेटको लागि छद्म टेलिभिजनहरू सिर्जना नगर्नुहोस् DLL बाट डाटा आयात। यो पूर्वनिर्धारित हो।

--अगाडि-अतिरिक्त-pe-debug

स्वत: आयात प्रतीक thunking सम्बन्धित थप डिबग जानकारी देखाउनुहोस्।

--सङ्ख्या-पङ्क्तिबद्धता

खण्ड संरेखण सेट गर्दछ। मेमोरीमा सेक्सनहरू सधैँ ठेगानाहरूमा सुरू हुने छन् जुन यो नम्बरको बहुविध हो। 0x1000 को डिफल्ट।

- भण्डारण आरक्षित

- भण्डारण आरक्षित , प्रतिबद्ध

यस कार्यक्रमको लागि स्ट्याकको रूपमा भण्डारण गर्न (र वैकल्पिक रूपमा) मेमोरीको रकम निर्दिष्ट गर्नुहोस्। डिफल्ट 2 एमबी आरक्षित छ, 4K प्रतिबद्ध छ।

- जुनबस्नेप्रणाली

--बसबसेटिङ : प्रमुख

--बसबसेटिङ : प्रमुख सानो

उपप्रणाली निर्दिष्ट गर्दछ जुन तपाईंको कार्यक्रम कार्यान्वयन हुनेछ। जसको लागि कानुनी मानहरू "देशी", "सञ्झ्याल", "कन्सोल" र "पिक्सिक्स" हुन्। तपाईंले वैकल्पिक रूपमा उपप्रणाली संस्करण सेट गर्न सक्नुहुनेछ।

महत्वपूर्ण: तपाईको विशेष कम्प्युटरमा आदेश कसरी प्रयोग गरिन्छ भनेर हेर्नको लागि मानिसको आदेश ( % मानिस ) प्रयोग गर्नुहोस्।