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

NAME

एलडी - एलडी , जीएनयू लिंकरचा वापर करणे

सुप्रसिद्ध

एलडी [ पर्याय ] objfile ...

DESCRIPTION

एलडी अनेक ऑब्जेक्ट आणि आर्काइव्ह फाइल्सचा वापर करतो , त्यांचा डेटा बदलतो आणि प्रतीक संदर्भ तयार करतो. साधारणपणे प्रोग्रॅम संकलित करण्यासाठी शेवटचे पाऊल म्हणजे ld चालविणे.

ld लिंकिंग प्रक्रियेवर स्पष्ट आणि एकूण नियंत्रण प्रदान करण्यासाठी एटी & टी ची लिंक संपादक कमांड भाषा सिंटॅक्सच्या एका सुपरसेटमध्ये लिखित लिंकर कमांड भाषा फाइल्स स्वीकारतो.

हे मॅन पृष्ठ आज्ञा भाषेचे वर्णन करत नाही; "भाषा" आणि जीएनयू लिंकरच्या इतर पैलूंवर संपूर्ण माहितीसाठी "माहिती", किंवा मॅन्युअल लिडर: जीएनयू लिंकर मध्ये एलडी एंट्री पहा.

Ld ची ही आवृत्ती ऑब्जेक्ट फाईल्सवर चालविण्यासाठी सामान्य उद्देश BFD लायब्ररीचा वापर करते. हे ld ला ऑब्जेक्ट फाइल्स वाचण्यास, एकत्रित करणे आणि लिहायला परवानगी देतो - उदाहरणार्थ, COFF किंवा "a.out". कोणत्याही उपलब्ध प्रकारचे ऑब्जेक्ट फाईल तयार करण्यासाठी विविध स्वरुपना एकत्र जोडल्या जाऊ शकतात.

त्याच्या लवचिकतेशिवाय, निदान माहिती प्रदान करण्यामध्ये GNU दुवाकर्ता अन्य दुवाकर्त्यांपेक्षा अधिक उपयुक्त आहे. बर्याच जोडल्या गेलेल्या त्रुटींचे आल्यावर लगेच अंमलबजावणी थांबवणे; जेव्हाही शक्य असेल, तेव्हा एलडी चालू राहते, आपल्याला इतर त्रुटी (किंवा, काही प्रकरणांमध्ये, एरर असूनही आऊटपुट फाइल मिळविण्यासाठी) ओळखण्यास मदत करतो.

जीएनयु लिंकर लिंड म्हणजे मोठ्या प्रमाणावरील परिस्थितींना समाविष्ट करणे आणि इतर दुवा साधकांशी शक्य तितके अनुरूप असणे. परिणामी, आपलं वागणं नियंत्रित करण्यासाठी आपल्याकडे अनेक पर्याय आहेत.

पर्याय

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

ld -o /lib/crt0.o हॅलो.ओ -एलसी

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

काही आदेश-ओळ पर्याय ld मध्ये निर्देश ओळीत कुठल्याही बिंदूवर निर्देशीत केले जाऊ शकतात. तरी, फाईल्सचा संदर्भ देणारे पर्याय, जसे की -एल किंवा -टी , ऑब्जेक्ट फाइल्स आणि इतर फाइल पर्यायांच्या तुलनेत फाईल ज्या वेळी ऑप्शन आदेश ओळीत दिसते त्या वेळी वाचता येते. भिन्न वितर्कसह नॉन-फाईल पर्याय पुनरावृत्त केल्याने त्या पर्यायाचा पुढील प्रभाव नसेल किंवा त्याऐवजी त्यापूर्वीच्या घटना (त्यापुढे आदेश लाव्यावरील डाव्या बाजूला) ओव्हरराइड होतील. एकापेक्षा अधिक वेळा अर्थपूर्णरितीने निर्दिष्ट केलेल्या पर्यायांचा तपशील खाली नमूद केलेल्या आहेत.

गैर-पर्याय आर्ग्युमेंट्स ऑब्जेक्ट फाइल्स किंवा संग्रह आहेत जे एकत्र जोडणे आहेत. ते ऑप्शन फाइल आर्ग्युमेंट पर्याय आणि त्याचे आर्ग्युमेंट दरम्यान ठेवू शकत नाहीत, त्याव्यतिरिक्त ते कमांड लाइन पर्यायांसह अनुसरण करू शकतात किंवा पुढे जाऊ शकतात.

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

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

ज्या पर्यायांचे नावे एकच पत्र आहेत त्या पर्यायांसाठी, ऑब्जेक्ट आर्ग्यूमेंट्सना व्हाटस्पेसमध्ये हस्तक्षेप न करता पर्याय पत्रचे अनुसरण करणे आवश्यक आहे किंवा त्यास आवश्यक असलेल्या पर्यायानुसार लगेचच स्वतंत्र वितर्क म्हणून दिले जाऊ शकते.

ज्या पर्यायांसाठी नावे आहेत ते अनेक ऑप्शन्ससाठी, एक किंवा दोन डॅश पर्याय नावाच्या आधी होऊ शकतात; उदाहरणार्थ, -trace-symbol आणि --trace-symbol समान आहे. टीप - या नियमामध्ये एक अपवाद आहे लोअर केस 'o' ने सुरू होणारे एकाधिक पयासर्स फक्त दोन डॅशने पूर्तता करू शकतात. हे -o पर्यायसह गोंधळ कमी करणे आहे म्हणून उदाहरणार्थ - -ऑग्जिक ने आउटपुट फाइल नाव जादूवर सेट केले तर --omagic आउटपुटवर NMAGIC फ्लॅग सेट करते.

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

टीप - जर लिंकरला अप्रत्यक्षपणे जोडला जात आहे, तर कंपाइलर ड्रायव्हर (उदा. Gcc ) द्वारे तर सर्व लिंकर कमांड लाइन पर्याय- व्हीएल (किंवा विशिष्ट कम्पाइलर ड्राईव्हरसाठी योग्य) यानुसार प्रिफिक्स केले पाहिजे:

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

हे महत्वाचे आहे, कारण अन्यथा कंपाईलर ड्राइव्हर प्रोग्राम शांतपणे लिंकर पर्याय ड्रॉप करू शकतो, परिणामी खराब लिंक मिळते.

येथे GNU लिंकरद्वारे स्वीकारलेल्या सर्वसामान्य कमांड लाइन स्विचचे एक सारणी आहे:

-ए कीवर्ड

हा पर्याय HP / UX सहत्वता समर्थित आहे. कीवर्ड वितर्क स्ट्रिंग संग्रहण , सामायिक केलेले किंवा डीफॉल्ट असणे आवश्यक आहे. -रार्चिव्ह कार्यशीलतेने -व्यस्तिकतेशी समतुल्य आहे, आणि अन्य दोन कीवर्ड कार्यशीलतेनुसार -व्यवहारिक असतात हा पर्याय अनेक वेळा वापरला जाऊ शकतो.

- आर्किटेक्चर

--architecture = मांडणी

सध्याच्या एलडीच्या प्रकाशीत, हा पर्याय फक्त आर्किटेक्चर्सच्या इंटेल 960 कुटुंबासाठी उपयुक्त आहे. त्या डीडी कॉन्फिगरेशनमध्ये, आर्किटेक्चर वितर्क 960 कुटुंबातील विशिष्ट आर्किटेक्चरची ओळख करतो, काही सेफगार्ड्स सक्षम करते आणि संग्रहण-लायब्ररी शोध पथ सुधारित करते.

एलडीचे भविष्यातील प्रकाशन इतर आर्किटेक्चर कुटुंबासाठी समान कार्यक्षमतेचे समर्थन करू शकतात.

-बी इनपुट-फॉर्मेट

--format = input-format

ld एकापेक्षा अधिक ऑब्जेक्ट फाईल्सला समर्थन देण्यासाठी कॉन्फिगर केले जाऊ शकते. तुमच्या ld ने अशा प्रकारे कॉन्फिगर केले असल्यास, आपण कमांड लाईनवरील या ऑप्शनवर जाण्यासाठी इनपुट ऑब्जेक्ट फाइल्ससाठी बायनरी स्वरूप निर्दिष्ट करण्यासाठी -b ऑप्शन वापरू शकता. जेव्हा ld ऑब्जेक्ट ऑब्जेक्ट फॉर्मेटचे समर्थन करण्यासाठी कॉन्फिगर केले जाते, तेव्हा आपल्याला सामान्यतः हे निर्दिष्ट करण्याची आवश्यकता नाही, कारण प्रत्येक कॉम्प्यूटरवरील डिफॉल्ट इन्पुट फॉर्मेटमध्ये सर्वात सामान्य स्वरुपन म्हणून एलडी कॉन्फीगर करणे आवश्यक आहे. इनपुट-स्वरूप मजकूर स्ट्रिंग आहे, BFD लायब्ररीनी समर्थित विशिष्ट स्वरूपनाचे नाव. (आपण objdump -i सह उपलब्ध बायनरी स्वरूपांची सूची देऊ शकता.)

आपण हा पर्याय वापरु इच्छित असल्यास आपण एका असामान्य बायनरी स्वरूपात फायली जोडत असाल. आपण विशिष्ट स्वरुपात ऑब्जेक्ट फाइल्सच्या प्रत्येक गटाच्या आधी -b इनपुट- फॉर्मचा समावेश करून, स्वरुपात स्पष्टपणे (वेगळ्या स्वरूपांच्या ऑब्जेक्ट फायली जोडताना) स्विच करण्यासाठी -बी वापरू शकता.

डीफॉल्ट स्वरूपात पर्यावरण परिवर्तनीय "GNUTARGET" वरून घेण्यात आले आहे.

आपण "TARGET" कमांडचा वापर करून एका स्क्रिप्टमधून इनपुट स्वरुपन देखील परिभाषित करू शकता;

-सी एमआरआय-आदेशफाइल

--mri-script = MRI-commandfile

एमआरआयद्वारे तयार केलेल्या लिंकर्सशी सुसंगतता, ld वैकल्पिक, प्रतिबंधित आदेश भाषेत लिहीलेल्या स्क्रिप्ट फायली स्वीकारतो, जीएनयू लिंड दस्तऐवजांचे एमआरआय सुसंगत स्क्रिप्ट फायली विभागात वर्णन केल्याप्रमाणे. एम -5 स्क्रिप्ट फाइल्सचा पर्याय- c ; सामान्य उद्देशाच्या लिड स्क्रिप्टिंग भाषेतील लिनकर स्क्रिप्ट्स चालविण्यासाठी -T पर्याय वापरा. MRI-cmdfile अस्तित्वात नसल्यास, ld कोणत्याही -एल पर्यायांनी निर्देशित केलेल्या निर्देशिकेत दिसते.

-डी

-dc

-dp

हे तीन पर्याय समतुल्य आहेत; अनेक फॉर्म इतर लिंककर्त्यांसह सुसंगततेसाठी समर्थित आहेत. पुनर्वापराची आऊटपुट फाइल निर्दिष्ट केलेल्या असताना ( -r ) सह ते सामान्य प्रतीकेकरिता जागा नियुक्त करतात. स्क्रिप्ट आदेश "FORCE_COMMON_ALLOCATION" सारखाच प्रभाव असतो.

-e प्रवेश

--entry = नोंद

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

-ई

--export-dynamic

गतिशील जोडलेले एक्झिक्यूटेबल तयार करताना, डायनॅमिक सिंबल टेबलमध्ये सर्व चिन्ह जोडा. डायनॅमिक सिंबल टेबल म्हणजे प्रतीकाचा संच जे डायनॅमिक ऑब्जेक्ट्स वर रन टाइमवर दिसत आहेत.

जर आपण हा पर्याय वापरत नसाल तर, डायनॅमिक चिन्ह टेबलमध्ये साधारणपणे त्या चिन्हाचा समावेश होतो जे लिंकमध्ये नमूद केलेल्या काही डायनॅमिक ऑब्जेक्ट द्वारे संदर्भित असतात.

आपण डायनॅमिक ऑब्जेक्ट लोड करण्यासाठी "dlopen" वापरत असल्यास ज्याला प्रोग्रॅमने परिभाषित केलेल्या प्रती इतर काही डायनामिक ऑब्जेक्टऐवजी संदर्भ देण्याची आवश्यकता असेल, तर मग तुम्हाला प्रोग्रामचा दुवा साधताना ही पर्याय वापरण्याची आवश्यकता असेल.

आउटपुट स्वरुपने त्याचे समर्थन करणारी डायनॅमिक सिंबल टेबलमध्ये कोणती चिन्हे जोडली पाहिजेत हे नियंत्रित करण्यासाठी आपण आवृत्ती स्क्रिप्ट देखील वापरू शकता. @ रिफ {VERSION} मधील - विवरणामधील स्क्रिप्टचे वर्णन पहा.

-ईबी

बिग-एंडियन वस्तूंचा दुवा साधा हे डीफॉल्ट आउटपुट स्वरूपात प्रभावित करते.

-ईएल

थोडे-एंडियन ऑब्जेक्ट लिंक करा हे डीफॉल्ट आउटपुट स्वरूपात प्रभावित करते.

-f

--ओएजिलरी नाव

एक ELF सामायिक ऑब्जेक्ट तयार करताना, निर्दिष्ट केलेल्या नावात अंतर्गत DT_AUXILIARY फील्ड सेट करा. हे डायनॅमिक लिंकरला सांगते की शेअर्ड ऑब्जेक्टचे प्रतीक सारणी सामायिक ऑब्जेक्ट नावाच्या प्रतीक सारणीवर एक पूरक फिल्टर म्हणून वापरली जावी.

आपण नंतर या फिल्टर ऑब्जेक्ट विरूद्ध एखादा प्रोग्राम जोडल्यास, जेव्हा आपण प्रोग्राम चालवाल, तेव्हा डायनॅमिक लिंकर DT_AUXILIARY फील्ड दिसेल. डायनॅमिक लिंकर फिल्टर ऑब्जेक्ट पासून कोणत्याही प्रतीक निराकरण केल्यास, तो प्रथम सामायिक ऑब्जेक्ट नावात एक व्याख्या आहे की नाही हे तपासेल. जर असेल तर, फिल्टर ऑब्जेक्ट मधील व्याख्येऐवजी त्याचा वापर केला जाईल. सामायिक केलेले ऑब्जेक्टचे नाव अस्तित्वात नसणे आवश्यक आहे अशाप्रकारे सामायिक केलेले ऑब्जेक्टचे नाव काही फंक्शन्सच्या वैकल्पिक कार्यान्वयन प्रदान करण्यासाठी वापरले जाऊ शकते, डीबगिंगसाठी किंवा मशीन-विशिष्ट कार्यक्षमतेसाठी.

हा पर्याय एकापेक्षा जास्त वेळा निर्दिष्ट केला जाऊ शकतो. DT_AUXILARYARY प्रविष्ट्या त्या क्रमाने तयार होतील ज्यात ते आदेश ओळीवर दिसतील.

-फ नाव

--फिल्टर नाव

एक ELF सामायिक ऑब्जेक्ट तयार करताना, अंतर्गत DT_FILTER फील्ड निर्दिष्ट केलेल्या नावावर सेट करा. हे डायनॅमिक लिंकरला सांगते की सामायिक ऑब्जेक्टची सिंबल सारणी शेअर केलेल्या ऑब्जेक्ट नावाच्या प्रतीक सारणीवर फिल्टर म्हणून वापरली जावी.

आपण नंतर या फिल्टर ऑब्जेक्ट विरुद्ध एखादा प्रोग्राम जोडल्यास, जेव्हा आपण प्रोग्राम चालवाल, तेव्हा डायनॅमिक लिंकर DT_FILTER फील्ड दिसेल. डायनॅमिक लिंकर सामान्यतः फिल्टर ऑब्जेक्टच्या प्रतीक सारणीनुसार प्रतिकाचे निराकरण करेल, परंतु प्रत्यक्षात शेअर्ड ऑब्जेक्ट नावात सापडलेल्या परिभाषाशी दुवा साधेल. अशाप्रकारे ऑब्जेक्ट नावांनी दिलेल्या प्रतीकेचे उपसंच निवडण्यासाठी फिल्टर ऑब्जेक्ट वापरता येते.

काही जुन्या जोडण्यांनी इनपुट-ऑप्शन ऑब्जेक्ट फाइल्स दोन्हीसाठी ऑब्जेक्ट-फाइल स्वरूप निर्दिष्ट करण्यासाठी एक संकलन टूलचेन संपूर्ण -F पर्याय वापरले. GNU linker या उद्देशासाठी इतर यंत्रणा वापरते: -b , --format , --oformat पर्याय, लिंकर स्क्रिप्टमध्ये "टार्गेट" कमांड व "GNUTARGET" पर्यावरण वेरियेबल. एएलएफ शेअर केलेला ऑब्जेक्ट तयार करताना GNU linker -F पर्याय दुर्लक्ष करेल.

-फिनी नाव

एक ELF एक्झिक्यूटेबल किंवा शेअर्ड ऑब्जेक्ट तयार करताना, फंक्शनच्या पत्त्यावर DT_FINI सेट करून, एक्झेक्यूटेबल किंवा शेअर्ड ऑब्जेक्ट अनलोड करताना, NAME ला कॉल करा. डीफॉल्टनुसार, दुवाकर्ता कॉल करण्यासाठी कार्य म्हणून "_fini" वापरतो.

-जी

दुर्लक्ष केले. इतर साधने सह सुसंगतता प्रदान.

-जी मूल्य

--gpsize = मूल्य

जीपी रजिस्टर ला आकाराने ऑप्टिमाइझ करण्यासाठी ऑब्जेक्ट्सचा कमाल आकार सेट करा. हे ऑब्जेक्ट फाईल फॉरमॅट्ससाठी केवळ अर्थपूर्ण आहे जे MIPS ECOFF सारखे मोठे आणि लहान ऑब्जेक्ट विविध विभागांमध्ये टाकण्यास समर्थन करते. हे इतर ऑब्जेक्ट फाईल स्वरूपनासाठी दुर्लक्षित केले आहे.

-h नाव

-फोन = नाव

एक ELF सामायिक ऑब्जेक्ट तयार करताना, निर्दिष्ट केलेल्या नावात अंतर्गत DT_SONAME फील्ड सेट करा. जेव्हा एक्झिक्यूटेबल शेअर केलेल्या ऑब्जेक्टशी जोडला जातो ज्यामध्ये डीटीसीएसएएनएएम फील्ड आहे, तर जेव्हा एक्जीक्यूटेबल डायनॅमिक लिंकर चालविते, तेव्हा लिंकरला दिलेला फाइल नाव वापरण्याऐवजी DT_SONAME फील्डद्वारे निर्दिष्ट केलेले सामायिक ऑब्जेक्ट लोड करण्याचा प्रयत्न करेल.

-i

वाढीव लिंक करा (पर्याय -आर प्रमाणेच)

-इनट नाव

एक ELF एक्झिक्यूटेबल किंवा शेअर्ड ऑब्जेक्ट तयार करताना, कार्यवाहीच्या पत्त्यावर DT_INIT सेट करून, एक्झिक्यूटेबल किंवा शेअर्ड ऑब्जेक्ट लोड करताना NAME ला कॉल करा. डीफॉल्टनुसार, दुवाकर्ता कॉल करण्यासाठी कार्य म्हणून "_init" वापरतो.

-l संग्रह

- पुस्तकालय = संग्रह

लिंक करण्यासाठी फाइल्सच्या सूचीमध्ये संग्रहण फाइल संग्रह जोडा. हा पर्याय अनेक वेळा वापरला जाऊ शकतो. ld निर्दिष्ट केलेल्या प्रत्येक संग्रहणासाठी "libarchive.a" च्या घटनांसाठी त्याचे पथ सूची शोधेल.

शेअर्ड लाइब्ररिज्स समर्थन देणाऱ्या प्रणालींवर, ld ".a" व्यतिरिक्त विस्तार असलेल्या लाइब्ररिंसाठी देखील शोधू शकतो. विशेषत: ELF आणि SunOS प्रणालीवर, ". A" विस्तारासह एखादा शोध घेण्यापूर्वी ".so" विस्तारासह लायब्ररीसाठी निर्देशिका शोधेल. अधिवेशनाद्वारे, एक ".so" विस्तार शेअर्ड लायब्ररी सूचित करतो.

लिंकर केवळ एकदाच संग्रहण शोधेल, जेथे त्यास कमांड लाइनवर निर्दिष्ट केले जाईल. आर्काइव्ह जर एखादी प्रतीक परिभाषित करते ज्यास ऑब्जेक्ट आदेश ओळीवर आधी दिसणार्या एखाद्या ऑब्जेक्टमध्ये अपरिभाषित होते, तर लिंकरमध्ये संग्रहणातून योग्य फाईल समाविष्ट असेल. तथापि, आदेश ओळीवर दिसणार्या ऑब्जेक्टमध्ये एखादा अपरिभाषित चिन्ह लिंकरला संग्रहण पुन्हा शोधण्यासाठी कारणीभूत होणार नाही.

- ( अनेक वेळा अर्काईव्हज शोधण्यासाठी लिंकरला जबरदस्ती करण्याचा मार्ग मोकळा - पहा)

आपण कमांड लाइनवर समान संग्रह एकाधिक वेळा सूचीत करू शकता.

हा संग्रह संग्रह युनिक्स लिंककर्त्यांसाठी मानक आहे. तरी, आपण ld onAIX वापरत असल्यास, लक्षात ठेवा की हे AIX linker च्या वर्तनापेक्षा वेगळे आहे.

-एल सर्चडीर

--लांबी-पथ = शोधडी

मार्ग शोध सूचीमध्ये मार्ग शोध सूची जोडा जे ld संग्रह लायब्ररी व ld नियंत्रण स्क्रिप्ट्स शोधेल. आपण हा पर्याय अनेक वेळा वापरू शकता डिरेक्ट्रीज जे आदेश ओळीवर निर्देशीत आहेत त्या क्रमाने शोधले जातात. आदेश ओळीवर निर्देशीत डिरेक्ट्रीज डिफॉल्ट डिरेक्ट्रीजच्या आधी शोधले जातात. ऑल- एल ऑप्शन्स ऑल- एल ऑप्शन्सवर लागू होतात, ऑर्डर कोणत्या क्रमाने दिसत आहेत याची पर्वा न करता

जर searchdir "=" सह सुरू होते, तर "=" sysroot उपसर्ग द्वारे पुनर्स्थित केले जाईल, जो दुवा साधणारा कॉन्फिगर केला असेल तेव्हा निर्दिष्ट केलेला पथ असेल.

शोधलेल्या पाथांचा डीफॉल्ट संच ( -एलसह निर्दिष्ट केल्या शिवाय) कोणत्या इम्यूलेशन मोड ld वापरत आहे त्यावर अवलंबून आहे, आणि काही प्रकरणांमध्ये हे देखील कसे कॉन्फिगर केले गेले यावर अवलंबून आहे.

"SEARCH_DIR" आदेशासह पथ लिंक स्क्रिप्टमध्ये देखील निर्दिष्ट केले जाऊ शकते. निर्देशकाने अशा प्रकारे शोधले की ज्यामध्ये लिंकर स्क्रिप्ट आदेश ओळीत दिसते.

-एम अनुकरण

इम्यूलेशन लिंकर चे अनुकरण करा . तुम्ही --verbose किंवा -V पर्यायसह उपलब्ध एमुलेशनची सूची देऊ शकता.

-am पर्याय वापरत नसल्यास, इम्यूलेशन "LDEMULATION" पर्यावरण वेरियेबल पासून घेतले आहे, जर ते निश्चित केले असेल.

अन्यथा, डीफॉल्ट एमुलेशन लिंकर कशी कॉन्फिगर झाली यावर आधारित आहे.

-एम

--print-map

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

*

ऑब्जेक्ट फाइल्स आणि सिंबल मेमरीमध्ये मॅप केले जातात.

*

किती सामान्य चिन्हांचे वाटप केले जाते

*

अर्काईव्ह सदस्याला या लिंकमध्ये सामील करून घेण्यात आले.

-एन

--मॅमिजिक

पृष्ठांचे पृष्ठ संरेखन बंद करा आणि शक्य असल्यास "NMAGIC" म्हणून आउटपुट चिन्हांकित करा.

-एन

--आमजिक

मजकूर आणि डेटा विभाग वाचन आणि लेखन करता येण्याजोगी सेट करा देखील, डेटा सेगमेंट पेज-संरेखित करू नका, आणि सामायिक लायब्ररींशी दुवा साधणे अक्षम करा. जर आउटपुटचे स्वरूप यूनिक्स स्टाईल जादू क्रमांकांना समर्थन देते, तर "OMAGIC" म्हणून आउटपुट चिन्हांकित करा.

--no-omagic

हा पर्याय -न पर्यायच्या बहुतेक प्रभावांना नकार देतो. हे मजकूर विभाग केवळ-वाचनीय करण्यासाठी सेट करते आणि पृष्ठ-संरेखित करण्यासाठी डेटा विभागास सक्ती करते. टीप - हे पर्याय शेअर्ड लायब्ररींशी जोडणी सक्षम करत नाही. याकरिता -विस्तारिक वापरा.

-o आउटपुट

--output = आऊटपुट

Ld द्वारे निर्मीत प्रोग्रामसाठी नाव म्हणून आउटपुट वापरा; हा पर्याय निर्दिष्ट नसल्यास, नाव a.out डीफॉल्टद्वारे वापरली जाते. स्क्रिप्ट आदेश "OUTPUT" देखील आउटपुट फाइल नाव निर्दिष्ट करू शकतो.

-ओ पातळी

जर स्तर शून्य अंमलात असलेल्या एक अंकीय मूल्ये आउटपुटचे अनुकूलन करतो. हे कदाचित जास्त वेळ घेईल आणि त्यामुळे कदाचित अंतिम बायनरीसाठी फक्त सक्षम केले पाहिजे.

-कडी

--emit-relocs

रद्द केलेले विभाग आणि संपूर्णपणे जोडलेले एक्सेक्टेबिलिटीमधील सामग्री सोडा पोस्ट लिंक्स विश्लेषण आणि ऑप्टिमायझेशन साधनांस एक्झिक्यूटेबलच्या योग्य बदल करण्यासाठी या माहितीची आवश्यकता असू शकते. हे मोठ्या एक्झिक्यूटेबल मध्ये परिणाम.

हा पर्याय सध्या केवळ ELF प्लॅटफॉर्मवर समर्थित आहे.

-आर

--लाल प्रवेशयोग्य

Relocatable आउटपुट व्युत्पन्न करा --- म्हणजेच, एक आउटपुट फाइल निर्माण करा जी वळण देऊन ld ला इनपुट म्हणून काम करू शकते. हे सहसा आंशिक दुवा साधणे असे म्हणतात. साइड इफेक्ट म्हणून, मानक युनिक्स जादूच्या संख्येस समर्थन करणार्या वातावरणात, हा पर्याय आउटपुट फाइलची जादू संख्या "OMAGIC" ला देखील सेट करतो. हा पर्याय निर्दिष्ट नसल्यास, एक परिपूर्ण फाइल तयार केली जाते. C ++ प्रोग्रामशी दुवा साधताना, हा पर्याय कन्स्ट्रक्टरच्या संदर्भांचे निराकरण करणार नाही ; हे करण्यासाठी, -उर वापरा.

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

हा पर्याय -i सारखाच आहे

-आर फाइलनाव

--just-symbols = फाइलनाव

फाईलचे नाव आणि त्यांचे पत्ते वाचा, परंतु त्यास पुनर्स्थापित करणे किंवा ते आउटपुटमध्ये समाविष्ट करणे नाही. हे आपल्या आउटपुट फाइलला सांकेतिक संदेश इतर प्रोग्राममध्ये परिभाषित केलेल्या मेमरीच्या पूर्ण स्थाने दर्शविण्यास अनुमती देते. आपण हा पर्याय एकापेक्षा अधिक वेळा वापरू शकता.

इतर एल्फिफाइड लिंकर्सशी सुसंगततेसाठी, जर -आर पर्याय एखाद्या फाईलचे नाव ऐवजी निर्देशिका नावाने पाठविला जातो, तर ती -ppath पर्याय म्हणून मानले जाते.

-स्

--स्ट्रिप-सर्व

आऊटपुट फाइल पासून सर्व चिन्ह माहिती वगळा.

-एस

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

आउटपुट फाइलमधून डिबगर प्रतीक माहिती वगळा (परंतु सर्व चिन्ह नसतात)

-टी

--ट्र्रेस

इनपुट फाईल्सची नावे प्रिंट करा कारण त्यांना एलडी प्रक्रिया होते.

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

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

लिपीक स्क्रिप्ट म्हणून स्क्रिप्टफाइल वापरा. हे स्क्रिप्ट ld च्या default linker स्क्रिप्टला बदलविते (त्यास जोडण्याऐवजी ), त्यामुळे आदेशफाइलने आऊटपुट फाइलचे वर्णन करण्यासाठी प्रत्येक गोष्ट आवश्यक आहे. स्क्रिप्टफाइल सध्याच्या निर्देशिकेत अस्तित्वात नसल्यास, "ld" कोणत्याही पूर्व- एल पर्यायाद्वारे निर्देशित केलेल्या निर्देशिकेत दिसते. अनेक- टी पर्याय साठवतात

-u चिन्ह

--undefined = symbol

अनिर्धारित प्रतीक म्हणून आऊटपुट फाइलमध्ये प्रविष्ट करण्याकरीता सक्तीचे चिन्ह. असे केल्याने, उदाहरणार्थ, मानक लायब्ररीमधून अतिरिक्त मॉड्यूल्सचा दुवा जोडणे. -u अतिरिक्त अपरिभाषित चिन्हे प्रविष्ट करण्यासाठी विविध पर्याय वितर्क सह पुनरावृत्ती जाऊ शकते. हा पर्याय "EXTERN" linker स्क्रिप्ट आदेशाशी समतुल्य आहे.

-उरु

C ++ प्रोग्राम्सखेरीज इतर कशासाठी, हा पर्याय -r च्या समतुल्य आहे: तो पुनर्स्थित करण्यायोग्य आउटपुट --- म्हणजेच, एक आउटपुट फाइल निर्माण करतो जे परत एलडीमध्ये इनपुट म्हणून काम करते. C ++ प्रोग्रामशी दुवा साधताना, -आर व्यतिरिक्त , कन्स्ट्रक्टरच्या संदर्भासंदर्भात निराकरण होत नाही . हे वापरण्यासाठी कार्य करत नाही - स्वतःच -Ur शी संबंधित असलेल्या फायलींवर -Ur ; एकदा का कन्स्ट्रक्टर सारणी बांधली गेली, ती जोडली जाऊ शकत नाही. वापरा - फक्त शेवटच्या आंशिक दुव्यासाठी, आणि -र इतरांसाठी.

--इनीक [= SECTION ]

प्रत्येक इनपुट विभागात SECTION जुळणार्यासाठी स्वतंत्र आउटपुट विभाग तयार होतो किंवा प्रत्येक अनाथ इनपुट विभागात, पर्यायी वाइल्डकार्ड SECTION वितर्क गहाळ आहे. एक अनाथ भाग म्हणजे एका लिंकरच्या स्क्रिप्टमध्ये विशेषतः उल्लेख केलेला नाही. आपण या पर्यायाचा वापर कमांड लाईनवर अनेक वेळा करू शकता; हे समान नावाचे इनपुट विभाग सामान्य विलीन होणे प्रतिबंधित करते, एक लिंकर स्क्रिप्टमध्ये अधोरेखन आउटपुट विभाग असाइनमेंट.

-वी

- विरुद्ध

-वी

Ld साठी आवृत्ती क्रमांक प्रदर्शित करा. -V पर्याय समर्थित इम्यूलेशनची सूची देखील देतो.

-x

--दोन-सर्व

सर्व स्थानिक चिन्हे हटवा.

-एक्स

--डिस्कर-लोकल

सर्व तात्पुरती स्थानिक प्रतीके हटवा. बहुतेक लक्ष्यांकरिता, हे सर्व स्थानिक चिन्हे आहेत ज्यांची नावे L ने सुरू केली आहेत.

-y चिन्ह

--trace-symbol = symbol

प्रत्येक लिंक केलेल्या फाइलचे नाव मुद्रित करा, ज्यामध्ये प्रतीक दिसते. हा पर्याय किती वेळा दिला जाऊ शकतो बर्याच प्रणालींवर अंडरस्कोर तयार करणे आवश्यक आहे.

हा पर्याय उपयुक्त आहे जेव्हा आपल्याकडे आपल्या दुव्यामध्ये एखादा अपरिभाषित चिन्ह असेल परंतु संदर्भ कुठून येतो हे माहिती नाही

-Y पथ

डीफॉल्ट लायब्ररी शोध पथ चा पथ जोडा. हा पर्याय सोलारिस सहत्वतासाठी अस्तित्वात आहे

-z कीवर्ड

ओळखले जाणारे शब्द "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" आणि "nocopyreloc ". अन्य कीवर्ड सोलारिस सहत्वताकरिता दुर्लक्ष केले जातात. "initfirst" ऑब्जेक्ट कोणत्याही इतर ऑब्जेक्ट्स आधी रनटाइमवेळी प्रथम आरंभ करण्यासाठी चिन्हांकित करते. "इंटरॉज" ऑब्जेक्टला चिन्हांकित करते जे त्याच्या प्रतीको सारणी सर्व चिन्हे आधीच करते परंतु प्राथमिक एक्झिक्युटेबल. "loadfltr" त्या ऑब्जेक्टला चिन्हांकित करते जे रनटाइम वर त्याच्या फाईलची लगेच प्रक्रिया करते. "nodefaultlib" या ऑब्जेक्टच्या अवलंबनकरीता शोध दुर्लक्ष करणार्या ऑब्जेक्टला चिन्हांकित करते कोणताही डीफॉल्ट लायब्ररी शोध मार्ग. रनटाइममध्ये ऑब्जेक्ट लोड न होण्याला "नोडलेलट" चिन्हांकित करते. "nodlopen" हे ऑब्जेक्ट "dlopen" वर उपलब्ध नाही. "nodump" चिन्हाने ऑब्जेक्ट "dldump" द्वारे डम्प केलेले जाऊ शकत नाही. "आत्ता" ऑब्जेक्टला नॉन-आळशी रनटाइम बंधनकारक म्हणून चिन्हांकित करते. मूळ "चिन्ह" ऑब्जेक्टमध्ये $ ORIGIN असू शकतो. "डीफॉल्स्" ने अपरिभाषित चिन्हे नाकारल्या. "muldefs" बहुविध परिभाषा देतो. "कंघीर्रॅक" बहुभाषिक विभागांना एकत्रित करते आणि त्यांच्यासाठी गतिशील प्रतीकाच्या कॅशेंगिंग शक्य करते.

"nocombreloc" एकत्रित बहुभाषिक विभाग अक्षम करते. "नोकोपीरेलॉक" कॉपी रिलेक्सचे उत्पादन अक्षम करते.

- ( अभिलेख -)

- प्रारंभ-गट अभिलेख --नाव-गट

संग्रहणे संग्रह फायलींची यादी असावी. ते एकतर सुस्पष्ट फाईल नावे असू शकतात, किंवा -l पर्याय असू शकतात.

निर्दिष्ट अभिलेखात्वे वारंवार शोधले जातात जोपर्यंत नवीन नविन परिभाषित संदर्भ तयार होत नाहीत. साधारणपणे, आर्काइव्ह एकदाच आदेश ओळीवर निर्दिष्ट केल्यानुसार क्रमवारच शोधले जाते. अर्काईव्हमध्ये एखादी ऑब्जेक्ट ज्यास नंतर कमांड लाईनवर दिसतील त्याला निर्देशित केलेल्या अपरिभाषित चिन्हाचे निराकरण करण्यासाठी त्या संग्रहातील चिन्ह आवश्यक असल्यास, दुवाकर्ता त्या संदर्भास सोडविण्यास सक्षम होणार नाही. पुरावे गटबद्ध करून, सर्व संभाव्य संदर्भांची निराकरण होईपर्यंत ते सर्व वारंवार शोधले जातात.

या पर्यायाचा वापर केल्याने एक महत्त्वपूर्ण कामगिरी किंमत आहे. दोन किंवा अधिक संग्रहणे दरम्यान अपरिहार्य परिपत्रक संदर्भ नाहीत तेव्हाच हे सर्वोत्तम आहे.

--नाही-अज्ञात-इनपुट-आर्च

--no-accept-unknown-input-arch

लिंकरला इनपुट फाइल्स स्वीकारण्यास सांगते ज्यांचे आर्किटेक्चर ओळखले जाऊ शकत नाही. धारणा अशी आहे की वापरकर्ता काय करत आहेत हे त्यांना माहिती आहे आणि जाणूनबुजून या अज्ञात इनपुट फायलींमध्ये दुवा साधू इच्छित आहे. हे 2.14 रीलिझ करण्यापूर्वी लिंकरचे डिफॉल्ट वर्तन होते. प्रकाशन 2.14 पासूनचे पूर्वनिर्धारित वर्तन म्हणजे अशा इनपुट फाइल्स्ना नकार देणे, आणि त्यामुळे जुने वर्तन पुनर्संचयित करण्यासाठी --accept-unknown-input-arch पर्याय समाविष्ट केले गेले आहे

-सर्ट कीवर्ड

SunOS सहत्वता करीता हा पर्याय दुर्लक्षीत केला जातो

-आगामी

-या

-कॉल_शेअर केले

गतिशील लायब्ररीच्या विरूद्ध दुवा प्लॅटफॉर्मवर हे केवळ अर्थपूर्ण आहे ज्यासाठी सामायिक लायब्ररी समर्थित आहेत. हा प्लॅटफॉर्म सामान्यतः सामान्य असतो. या पर्यायाचे विविध पर्याय ते विविध प्रणाल्यांशी सुसंगत आहेत. आपण या पर्यायाचा वापर कमांड लाईनवर अनेक वेळा करू शकताः ती लायब्ररीला -l पर्यायांसाठी शोधते जी त्याचे अनुसरण करते.

-Bgroup

गतिशील विभागातील "DT_FLAGS_1" प्रविष्टीमध्ये "DF_1_GROUP" ध्वज सेट करा. यामुळे रनटाइम लिंकरला या ऑब्जेक्ट मध्ये लूकअप हाताळण्यास मदत होते आणि फक्त ग्रूपच्या आतच त्याच्या अवलंबनची आवश्यकता असते. --no-undefined निहित आहे. हा पर्याय फक्त ELF प्लॅटफॉर्मवर अर्थपूर्ण आहे जो शेअर्ड लायब्ररींना समर्थन देतो.

-बास्टॅटिक

-dn

-अन_शेअर

-स्थानीय

सामायिक केलेल्या लायब्ररीशी दुवा साधू नका. प्लॅटफॉर्मवर हे केवळ अर्थपूर्ण आहे ज्यासाठी सामायिक लायब्ररी समर्थित आहेत. या पर्यायाचे विविध पर्याय ते विविध प्रणाल्यांशी सुसंगत आहेत. आपण या पर्यायाचा वापर कमांड लाईनवर अनेक वेळा करू शकताः ती लायब्ररीला -l पर्यायांसाठी शोधते जी त्याचे अनुसरण करते.

-बसंबोलिक

शेअर्ड लायब्ररी तयार करताना, सामायिक केलेल्या लायब्ररीत परिभाषासाठी वैश्विक चिन्हाचा संदर्भ जोडा, जर असेल तर. साधारणपणे, शेअर्ड लायब्ररीतील परिभाषा ओलांडण्यासाठी शेअर्ड लायब्ररीच्या विरूद्ध लिंक केलेला प्रोग्राम शक्य आहे. हा पर्याय फक्त ELFplatforms वर अर्थपूर्ण आहे जो शेअर्ड लायब्ररींना साहाय्य करतो.

--check-sections

--नाही-चेक-विभाग

लिंकरला असे कळते की विभाजक पटलांना तपासण्याकरिता नियुक्त केले गेले आहे की कोणतेही ओव्हरलॅप्स आहेत का हे पाहण्यासाठी. सामान्यतः दुवा साधक ही तपासणी करेल, आणि त्यास कोणत्याही ओव्हरलॅप आढळल्यास तो योग्य त्रुटी संदेश तयार करेल. लिंकरला माहित आहे, आणि आच्छादनांच्या विभागांसाठी भत्ते करताहेत. आदेश ओळ स्विच --check-sections वापरुन मुलभूत वर्तन पुनर्संचयित केले जाऊ शकते.

--cref

एका क्रॉस रेफरेंस टेबलचे आउटपुट करा. जर एक दुवाकर्ता नकाशा फाइल व्युत्पन्न केली जात असेल तर, क्रॉस रेफरेंस टेबल मॅप फाइलमध्ये मुद्रित केला जातो. अन्यथा, हे मानक आउटपुटवर छापलेले आहे.

सारणीचे स्वरूप हेतूने सोपे आहे, जेणेकरून आवश्यक असल्यास स्क्रिप्टद्वारे त्यावर सहजपणे प्रक्रिया केली जाऊ शकते. चिन्हे छापली जातात, नावेनुसार क्रमवारी लावली जातात. प्रत्येक चिन्हासाठी, फाइल नावांची यादी दिलेली आहे. चिन्ह परिभाषित केले असल्यास, प्रथम सूचीबद्ध केलेली फाईल परिभाषाचे स्थान आहे. उर्वरित फाइलमध्ये चिन्हाचे संदर्भ आहेत.

--no-define-common

हा पर्याय पत्त्यांच्या असाइनमेंटला सामान्य प्रतीक्षेत रोखत आहे. स्क्रिप्ट आदेश "INHIBIT_COMMON_ALLOCATION" सारखाच प्रभाव आहे.

--no-define-common पर्याय आउटपुट फाइल प्रकाराच्या पसंतीतून सामान्य चिन्हांना पत्ते देण्याचा निर्णय decoupling करण्यास परवानगी देते; अन्यथा नॉन-रिरोकॅटेबल आऊटपुट प्रकार फोर्स ज्यांना सामान्य चिन्हास पत्ते देणे. --no-define-common वापरुन सामान्य भाशणे फक्त मुख्य प्रोग्राममध्येच पत्ते नियुक्त केलेल्या लायब्ररीमधून संदर्भित असतात. यामुळे न वापरलेली डुप्लिकेट जागा एकत्रित लायब्ररीमध्ये काढून टाकते आणि रनटाइम चिन्ह रिझोल्यूशनसाठी विशिष्ट शोध पथसह अनेक डायनॅमिक मोड्यूल असल्यास चुकीच्या प्रतिलिपीकडे सोडण्यावर कोणत्याही संभाव्य गोंधळस प्रतिबंध करते.

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

आऊटपुट फाइलमध्ये एक ग्लोबल सिग्नल तयार करा, ज्यामध्ये अभिव्यक्तीने दिलेल्या निरपेक्ष पत्त्याचा समावेश आहे. आपण या पर्यायाचा उपयोग अनेक वेळा आदेश ओळीत एकापेक्षा जास्त चिन्हांना परिभाषित करण्यासाठी आवश्यक असल्यास वापरू शकता. या संदर्भात अभिव्यक्तिसाठी मर्यादित प्रकारचे अंकगणित समर्थित आहे: आपण हेक्झाडेसीमल स्थिरांक किंवा विद्यमान चिन्हाचे नाव देऊ शकता, किंवा "-" आणि हेक्जाडेसिमल स्थिरांक किंवा प्रतीक जोडण्यासाठी किंवा "-" वापरू शकता. आपल्याला अधिक विस्तृत अभिव्यक्तीची आवश्यकता असल्यास, एका स्क्रिप्टवरून linker आदेश भाषा वापरण्याचा विचार करा. टीप: चिन्हांदरम्यान कोणतीही पांढर्या जागा असावी, समांतर चिन्ह (`` = ''), आणि अभिव्यक्ती असावी .

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

--नो- डिगलल

हे पर्याय त्रुटी संदेश आणि इतर आऊटपुटमध्ये प्रतीक नावे न उघडता नियंत्रण करतात. लिंकरला नकार दर्शविण्यासाठी सांगितले जाते तेव्हा ते प्रतीक नावे एका वाचनीय पध्दतीत सादर करण्याचा प्रयत्न करते: ते ऑब्जेक्ट फाईल स्वरूपात वापरल्यास ते रेखांकित करते आणि C + भिन्न कंपाइलरचे वेगवेगळे मालगुले शैली आहेत. आपल्या कंपाइलरसाठी योग्य मोडिंग शैली निवडण्यासाठी पर्यायी मोडलिंग शैली तर्क वापरला जाऊ शकतो. जोपर्यंत वातावरण परिवर्तनशील COLLECT_NO_DEMANGLE सेट केले जात नाही तोपर्यंत दुवाकर्ता डीफॉल्टमध्ये मोडतोड होईल. हे पर्याय मुलभूतरित्या अधिलिखित करण्यासाठी वापरले जाऊ शकतात.

--dynamic-linker फाइल

डायनॅमिक लिंकरचे नाव सेट करा. गतिशील जोडलेल्या ELF एक्झिक्यूटेबल तयार करताना हे केवळ अर्थपूर्ण आहे. डीफॉल्ट डायनॅमिक लिंकर सामान्यतः बरोबर आहे; आपण काय करत आहात हे आपल्याला माहित नसल्यास याचा वापर करू नका.

--इम्डेड-रिलेक्स

हा पर्याय फक्त अर्थपूर्ण आहे जो MIPS एम्बेडेड पीआयसी कोडला जोडतो, जी-एम-एम्बेडेड-पीक पध्दतीने GNU कंपाइलर आणि कोडिलरला बनविले जाते. यामुळे लिंकरला एक टेबल तयार करण्यास कारणीभूत होते जे पॉईटर व्हॅल्यूजमध्ये स्टॅटिकली इनिशियलाइज केलेले डेटा हटविण्यासाठी रनटाइममध्ये वापरले जाऊ शकते. तपशीलासाठी चाचूइट / लिड-एम्पीक मधील कोड पहा.

--बाह्य-इशारे

सर्व इशारे चुका म्हणून हाताळू

--force-exe-प्रत्यय

आउटपुट फाइलमध्ये .exe प्रत्यय असल्याचे सुनिश्चित करा

यशस्वीरित्या पूर्णतः जोडण्यात आलेले आउटपुट फाइलमध्ये ". Exe " किंवा " .dll " प्रत्यय नसल्यास, हा पर्याय लिंकरला आउटपुट फाइलची प्रत ".exe" प्रत्यय सह एकाच नावाची कॉपी करण्यास भाग पाडते. मायक्रोसॉफ्ट विंडोज होस्टवर असॉम्फाइड यूनिक्स मेकफाइल वापरताना हा पर्याय उपयोगी आहे कारण विंडोजचे काही आवृत्त्या एखाद्या इमेजवर चालत नाही, जोपर्यंत ते ".exe" प्रत्यय मध्ये समाप्त होत नाही.

--no-gc-sections

--gc-sections

न वापरलेले इनपुट विभागांचा कचरा संकलन सक्षम करा. हे लक्ष्यांवर दुर्लक्ष केले जाते जे या पर्यायास समर्थन देत नाहीत. हा पर्याय -आर शी सुसंगत नाही, किंवा डायनॅमिक जोडणीसहही वापरला जाऊ नये. आदेश ओळीवर --no-gc-sections निर्देशीत करून पूर्वनिर्धारित वर्तन (या कचरा संकलन सुरू न करण्याचा ) पुनर्संचयित करणे शक्य आहे.

- मदत

मानक आउटपुट वरील कमांड-लाइन पर्यायांचा सारांश मुद्रित करा आणि बाहेर पडा.

--target-help

मानक आउटपुटवरील सर्व लक्ष्य विशिष्ट पर्यायांचे सारांश मुद्रित करा आणि बाहेर पडा.

-मॅप मॅपफाइल

फाइल मॅपफाइलवर एक दुवा नकाशा मुद्रित करा. वरील -म पर्यायाचे वर्णन पहा.

--नाही-ठेवा-स्मृती

ld सर्वसाधारणपणे मेमरीतील इनपुट फाइलच्या प्रतीक तक्ता कॅशिंग करून मेमरी वापराच्या वेगाने अनुकूल करते. हे पर्याय ld ला मेमरी वापरासाठी अनुकूल करणे आवश्यक आहे, आवश्यक असल्यास प्रतीक तक्ता पुन्हा वाचणे. मोठ्या एक्झिक्युटेबलशी दुवा साधताना ld मेमरी स्पेस संपल्यावर हे आवश्यक असू शकते.

--no-undefined

-z defs

नॉन-सिम्बॉलिक शेअर्ड लाइब्रेरी तयार करताना सामान्यत: अपरिभाषित चिन्हे अनुमत आहेत आणि रनटाइम लोडर द्वारे सोडवण्यास सोडले जातात. हे पर्याय अशा अपरिभाषित चिन्हे अनुमत करतात.

--लावले-बहु-परिभाषा

-z मॉलदेफ

साधारणपणे जेव्हा एक चिन्ह अनेक वेळा परिभाषित केले जाते, तेव्हा दुवाकर्ता एक गंभीर त्रुटी नोंदवेल. हे पर्याय बहुविध परिभाषा देतात आणि पहिली परिभाषा वापरली जाईल.

--allow-shlib-undefined

जरी ना - अपरिभाषित सेट केले असले तरी देखील सामायिक केलेल्या ऑब्जेक्टमध्ये अपरिभाषित चिन्हास परवानगी द्या. निव्वळ परिणाम होईल की नियमित ऑब्जेक्टमध्ये अपरिभाषित प्रती अद्याप त्रुटी ट्रिगर करेल, परंतु सामायिक केलेल्या ऑब्जेक्ट्स मध्ये अनिर्धारित प्रतीक दुर्लक्ष केले जातील. No_undefined च्या अंमलबजावणीमुळे असे समजले जाते की रनटाइम दुवाकर्ता अपरिभाषित चिन्हावर गळा दाटून राहील. तथापि किमान एक प्रणाली आहे (बीओएस) जेथे शेअर्ड लाइब्ररिज्मधील अपरिभाषित चिन्हे सामान्य आहेत कारण कर्नल त्यांना लोड टाइमवर पॅच करतो जेणेकरून हे निवडण्यासाठी वर्तमान आर्किटेक्चरसाठी सर्वात योग्य आहे. IE गतिशीलपणे योग्य मेमसेट फंक्शन निवडा. एचपीपीएच्या सामायिक लायब्ररीमध्ये अपरिभाषित प्रतीके असणे देखील हे सामान्य आहे.

--no-undefined-version

सामान्यत: जेव्हा एखाद्या प्रतीकाचे अपरिभाषित आवृत्ती असते, तेव्हा लिंकर त्याकडे दुर्लक्ष करेल. हा पर्याय नुसार अपरिभाषित आवृत्तीसह चिन्हांची आणि त्यास एक गंभीर त्रुटी नाकारते.

--नाही-चेतावणी-जुळत नाही

साधारणपणे ld त्रुटी दर्शवेल जर आपण काही कारणास्तव जुळवून घेतलेल्या इनपुट फाइल्स् एकत्र जोडण्याचा प्रयत्न केला, कदाचित कारण त्यांना विविध प्रोसेसर किंवा विविध एंडियननेस साठी संकलित केले गेले आहे. हा पर्याय ld ला निर्देशीत करतो की अशा संभाव्य त्रुट्यांना शांतपणे परवानगी द्यावी. या पर्यायचा उपयोग सावधगिरीने केला जाऊ शकतो, प्रकरणांमध्ये जेव्हा आपण काही विशेष कृती केली असेल जे लिंकर त्रुटी अयोग्य असल्याचे सुनिश्चित करते.

--no-whole-archive

त्यानंतरच्या संग्रहित फायलींसाठी --हल-संग्रह पर्यायचा प्रभाव बंद करा.

--noinhibit-exec

एक्झिक्यूटेबल आउटपुट फाइल ठेवा जेव्हाही ती वापरता येइल. सामान्यतः, लिंकर प्रक्रिये दरम्यान त्रुटी आढळल्यास लिंकर आउटपुट फाइल तयार करणार नाही; आउटपुट फाइल लिहिल्याशिवाय ती बाहेर पडते जेव्हा त्यात काहीही त्रुटी उद्भवत नाही.

-nostdlib

केवळ शोध लाइब्ररी संचयीका सरळ आदेश ओळीवर निर्देशीत केल्या. लिंकर स्क्रिप्टमध्ये निर्दिष्ट केलेली लायब्ररी निर्देशिका (कमांड लाइनवर निर्दिष्ट केलेल्या लिंकर स्क्रिप्टसह) दुर्लक्षिल्या जातात.

--फोर्मॅट आउटपुट-फॉरमॅट

ld एकापेक्षा अधिक ऑब्जेक्ट फाईल्सला समर्थन देण्यासाठी कॉन्फिगर केले जाऊ शकते. तुमच्या ld ने अशा प्रकारे संरचीत केल्यास, आउटपुट ऑब्जेक्ट फाईलसाठी बायनरी फॉरमॅट निर्दिष्ट करण्यासाठी आपण --oformat पर्याय वापरू शकता. जेव्हा ld वैकल्पिक ऑब्जेक्ट फॉर्मेटचे समर्थन करण्यासाठी कॉन्फिगर केले जाते, तेव्हा आपल्याला सामान्यतः हे निर्दिष्ट करण्याची आवश्यकता नाही, कारण डीडी डीफॉल्ट आउटपुट स्वरूपात तयार करण्यासाठी कॉन्फिगर केले जावे जेणेकरून प्रत्येक मशीनवरील सर्वात सामान्य स्वरुपन. आउटपुट-स्वरूप मजकूर स्ट्रिंग आहे, BFD लायब्ररीद्वारे समर्थित विशिष्ट स्वरूपनाचे नाव. (आपण objdump -i सह उपलब्ध बायनरी स्वरूपनांची यादी करू शकता.) स्क्रिप्ट आदेश "OUTPUT_FORMAT" देखील आउटपुट स्वरूपन निर्दिष्ट करू शकतो, परंतु हा पर्याय त्यास ओव्हरराइड करेल.

-कमाजिक

हा पर्याय Linux सहत्वता दुर्लक्षित केला आहे.

-क्यूई

हा पर्याय SVR4 सहत्वता दुर्लक्षित केला आहे.

--आराम

मशीन अवलंबित प्रभावासह एक पर्याय. हा पर्याय फक्त काही लक्ष्यांवर समर्थित आहे.

काही प्लॅटफॉर्म्सवर, --relax पर्याय ग्लोबल ऑप्टिमायझेशन करतो जे लिंकर प्रोग्राममध्ये पत्ता देणे योग्य करते, जसे की अडथळा अॅड्रेस मोड आणि आऊटपुट ऑब्जेक्ट फाईलमध्ये नवीन निर्देशांचे संश्लेषण करणे शक्य होते.

काही प्लॅटफॉर्मवर हे लिंक वेळ ग्लोबल ऑप्टिमायझेशन परिणामी एक्झिक्यूटेबल अशक्यतेचे प्रतिकात्मक डीबगिंग करू शकते. हे प्रोसेसर च्या Matsushita MN10200and MN10300 कुटुंब बाबतीत म्हणून ओळखले जाते.

हे समर्थित नसलेले प्लॅटफॉर्मवर, --relax स्वीकारले जाते परंतु दुर्लक्ष केले जाते.

--reain-symbols-file फाइलनाव

इतर सर्व फाइल्स काढून टाकून फक्त फाईल फाइलनाममध्ये सूचीबद्ध केलेले चिन्हच ठेवा. फाइलचे नाव केवळ एक फ्लॅट फाइल आहे, प्रत्येक ओळीत एक चिन्ह नावाने. हा पर्याय विशेषत: वातावरणात उपयुक्त आहे (जसे की VxWorks) जेथे मोठ्या जागतिक प्रतीको सारणीची हळूहळू जमा होते, रन-टाइम मेमरीचे संरक्षण करण्यासाठी.

--reain-symbols-file अपरिभाषित प्रतीके, किंवा पुनर्स्थापनासाठी आवश्यक चिन्हे वगळत नाही .

आज्ञावलीमध्ये एकदाच आपण --reain-symbols-file निर्दिष्ट करू शकता. हे ओव्हरराईड -s आणि -S

-रपथ दिर

रनटाइम लायब्ररी शोध पथसाठी एक निर्देशिका जोडा. हे सामायिक ऑब्जेक्टसह ELFexecutable दुवा साधताना वापरले जाते. सर्व -rpath वितर्क एकत्रित केले जातात आणि रनटाइम दुवाकर्त्याकडे पाठवले जातात, जे रनटाइमवर सामायिक ऑब्जेक्ट्स शोधण्यात त्यांचा वापर करतात. -ppath पर्याय देखील वापरला जातो जेव्हा शेअर केलेली ऑब्जेक्ट्स शोधणे जेव्हा शेअर केलेल्या ऑब्जेक्टसाठी आवश्यक असलेल्या लिंकमध्ये स्पष्टपणे समाविष्ट होते; -path-link पर्यायचे वर्णन पहा. जर एल्फ ऍक्सेब्युटबल जोडताना -rpath वापरला नाही, तर पर्यावरण परिभाषा "LD_RUN_PATH" ची सामुग्री वापरली जाईल जर ती परिभाषित असेल

-रोथ पर्याय SunOS वर देखील वापरले जाऊ शकतात. डिफॉल्टनुसार, SunOS वर, लिंकर सर्व- एल पर्यायांसाठी एक रनटाइम शोध पॅच तयार करेल जे ते दिले जाईल. जर -rpath पर्याय वापरला असेल तर, -ला पर्याय वापरून दुर्लक्ष करून, रनटाइम शोध मार्ग विशेषतः -ppath पर्याय वापरून बनवला जाईल. हे gcc वापरताना खूप उपयोगी असू शकते, ज्यामुळे अनेक -एल पर्याय समाविष्ट होतात जे NFS आरोहीत फाइलप्रणालीवर असू शकतात.

इतर एल्फिफाइड लिंकर्सशी सुसंगततेसाठी, जर -आर पर्याय एखाद्या फाईलचे नाव ऐवजी निर्देशिका नावाने पाठविला जातो, तर ती -ppath पर्याय म्हणून मानले जाते.

-rpath-link DIR

ELF किंवा SunOS वापरताना, एक सामायिक लायब्ररी दुसर्याची आवश्यकता असू शकते. हे तेव्हा घडते जेव्हा "ld -shared" दुव्यामध्ये एक सामायिक फायलींपैकी एक म्हणून सामायिक केलेली लायब्ररी असते.

जेव्हा गैर-सामायिक, नॉन-पुनर्स्थापनात्मक दुवा करतांना दुवा साधणारा अशा अवलंबनावर असतो तेव्हा तो आवश्यकपणे सामायिक केलेल्या लायब्ररीचे शोध घेण्याचा प्रयत्न करेल आणि तो त्यात स्पष्टपणे समाविष्ट नसेल तर त्यामध्ये दुवा अंतर्भूत करण्याचा प्रयत्न करेल. अशा परिस्थितीत, -rpath-link पर्याय दर्शविण्याजोगी डिरेक्ट्रिजचा संच दर्शवतो . -ppath-link पर्याय डायलर नावांची क्रम निर्दिष्ट करू शकते, ज्याद्वारे कोलनने विभक्त केलेल्या नावांची सूची निर्दिष्ट केली जाऊ शकते किंवा अनेक वेळा दिसू शकते.

हा पर्याय सावधगिरीने वापरला पाहिजे कारण तो शोध पथला ओव्हरराइड करतो जो सामायिक लाइब्ररीमध्ये संकलित केलेला असू शकतो. या प्रकरणात रनटाइम लिंकरने केले असेल त्यापेक्षा अनावधानाने वेगळा शोध मार्ग वापरणे शक्य आहे.

आवश्यक शेअर्ड लाइब्ररिज शोधण्यासाठी लिंकर खालील शोध मार्गांचा वापर करतो.

1

-ppath-link पर्यायांनी निर्देशित केलेली कोणतीही निर्देशिका

2

-ppath पर्यायांनी निर्दिष्ट केलेली कोणतीही निर्देशिका. -ppath-rpath-link मधील फरक आहे -rpath पर्यायांनी निर्देशित केलेली डिरेक्ट्री एक्जीक्यूटेबलमध्ये आणि रनटाइममध्ये वापरली जातात, परंतु -rpath-link पर्याय फक्त लिंक वेळेस प्रभावी आहे. हे केवळ स्थानिक दुवाकर्त्यासाठी आहे

3

एल्फ प्रणालीवर, जर -rpath व "rpath-link" पर्याय वापरले गेले नाहीत, तर पर्यावरण परिवर्तनीय "LD_RUN_PATH" ची सामुग्री शोधा. हे केवळ स्थानिक दुवाकर्त्यासाठी आहे

4

SunOS वर, जर -rpath पर्याय वापरला नाही, तर -एल पर्याय वापरून निर्दिष्ट केलेली कोणतीही निर्देशिका शोधा.

5

नेटिव्ह लिंकरसाठी, पर्यावरण परिवर्तनीय "LD_LIBRARY_PATH" ची सामग्री

6

नेटिव्ह ELF linker साठी, सामायिक वाचनालयाच्या "DT_RUNPATH" किंवा "DT_RPATH" मध्ये निर्देशित केलेली सामुग्री सामायिक लाइब्ररिज्साठी आवश्यक आहे. "DT_RPATH" प्रविष्ट्या अस्तित्वात असल्यास "DT_RPATH" प्रविष्ट्या दुर्लक्षित केल्या आहेत.

7

मुलभूत संचयीका, साधारणपणे / lib आणि / usr / lib .

8

एएलएफ प्रणालीवर नेटिव्ह लिंकरसाठी , जर फाइल /etc/ld.so.conf अस्तित्वात असेल, तर त्या फाईलमधे आढळलेल्या डिरेक्ट्रींची यादी.

आवश्यक सामायिक लायब्ररी सापडत नसल्यास, दुवाकर्ता एक चेतावणी जारी करेल आणि दुव्यासह पुढे सुरू राहील.

-शेअर

-बिटेरेबल

एक सामायिक लायब्ररी तयार करा. हे सध्या केवळ ELF, XCOFF आणि SunOS प्लॅटफॉर्मवर समर्थित आहे. SunOS वर, दुवाकर्ता आपोआप एक सामायिक लायब्ररी तयार करेल जर -e पर्याय वापरला नसेल आणि दुव्यामध्ये अपरिभाषित प्रतीके असतील

--sort-common

हा पर्याय योग्य आऊटपुट विभागांमध्ये त्यास आकारानुसार सामान्य चिन्हे क्रमवारीत लावण्यास सांगतो. सर्व प्रथम एक बाइट चिन्ह, मग सर्व दोन बाइट, मग चारही बाइट, आणि नंतर सर्व काही. हे संरेखन मर्यादांमुळे चिन्हे दरम्यान अंतर टाळण्यासाठी आहे.

--split-by-file [ size ]

--split-by-reloc प्रमाणेच परंतु आकार पूर्ण होताना प्रत्येक इनपुट फाइलकरिता नवीन आउटपुट विभाग तयार करतो. दिलेले नसल्यास 1 च्या आकारासह आकार डिफॉल्ट असतात

--split-by-reloc [ गणना ]

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

--स्टॅट

दुवा करणार्या ऑपरेशनविषयी गणना आणि प्रदर्शन आकडेवारी, जसे की निष्पादन वेळ आणि मेमरी वापर

--विशिष्ट-स्वरूप

काही लक्ष्यांकरिता, ld चे उत्पादन काही विद्यमान दुवाकर्त्याच्या आऊटपुट पासून काही प्रकारे भिन्न आहे. या स्विचची विनंती त्याऐवजी परंपरागत स्वरूप वापरण्यासाठी ld करते.

उदाहरणार्थ, SunOS वर, एलडी चिन्ह स्ट्रिंग टेबलमध्ये डुप्लिकेट प्रविष्ट्या एकत्र करते. यामुळे 30% पेक्षा अधिक डीबगिंग माहितीसह आउटपुट फाइलचा आकार कमी करता येतो. दुर्दैवाने, SunOS "dbx" प्रोग्राम परिणामी प्रोग्राम वाचू शकत नाही ("जीडीबी" मध्ये कोणतीही अडचण नाही) डुप्लिकेट नोंदी एकत्र न करण्यासाठी --डेटेड-फॉर्मेट स्विच ld ला सूचित करतो .

--section -start sectionname = org

ऑर्गनायझेशनने दिलेल्या संपूर्ण पत्त्यावर आउटपुट फाइलमधील एक विभाग शोधा. आपण कमांड लाईनमधील अनेक विभाग शोधण्याकरिता हा पर्याय वापरु शकता. org हाईक्साडेसिमल पूर्णांक असलाच पाहिजे; अन्य लिंकर्सशी सुसंगततेसाठी, आपण मुख्य 0x हेक्साडेसिमल मूल्यांशी संबंधित सामान्यतः वगळू शकता. टिप: sectionname , equal equals (`` = ''), आणि org दरम्यान कोणतीही पांढर्या जागा असावी.

-Tbss संस्था

-टाडेट संस्था

-ठठ्ठ संस्था

--- साठी --- "bss", "data", किंवा आउटपुट फाइलमधील "मजकूर" सेगमेंटसाठी प्रारंभ पत्ता म्हणून org चा वापर करा. org हाईक्साडेसिमल पूर्णांक असलाच पाहिजे; अन्य लिंकर्सशी सुसंगततेसाठी, आपण मुख्य 0x हेक्साडेसिमल मूल्यांशी संबंधित सामान्यतः वगळू शकता.

--dll-verbose

--verbose

Ld साठी आवृत्ती क्रमांक प्रदर्शित करा आणि समर्थित असलेल्या लिंकर इम्यूलेशनची सूची करा. कोणत्या इनपुट फायली उघडल्या जाऊ शकत नाहीत आणि प्रदर्शित केल्या जाऊ शकत नाहीत ते प्रदर्शित करा. Linker द्वारे वापरल्या जाणार्या linker स्क्रिप्ट प्रदर्शित करा

--version-script = version-scriptfile

लिंकरला आवृत्ती स्क्रिप्टचे नाव निर्दिष्ट करा. लायब्ररीच्या निर्मितीसाठी आवृत्तीच्या वारसांविषयी अतिरिक्त माहिती निर्दिष्ट करण्यासाठी शेअर्ड लायब्ररी तयार करताना हे सामान्यतः वापरले जाते. हा पर्याय फक्त ELF प्लॅटफॉर्मवर अर्थपूर्ण आहे जो शेअर्ड लायब्ररींना समर्थन देतो.

--वार्न-कॉमन

जेव्हा सामान्य चिन्ह दुसर्या सामान्य चिन्हासह किंवा प्रतीक परिभाषासह एकत्रित केले जाते तेव्हा चेतावणी द्या. युनिक्स लिंक्डर्स हे काहीसे मंदावून घेण्याची अनुमती देतात, परंतु काही इतर ऑपरेटिंग सिस्टीमवर दुवा साधत नाहीत. हा पर्याय आपल्याला जागतिक प्रतीके एकत्रित करण्यापासून संभाव्य समस्या शोधण्याची मुभा देतो. दुर्दैवाने, काही सी ग्रंथालये या पद्धतीचा वापर करतात, म्हणून आपल्याला लायब्ररीमधील तसेच आपल्या प्रोग्रामच्या चिन्हाबद्दल काही इशारे मिळू शकतात.

तीन प्रकारच्या जागतिक चिन्हे आहेत, ज्या सी उदाहरणाद्वारे येथे नमूद केल्या आहेत:

int i = 1;

एक परिभाषा, जी आऊटपुट फाइलच्या प्रारंभिक डेटा विभागात जाते

बाह्य अंतर i;

एक अपरिभाषित संदर्भ, जी जागा वाटप करत नाही. कुठेही बदलण्यासाठी एक परिभाषा किंवा सामान्य चिन्ह असणे आवश्यक आहे.

int i;

एक सामान्य चिन्ह जर एखाद्या व्हेरिएबलसाठी फक्त (एक किंवा अधिक) सामान्य चिन्हे असतील तर ती आउटपुट फाइलच्या सुरूवात न झालेला डाटा क्षेत्रामध्ये जाईल लिंकर एकाच व्हेरिएबलसाठी एका एकल चिन्हात एकाधिक सामान्य चिन्हे एकत्र करुन. ते वेगवेगळ्या आकाराचे असतील तर ते सर्वात मोठे आकार निवडतात. जर एकच व्हेरिएबलची व्याख्या असेल तर, लिंकरने एक सामान्य चिन्ह घोषित केले आहे.

वॉर्न-कॉमन ऑप्शन पाच प्रकारच्या चेतावण्या निर्माण करू शकते. प्रत्येक चेतावणी ओळींची एक जोडी असते: प्रथम फक्त आलेले प्रतीक वर्णन करते, आणि दुसरा मागील नावाचे त्याच चिन्हासह वर्णन करतो. दोन किंवा दोन चिन्हे एक सामान्य चिन्ह असतील.

1

एका चिन्हासाठी एक व्याख्या आधीपासूनच असल्यामुळे, एका संदर्भांमध्ये सामान्य चिन्ह चालू करणे.

(
): चेतावणी: परिभाषानुसार अधिसूचना ` 'च्या सामान्य: (
): चेतावणी: येथे परिभाषित

2

एका संकेतामध्ये एक सामान्य चिन्ह उभे करणे, कारण चिन्हासाठी नंतरची व्याख्या आढळून आली आहे. हे आधीचे केस सारखेच आहे, सिग्नल भिन्न क्रमाने आढळून येतात.

(
): चेतावणी: ` 'सामान्य (
) अध्यापन: चेतावणी: येथे सामान्य आहे

3

मागील समान आकाराच्या सामान्य चिन्हासह एक सामान्य चिन्ह एकत्रित करणे.

(
): चेतावणी: ` ' (
) च्या एकापेक्षा अधिक सामान्य: चेतावणी: मागील सामान्य येथे आहे

4

मागील सामान्य सामान्य चिन्हासह एक सामान्य चिन्ह एकत्रित करणे.

(
): चेतावणी: ` 'मोठ्या सामान्य (
) द्वारे अधिसूचना: चेतावणी: मोठा सामान्य येथे आहे

5

मागील सामान्य सामान्य चिन्हासह एक सामान्य चिन्ह मिर्जिंग. हे आधीचे केस सारखेच आहे, सिग्नल भिन्न क्रमाने आढळून येतात.

(
): चेतावणी: ` 'सामान्य सामान्य फाइलमधील अधिलिखित: (
): चेतावणी: येथे लहान सामान्य आहे

--वार्निश-कन्स्ट्रक्टर

सावधानतेस की कोणतेही वैश्विक बांधकाम व्यावसायिक वापरतात. हे केवळ काही ऑब्जेक्ट फाईल स्वरुपनासाठी उपयुक्त आहे. COFF किंवा ELF यासारख्या स्वरूपासाठी, दुवा साधक जागतिक कन्स्ट्रक्टरचा वापर शोधू शकत नाही.

--वार्न-एकाधिक-जीपी

चेतावणी द्या की आउटपुट फाइलमध्ये बहुविध पॉइंटर मूल्ये आवश्यक आहेत. हे काही प्रोसेसरांसाठीच अर्थपूर्ण आहे, जसे की अल्फा. विशिष्टपणे, काही प्रोसेसरांनी एका विशिष्ट विभागात मोठ्या-मौल्यवान स्थिरांक ठेवले. या विभागातील मध्यभागी एक विशेष नोंद (ग्लोबल पॉइंटर) आहे, जेणेकरून बेस रिजर्व्हिव्ह रिस्पॉलेशन अॅड्रेसिंग मोडच्या माध्यमातून स्थिरपणे लोड केले जाऊ शकते. बेस-रजिस्टर नातेसंबंधित मोडमध्ये ऑफसेट निश्चित असल्यामुळे आणि तुलनेने लहान (उदा., 16 बिट्स) असल्याने, हे स्थिर पूलचे कमाल आकार मर्यादित करते. मोठ्या प्रोग्राम्समध्ये सर्व संभाव्य स्थिरांकांना संबोधित करण्यासाठी अनेक ग्लोबल पॉइंटर मूल्ये वापरणे आवश्यक असते. या प्रकरणात जेव्हा हे प्रकरण उद्भवते तेव्हा हा पर्याय चेतावणी देईल.

--विना एकदा

केवळ प्रत्येक नमुना प्रतीकासाठी एकदाच चेतावणी द्या.

--वार्न-सेक्शन-संरेखित

संरेखनमुळे आऊटपुट विभाग बदललेला असेल तर चेतावणी द्या. थोडक्यात, संरेखन इनपुट विभागाने सेट केले जाईल. पत्ता स्पष्टपणे निर्दिष्ट नसेल तरच बदल केला जाईल; म्हणजेच, "SECTIONS" कमांड, सदस्यासाठी प्रारंभ पत्ता निर्दिष्ट करत नसल्यास.

--उल-संग्रहण

--whole-archive पर्यायनंतर आदेश पंक्तीवर उल्लेख केलेल्या प्रत्येक संग्रहणासाठी, आवश्यक ऑब्जेक्ट फाइल्ससाठी संग्रहण शोधण्याऐवजी, प्रत्येक ऑब्जेक्ट फाईलला लिंकमध्ये संग्रहणामध्ये समाविष्ट करा. सामान्यत: अर्काईव्ह फाइलला शेअर्ड लायब्ररीमध्ये बदलण्यासाठी वापरले जाते, प्रत्येक ऑब्जेक्टला परिणामी सामायिक लाइब्ररीमध्ये समाविष्ट केले जाऊ शकते. हा पर्याय एकापेक्षा अधिक वेळा वापरला जाऊ शकतो.

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

--वाप प्रतीक

प्रतीकसाठी आवरण फंक्शन वापरा. चिन्हासाठी कोणताही अपरिभाषित संदर्भ "__ wrap_symbol" वर सोडवला जाईल. "__real_symbol" चा कोणताही अपरिभाषित संदर्भ चिन्हांना सोडवला जाईल.

हे सिस्टम फंक्शनसाठी आवरण प्रदान करण्यासाठी वापरले जाऊ शकते. आवरण फंक्शनला "__wrap_symbol" असे म्हटले पाहिजे. जर तो सिस्टीम कार्याला कॉल करू इच्छित असेल तर त्याला "__ रिअल_संबॉल" असे म्हणणे आवश्यक आहे.

येथे एक क्षुल्लक उदाहरण आहे:

रिकामा * __wrap_malloc (int c) {printf ("malloc% ld सह म्हणतात \ n", c); __real_malloc (c); }

जर आपण या फाइलसह अन्य कोड --wrap malloc वापरून दुवा साधला, तर "malloc" सर्व कॉल त्याऐवजी "__wrap_malloc" फंक्शन कॉल करेल. "__wrap_malloc" मध्ये "__real_malloc" ला कॉल करणे वास्तविक "malloc" फंक्शन कॉल करेल.

आपण "__real_malloc" फंक्शन देखील पुरवू शकता, जेणेकरून --wrap पर्यायशिवाय दुवे यशस्वी होतील. आपण असे केल्यास, आपण "___ real_malloc" ची व्याख्या "__wrap_malloc" सारख्याच फाइलमध्ये करू नये; आपण असे केल्यास, दुवा साधकाने "malloc" वर तोडण्याची संधी आधी सांबाळणारा कॉल निराकरण करु शकतो.

--enable-new-dtags

--disable-new-dtags

हा दुवाकर्ता ELF मध्ये नवीन गतिमान टॅग तयार करू शकतो. परंतु जुने ELF प्रणाली त्यांना समजू शकत नाही. आपण --enable-new-dtags निर्देशीत केल्यास, गतिमान टॅग्ज आवश्यकतेनुसार तयार केले जातील. आपण --disable-new-dtags निर्देशीत केल्यास, नवीन डायनॅमिक टॅग तयार केले जाणार नाहीत. डिफॉल्ट द्वारे, नवीन डायनामिक टॅग तयार केले जात नाहीत. लक्षात घ्या की हे पर्याय फक्त forelf सिस्टमसाठी उपलब्ध आहेत.

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

सर्व लक्ष्यांकरिता सामान्य असलेल्या पर्यायांच्या व्यतिरिक्त, i386 पीई लिंकर अतिरिक्त कमांड लाइन पर्यायांना समर्थन पुरवतो जे i386 पीई लक्ष्यसह विशिष्ट आहेत. पर्याय जे मूल्य घेतात त्या त्यांच्या मोकळी जागा एकतराने किंवा समांतर चिन्हाद्वारे वेगळ्या केल्या जाऊ शकतात.

--add-stdcall-alias

दिले असल्यास, stdcall प्रत्यय (@ nn ) सह चिन्ह म्हणून एक्सपोर्ट केले जाईल आणि प्रत्यय छेडनु देखील असेल.

--base-file फाइल

Dlltool सह डीएलएल निर्माण करण्यासाठी आवश्यक सर्व पुनर्स्थापनांचे बेस पत्ते जतन करण्यासाठी फाईलचे नाव म्हणून फाइल वापरा.

--dll

नियमित एक्झिक्यूटेबलऐवजी डीएलएल तयार करा. आपण "$ .def" फाईलमध्ये -वेबर्ड किंवा "LIBRARY" निर्दिष्ट देखील करू शकता.

--enable-stdcall-fixup

--disable-stdcall-fixup

जर दुवा निदर्शनास येत असेल तर तो सोडवता येत नाही, तो दुसर्या चिन्हासाठी शोधत असलेला `` फजी लिंक्डिंग '' करण्याचा प्रयत्न करेल जो फक्त सिंबल नावाच्या (सीडीसीएल वि stdcall) स्वरूपातील फरक आहे आणि त्या चिन्हाचा सामन्यासाठी उदाहरणार्थ, "undefined" प्रतीक "_foo" कदाचित "_foo @ 12" या कार्याशी निगडीत आहे, किंवा अपरिभाषित चिन्ह "_bar @ 16" फंक्शन "_bar" शी संबंधित असू शकतो. लिंकरने हे केले तेव्हा, तो एक चेतावणी छपाई करतो, कारण सामान्यत: दुवा साधण्यात अयशस्वी होणं आवश्यक असतं, परंतु कधीकधी थर्ड-पार्टी डीएलएलमधून तयार केलेल्या लायब्ररींना आयात करण्यासाठी हे वैशिष्ट्य आवश्यक असू शकते. आपण --enable-stdcall-fixify निर्देशीत केल्यास, हे गुणविशेष पूर्णतया सक्षम केले आहे व सावधानता छपाईयोजना नाही. आपण --disable-stdcall-fixup निर्देशीत केल्यास, हे गुणविशेष अकार्यान्वित केले आहे व सदोषीत त्रुटी आढळल्यास

--export-all-symbols

दिल्यास, DLL तयार करण्यासाठी वापरल्या जाणार्या ऑब्जेक्ट्समधील सर्व जागतिक चिन्ह DLL द्वारे निर्यात केले जातील. लक्षात घ्या की हे मुलभूत आहे जर अन्यथा निर्यातीची चिन्ह नसेल तर जेव्हा डीईएफ फाइल्सद्वारे चिन्हांची स्पष्टपणे निर्यात केली जाते किंवा फंक्शन गुणधर्मांद्वारे निष्पक्षपणे निर्यात केली जाते, तेव्हा डीफॉल्ट काहीही नसल्यास निर्यात करणे आवश्यक नाही जोपर्यंत हा पर्याय दिला नाही लक्षात घ्या की "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTS टाटअप @ 12", आणि "अशुल्लकता", स्वयंचलितपणे निरस्त केले जाणार नाहीत. तसेच, इतर डीएलएलमधून आयात केलेले प्रतीक पुन्हा निर्यात केले जाणार नाहीत, तसेच "_हेड_" किंवा "_निनाम" सह समाप्त होणारे डीएलएलचे अंतर्गत लेआउट दर्शविणारी चिन्हे नाहीत. याव्यतिरिक्त, "libgcc", "libstd ++", "libmingw32", किंवा "crtX.o" चे कोणतेही चिन्ह निर्यात केले जाणार नाहीत. C ++ DLL सह मदत करण्यासाठी ज्या नाण्यांची नावे "__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-symbols चिन्ह , प्रतीक , ...

प्रतीकांची सूची निर्दिष्ट करते ज्यास स्वयंचलितपणे निर्यातीसाठी नसावे. प्रतीक नावे स्वल्पविराम किंवा कोलन द्वारे मर्यादित केले जाऊ शकतात.

--exclude-libs lib , lib , ...

संग्रह लायब्ररींची सूची निर्दिष्ट करते ज्यामधून प्रतीक स्वयंचलितपणे निरस्त केले जाऊ नयेत. लायब्ररीच्या नावांचा स्वल्पविराम किंवा कॉलन्सने मर्यादित केला जाऊ शकतो. "--exclude-libs ALL" निर्दिष्ट करणे सर्व संग्रह लायब्ररीमधील स्वयंचलित निर्यातीमधील चिन्ह वगळते. या पर्यायाचा विचार न करता, तरीही. डेफ फाइलमध्ये सूचीबद्ध केलेले चिन्ह अद्याप निर्यात केले जातात.

--फाईल-संरेखन

फाइल संरेखन निर्दिष्ट करा. फाईलमधील विभाग नेहमी फाईल ऑफसेट्समध्ये प्रारंभ करतील जे या नंबरच्या पटीत असतील. हे डीफॉल्ट 512 आहे

--फॅप राखीव

--heap रिझर्व्ह , कमिट करा

या प्रोग्रामसाठी ढीग म्हणून वापरण्यासाठी मेमरीची रक्कम (आणि वैकल्पिकपणे कमिट) निर्दिष्ट करा. डीफॉल्ट 1 एमबी आरक्षित आहे, 4 के वचनबद्ध आहेत.

--image-base व्हॅल्यू

आपल्या प्रोग्राम किंवा डीएलएलचा आधार पत्ता म्हणून मूल्य वापरा. ही सर्वात कमी मेमरी लोकेशन आहे जी वापरली जाईल जेव्हा आपला प्रोग्राम किंवा डीएलएल लोड होईल. आपल्या डीएलएसच्या स्थानांतरित करणे आणि सुधारणे गरजेचे कमी करण्यासाठी प्रत्येकास एक अद्वितीय आधार पत्ता असावा आणि कोणत्याही अन्य डीएलएस ओव्हरलॅप न करता. एक्सेल्युबिट्ससाठी डीफॉल्ट 0x400000, आणि 0x10000000 dlls साठी आहे.

--kill-at

दिले तर, stdcall प्रत्यय (@ एनएएन) निर्यात करण्यापूर्वी त्यांची प्रतीके काढून टाकले जातील.

--मुख्य-प्रतिमा-आवृत्ती मूल्य

`` प्रतिमा वर्जन '' ची प्रमुख संख्या सेट करते. डीफॉल्टकडे 1 ते

--major-os- आवृत्ती मूल्य

`` `OS आवृत्ती 'ची प्रमुख संख्या सेट करते. डीफॉल्टकडे 4

--major-subsystem- आवृत्ती मूल्य

`सबसिस्टम आवृत्ती 'ची प्रमुख संख्या सेट करते डीफॉल्टकडे 4

--minor-image-version मूल्य

`` प्रतिमा वर्जन '' ची किरकोळ संख्या ठरवतो. डीफॉल्टकडे 0

--minor-os- आवृत्ती मूल्य

`` `OS आवृत्ती 'च्या किरकोळ क्रमांकास सेट करते. डीफॉल्टकडे 0

--minor-subsystem- आवृत्ती मूल्य

`सबसिस्टम आवृत्ती 'ची किरकोळ संख्या सेट करते डीफॉल्टकडे 0

--output-def फाइल

लिंकर फाइल फाइल तयार करेल जिच्यात डीडीएल फाइलशी संबंधित डीईएफ फाइल असेल जिच्यात लिंकर तयार होईल. ही डीईएफ फाईल (ज्याला "* .def" असे म्हटले जाते) वापरला जाऊ शकतो "dlltool" सह आयात लायब्ररी तयार करण्यासाठी किंवा स्वयंचलितरित्या किंवा परस्पररित्या निर्यात केलेल्या प्रतींकरीता संदर्भ म्हणून वापरला जाऊ शकतो.

--out-implib फाइल

लिंकर फाइल फाइल तयार करेल ज्यामध्ये लिंकर जनरेट होणाऱ्या DLL शी संबंधित आयात लायब्ररी असेल. हे आयात लिब (ज्याला "* .dll.a" किंवा "* .a" असे म्हटले जाणे आवश्यक आहे ते व्युत्पन्न केलेल्या DLL विरूद्ध क्लायंटशी दुवा साधण्यासाठी वापरले जाऊ शकते; हे वर्तन वेगळे "dlltool" आयात लायब्ररी निर्मिती चरण वगळणे शक्य करते.

--enable-auto-image-base

DLLs साठी आपोआप इमेज बेस निवडा, जोपर्यंत "--image-base" आर्ग्युमेंट वापरून एखादा निर्दिष्ट केलेला नाही. प्रत्येक DLL, इन-मेमरी टक्कर आणि पुनर्स्थापनेसाठी अनन्य इमेज बेस तयार करण्यासाठी डीलमएनने तयार केलेल्या हॅशचा वापर करून जे प्रोग्रॅम अंमलबजावणीस विलंब करू शकतात ते टाळले जातात.

--disable-auto-image-base

आपोआप एक अद्वितीय प्रतिमा बेस निर्माण करू नका. जर वापरकर्ता-निर्दिष्ट प्रतिमा बेस ("-image-base") नसेल तर प्लॅटफॉर्म डीफॉल्ट वापरा.

--डेल-शोध-प्रिफिक्स स्ट्रिंग

आयात लायब्ररीशिवाय dll ला गतिकरित्या जोडताना, "lib .dll" साठी प्राधान्यकृत " .dll" साठी शोधा. हे वर्तन विविध `` सबप्लाटफॉर्म '': देशी, सायगविन, यूविन्, पीडब्ल्यू इत्यादीसाठी बनविलेल्या DLLs दरम्यान सोपे फरक करण्यास अनुमती देते. उदाहरणार्थ, सायगविन डीएलएल सामान्यतः "--dll-search-prefix = cyg" वापरतात.

--enable-auto-import

"_symbol" चा "__imp__symbol" ला दुय्यम दुवा जोडणे आणि त्या डेटाअॅप्समधून आयात लायब्ररी तयार करताना आवश्यक थंबिंग चिन्हे तयार करणे. हे सहसा 'फक्त कार्य करेल' --- परंतु काहीवेळा आपण हा संदेश पाहू शकता:

"variable '' 'स्वयंचलितरित्या आयात होऊ शकत नाही .कृपया तपशीलासाठी ld च्या" --enable-auto-import "दस्तऐवजीकरण वाचा."

जेव्हा काही (उप) ऍक्सेसरीव्ह म्हणजे शेवटच्या दोन स्थिरांकाच्या (विन् 32 आयात टेबल केवळ एक अनुमती देतात) योगाने दिलेला असतो तेव्हा हा संदेश येतो. ज्या घटनांमध्ये हे होऊ शकते त्यामध्ये डीएलएलमधून आयात केलेल्या स्ट्रक्चर व्हेरिएबल्सच्या सदस्य फील्डचा प्रवेश तसेच DLL कडून आयात केलेल्या एका एअर वेरिअरीमध्ये स्थिर इंडेक्सचा वापर करणे समाविष्ट आहे. कोणतीही मल्टिडायरेबल वेरियेबल (अॅरे, स्ट्रक्क्ट्स, लांब लांब, इत्यादी) ही त्रुटी स्थिती ट्रिगर करू शकते. तथापि, आक्षेपार्ह निर्यात केलेल्या वेरियेबलची अचूक डेटा प्रकार विचारात न घेता, एलडी नेहमी ते ओळखेल, चेतावणी जारी करेल आणि बाहेर पडेल

निर्यातित केलेल्या व्हेरिएबलच्या डेटा प्रकाराकडे दुर्लक्ष करून ही अडचण दूर करण्यासाठी अनेक मार्ग आहेत:

एकवेळा --enable-runtime-pseudo-reloc स्विच वापरणे. यामुळे रनटाइम पर्यावरणात आपल्या क्लायंट कोडमध्ये संदर्भ समायोजित करण्याचे कार्य होते, म्हणून ही पद्धत केवळ कार्य करते जेव्हा रनटाइम एन्हांऊंटमेंट हे वैशिष्ट्य समर्थित करते.

संकल्पनेला एक 'सक्ती' असे म्हणायला एक दुसरा पर्याय --- म्हणजे कंपाइल करण्याच्या वेळी अज्ञात आणि अनपेक्षित. अॅरेंसाठी दोन शक्यता आहेत: क) निर्देशांक (अॅरेचा पत्ता) एक वेरियेबल करा, किंवा ब) 'स्टिलिस्टिक' इंडेक्स व्हेरिएबल बनवा. अशा प्रकारे:

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

किंवा

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

स्ट्रक्चर्स (आणि बहुतेक अन्य बहुउद्देशीय डेटा प्रकारांसाठी) स्ट्रक्चर स्वतःच (किंवा लांब लांब, किंवा ...) व्हेरिएबल करण्याचा एकमेव पर्याय आहे:

बाह्य स्ट्रक्चर्स extern_struct; extern_struct.field -> {अस्थिर स्ट्रक्प्ट s * t = & extern_struct; t-> मैदान}

किंवा

बाह्य लांब लांब extern_ll; extern_ll -> {चंचल काळ लांब * local_ll = & extern_ll; * local_ll}

या अडचणीशी निगडित करण्याची तिसरी पद्धत म्हणजे आक्षेपार्ह चिन्हांसाठी 'स्वयं-आयात' सोडून देणे आणि "__declspec (dllimport)" सह चिन्हांकित करणे. तरीही, आपण डीएलएल तयार करत आहात काय हे सूचित करण्यासाठी संकलन-वेळ #defines वापरणे आवश्यक आहे, क्लायंट कोड तयार करणे जी डीएलएलशी जोडेल, किंवा फक्त स्टॅटिक लायब्ररीत बांधणी / दुवा साधेल. 'ऑफसेट ऑफसेट ऑफस ऑफ समस्येच्या' समस्येचे निराकरण करण्याच्या विविध पद्धतींमधील निवड करताना, आपण वास्तविक वास्तविक वापराचा विचार करावा:

मूळ:

--foo.h उपरॉन इंट अर []; --foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", एआर [1]); }

ऊत्तराची 1:

--foo.h उपरॉन इंट अर []; --foo.c #include "foo.h" void main (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 )) # FOO_IMPORT __declspec (dllimport) #define FOODIMATE # FOODIMATE FOODIM फॉर FOO_IMPORT आंत एआर []; --foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", एआर [1]); }

ही समस्या टाळण्याचा चौथा मार्ग म्हणजे आक्षेपार्ह परिवर्तनांसाठी डेटा इंटरफेस ऐवजी कार्यशील इंटरफेस वापरण्यासाठी आपली लायब्ररी पुन: कोड करणे (उदा. Set_foo () आणि get_foo () ऍक्सेसर फंक्शन्स).

--disable-auto-import

DLLs कडून DATAimports साठी "_symbol" ला "__imp__symbol" ला जोडण्यासाठी sophisticalted जोडण्याचा प्रयत्न करू नका.

--enable-runtime-pseudo-reloc

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

--disable-runtime-pseudo-reloc

DLL कडून नॉन-शून ऑफसेट डेटा आयात करण्यासाठी छद्म स्थानांतर तयार करू नका. हे डीफॉल्ट आहे

--enable-extra-pe-debug

स्वयं-आयात चिन्ह थंबिंगशी संबंधित अतिरिक्त डीबग माहिती दर्शवा.

--विभाग-संरेखन

विभाग संरेखन सेट करते. मेमरीमधील विभाग नेहमी या पत्त्यावर नेहमी सुरू होतील जे या क्रमांकाच्या एकापेक्षा जास्त असतील. डीफॉल्टकडे 0x1000

--स्टॅक रिझर्व

- आरक्षित आरक्षित , कमिट करा

या प्रोग्रामसाठी स्टॅक म्हणून वापरली जाणारी राखीव मेमरी (आणि वैकल्पिकपणे कमिट) निर्दिष्ट करा. डीफॉल्ट 2 एमबी आरक्षित आहे, 4 के वचनबद्ध आहेत.

--सदस्यता

--सदस्यता जे : प्रमुख

--सदस्यता जे : प्रमुख . अल्पवयीन

उपप्रणाली निर्दिष्ट करते ज्या अंतर्गत आपला प्रोग्राम कार्यान्वित होईल. कायदेशीर मूल्ये ज्यासाठी "स्थानिक", "विंडो", "कन्सोल" आणि "पोझिक्स" आहेत. आपण वैकल्पिकरित्या उपप्रणाली आवृत्ती देखील सेट करू शकता.

महत्वाचे: आपल्या कॉम्प्यूटरवर आज्ञा कशी वापरली जाते हे पाहण्यासाठी man कमांड ( % man ) वापरा.