لینکس / یونیسی کمان: آئی ڈی

NAME

LD - LN کا استعمال کرتے ہوئے ، GNU لنکر

SYNOPSIS

ld [ اختیارات ] objfile ...

تفصیل

LD کئی چیزوں اور آرکائیو فائلوں کو یکجا کرتا ہے ، ان کے اعداد و شمار اور علامتوں کے حوالے سے حوالہ جات سے تعلق رکھتا ہے. عام طور پر ایک پروگرام مرتب کرنے میں آخری قدم ld چلانے کے لئے ہے.

LD لنکر کمان کی زبان فائلوں کو اے ٹی اور ٹی کے لنڈ ایڈیٹر کمان زبان کے نحوط کے سرپرستی میں لکھی جاتی ہے جس میں منسلک عمل پر واضح اور کل کنٹرول فراہم ہوتا ہے.

اس آدمی کا صفحہ کمانڈ زبان کی وضاحت نہیں کرتا؛ "معلومات" میں، یا GNU لنکر کے لیڈر زبان کے دوسرے پہلوؤں پر مکمل تفصیلات کے لئے "معلومات" میں، یا دستی ایل ڈی لنڈ ملاحظہ کریں.

ایل ڈی کے اس ورژن کو اعتراض فائلوں پر چلانے کے لئے عام مقصد BFD لائبریریوں کا استعمال کرتا ہے. یہ ایل ڈی کو بہت سے مختلف فارمیٹس میں اعتراض فائلوں کو پڑھنے، جمع، اور لکھنے کے لئے کی اجازت دیتا ہے --- مثال کے طور پر، COFF یا "a.out". کسی بھی قسم کے شے اعتراض فائل کو پیدا کرنے کے لئے مختلف فارمیٹس ایک دوسرے کے ساتھ منسلک کیا جا سکتا ہے.

اس کے لچکدار کے علاوہ، تشخیصی معلومات فراہم کرنے میں GNU لنکر دوسرے روابط سے زیادہ مددگار ثابت ہوتا ہے. کئی خرابیوں کو ایک غلطی کا سامنا کرنے پر فورا عملدرآمد چھوڑ دیا. جب بھی ممکن ہو، ایل ڈی کو جاری رکھنا جاری ہے، اور آپ کو دوسری غلطیاں (یا بعض صورتوں میں، غلطی کے باوجود آؤٹ پٹ فائل حاصل کرنے کے لئے) کی نشاندہی کرنے کی اجازت دی گئی ہے.

GNU لنکر LD ایک وسیع پیمانے پر حالتوں کا احاطہ کرتا ہے، اور دوسرے لنکرز کے ساتھ ممکنہ طور پر مطابقت پذیر ہونے کا مطلب ہے. نتیجے کے طور پر، آپ کے رویے کو کنٹرول کرنے کے لۓ آپ کے بہت سے اختیارات ہیں.

اختیارات

لنکر کو کمانڈ لائن کے اختیارات کے تسلسل کی حمایت کرتا ہے، لیکن اصل میں اس میں سے کچھ ان میں کسی خاص سیاق و سباق میں استعمال نہیں ہوتے ہیں. مثال کے طور پر، LD کا مسلسل استعمال ایک معیاری، معاون یونیکس سسٹم پر معیاری یونس اعتراض فائلوں کو منسلک کرنا ہے . اس طرح کے نظام پر، "ہیلو.o" فائل کو لنک کرنے کے لئے:

ldoo <پیداوار> / lib/crt0.o ہیلو.o -lc

یہ "LL/crt0.o" کے ساتھ "ہیللو.o" اور لائبریری "libc.a" کے ساتھ فائل سے منسلک ہونے کا نتیجہ کے طور پر پیداوار نامی فائل پیدا کرنے کے لئے LD بتاتی ہے، جو معیاری سرچ ڈائریکٹریز سے آئے گی. (ذیل میں -L آپشن کی بحث ملاحظہ کریں.)

کمانڈ لائن میں کسی بھی وقت کسی بھی کمانڈ لائن کے اختیارات کو مخصوص کیا جا سکتا ہے. تاہم، اختیارات جس میں فائلوں، جیسے ایل-ٹی کے حوالہ دیتے ہیں، فائل کو اس نقطہ پر پڑھنے کا سبب بنتا ہے جس میں اختیاری فائلوں اور دیگر فائل کے اختیارات سے متعلق کمانڈ لائن میں اختیار ہوتا ہے. کسی بھی مختلف دلیل کے ساتھ غیر فائل کے اختیارات کو دوبارہ معائنہ کریں گے یا پھر اس کا کوئی اثر نہیں پڑے گا، یا اس اختیار کے پہلے پیش نظارہ (کمانڈ لائن پر بائیں جانب ان کے علاوہ) کو ہٹا دیا جائے گا. جو اختیارات معنی سے بیان کیے جا سکتے ہیں وہ ایک دفعہ سے زیادہ بیان کی جاتی ہیں ذیل میں وضاحت میں ذکر کیا جاتا ہے.

غیر اختیار کے دلائل اعتراض فائلوں یا آرکائیو ہیں جو ایک دوسرے کے ساتھ منسلک کیا جارہا ہے. وہ کمانڈ لائن کے اختیارات کے ساتھ مل کر، قبل از کم، یا مخلوط ہوسکتے ہیں، اس کے علاوہ کسی اعتراض اور اس کے دلائل کے درمیان کسی بھی اعتراض کی دلیل نہیں دی جاسکتی ہے.

عام طور پر لنکر کم سے کم ایک اعتراض فائل کے ساتھ منسلک کیا جاتا ہے، لیکن آپ -L ، -R ، اور اسکرپٹ کمانڈ کی زبان کے ذریعے بائنری ان پٹ فائلوں کے دوسرے فارم کی وضاحت کرسکتے ہیں. اگر کوئی بائنری ان پٹ فائلوں کو مخصوص نہیں کیا جاتا ہے تو، لنکر کسی بھی پیداوار کی پیداوار نہیں کرتا، اور پیغام کو کوئی ان پٹ فائلوں پر قابو نہیں دیتا .

اگر لنکر ایک اعتراض فائل کی شکل کو تسلیم نہیں کرسکتا، تو یہ سمجھا جائے گا کہ یہ ایک لنکر سکرپٹ ہے. اس طرح بیان کردہ ایک سکرپٹ لنک کے لئے استعمال کیا جاتا اہم لنکر اسکرپٹ کو بڑھا دیتا ہے (یا تو ڈیفالٹ لنکر اسکرپٹ یا ٹی کا استعمال کرتے ہوئے کی طرف سے مخصوص ایک). یہ خصوصیت ایک ایسی فائل کے خلاف لنک کرنے کے لئے لنکر کی اجازت دیتا ہے جو کسی چیز یا آرکائیو سے ظاہر ہوتا ہے، لیکن اصل میں صرف کچھ علامات کی وضاحت کرتا ہے، یا دوسری اشیاء کو لوڈ کرنے کے لئے "INPUT" یا "GROUP" کا استعمال کرتا ہے. نوٹ کریں کہ ایک اسکرپٹ کو اس طرح سے خاص طور پر اہم لنکر اسکرپٹ کو بڑھا دیتا ہے؛ ڈیفالٹ لنکر اسکرپٹ کو مکمل طور پر تبدیل کرنے کے لئے -T اختیار کا استعمال کریں.

اختیارات کے لئے جن کے نام ایک ہی خط ہیں، اختیاری دلیلوں کو توثیقی خط کے مطابق یا تو اسپیس اسپیس کے مداخلت کے بغیر، یا انہیں ان کی ضرورت کے بعد فوری طور پر علیحدہ دلائل کے طور پر دیا جائے.

اختیارات کے لئے جن کے نام ایک سے زیادہ حروف ہیں، یا تو ایک ڈش یا دو اختیار کے نام سے پہلے کر سکتے ہیں؛ مثال کے طور پر، علامت (لوگو) اور علامت ( لوگو) - علامت برابر ہیں. نوٹ - اس حکمرانی میں ایک استثنا ہے. ایک سے زیادہ خط کے اختیارات جو کم معاملہ 'او' کے ساتھ شروع ہوتی ہیں صرف دو ڈیشوں کی طرف سے آگے بڑھ سکتے ہیں. یہ اختیاری کے ساتھ الجھن کو کم کرنا ہے. لہذا مثال کے طور پر - جادوگر آؤٹ پٹ فائل کا نام جادو کے طور پر مقرر کرتا ہے جبکہ --امریکی پیداوار پر NMAGIC پرچم کا تعین کرتا ہے.

متعدد خط کے اختلاط پر دلیلیں یا تو مساوات کے ذریعہ اختیار کے نام سے علیحدہ ہونا ضروری ہے، یا ان کو اختیار کرنے کے لۓ فورا الگ الگ دلائل کے طور پر دیا جائے. مثال کے طور پر، - علامت علامت foo اور --تر علامت = foo برابر ہیں. متعدد خط کے اختیارات کے ناموں کی منفرد تحریریں قبول کی جاتی ہیں.

نوٹ - اگر لنکر غیر مستقیم طور پر ایک کمپائلر ڈرائیور (مثال کے طور پر سی سی سی ) کے ذریعہ منسلک کیا جا رہا ہے تو پھر تمام لنکر کمانڈ لائن کے اختیارات ڈبلیو، (یا جو کچھ خاص کنسلر ڈرائیور کے لئے موزوں ہے) سے پہلے پیش کیا جاسکتا ہے.

GCC -WL، - شروع گروپ foo.o bar.o -WL، - endgroup

یہ ضروری ہے، کیونکہ دوسری صورت میں کمپائلر ڈرائیور کا پروگرام خاموش طور پر لنکر کے اختیارات کو چھوڑ سکتا ہے، جس کا نتیجہ برا لنک ہے.

یہاں جی این یو لنکر کی طرف سے قبول کردہ جنرل کمان لائن سوئچز کی میز ہے:

ایک لفظ

یہ اختیار HP / UX مطابقت کے لئے معاون ہے. کلیدی آرکائیو ، مشترکہ ، یا ڈیفالٹ میں مطلوبہ الفاظ کا ایک دلیل ہونا لازمی ہے. آرکائیو فعال طور پر بصیرت کے برابر ہے، اور دوسرے دو مطلوبہ الفاظ بقیہ متحرک ہیں یہ اختیار کسی بھی وقت استعمال کیا جا سکتا ہے.

ایک فن تعمیر

فن تعمیر = فن تعمیر

ایل ڈی کی موجودہ رہائی میں، یہ اختیار صرف آرٹیکلچرز کے انٹیل 960 خاندان کے لئے مفید ہے. اس ایل ڈی ترتیب میں، تعمیراتی دلیل نے 960 خاندانوں میں مخصوص فن تعمیر کی شناخت کی ہے، کچھ حفاظتی انتظامات کو محفوظ بنانے اور آرکائیو لائبریری تلاش کے راستے میں ترمیم کرنے کی.

ایل ڈی کے مستقبل کی ریلیز دیگر فن تعمیراتی خاندانوں کے لئے اسی طرح کے کام کی حمایت کرسکتے ہیں.

-b ان پٹ فارمیٹ

--format = ان پٹ فارمیٹ

LD ایک سے زیادہ قسم کی اعتراض فائل کی حمایت کرنے کے لئے تشکیل دیا جا سکتا ہے. اگر آپ اپنے ایل ڈی کو اس طریقے سے ترتیب دیا جاتا ہے تو، آپ ان بون شے کی فائلوں کے لۓ بائنری شکل کی وضاحت کرنے کے لئے استعمال کر سکتے ہیں جو کمانڈ لائن پر اس اختیار کی پیروی کریں. یہاں تک کہ جب ld متبادل اختیاری فارمیٹس کی حمایت کرنے کے لئے ترتیب دیا جاتا ہے، آپ کو عام طور پر اس کی وضاحت کرنے کی ضرورت نہیں ہے، کیونکہ ایل ڈی ہر مشین پر سب سے زیادہ معمول کی شکل میں ایک ڈیفالٹ ان پٹ فارمیٹ کے طور پر توقع کرنے کے لئے ترتیب دیا جانا چاہئے. ان پٹ فارمیٹ ایک متن سٹرنگ ہے، بی ایف ڈی لائبریریوں کی طرف سے کی حمایت کی ایک خاص شکل کے نام. (آپ objdump کے ساتھ دستیاب بائنری فارمیٹس کی فہرست کر سکتے ہیں.)

اگر آپ غیر معمولی بائنری شکل کے ساتھ فائلوں کو منسلک کر رہے ہیں تو آپ اس اختیار کا استعمال کرنا چاہتے ہیں. آپ بی بی استعمال کرتے ہیں بھی واضح طور پر فارمیٹس سوئچ کر سکتے ہیں (مختلف فارمیٹس کے اعتراض کی فائلوں کو منسلک کرتے وقت)، بش کی فائلوں کے ہر گروپ سے پہلے ایک مخصوص شکل میں -b ان پٹ فارمیٹ سمیت.

ڈیفالٹ فارمیٹ ماحولیاتی متغیر "GNUTARGET" سے لیا جاتا ہے.

آپ کو "ٹیگیٹ" کمانڈ کا استعمال کرتے ہوئے، اسکرپٹ سے ان پٹ کی شکل کی وضاحت بھی کر سکتی ہے؛

MC - کمانڈ فائل

--پیڈ سکرپٹ = ایم آر آئی - کمانڈ فائل

ایم ڈی آئی کی طرف سے تیار کردہ لنکرز کے ساتھ مطابقت کے لئے، LD ایک متبادل، محدود کمانڈ کی زبان میں لکھا گیا سکرپٹ فائلوں کو قبول کرتا ہے، جس میں جی این یو ایل ایل ڈی دستاویزات کے ایم آر آئی کے مطابقت پذیری فائلوں کے سیکشن میں بیان کی گئی ہے. اختیاری کے ساتھ ایم آرآئ سکرپٹ کی فائلوں کو متعارف کروانا-c ؛ عمومی مقاصد کے لیڈی سکرپٹ کی زبان میں لکھا لنکر سکرپٹ چلانے کے لئے -T اختیار کا استعمال کریں. اگر ایم ڈی آئی- cmdfile موجود نہیں ہے تو، کسی بھی اختیارات کے ذریعہ مخصوص ڈائریکٹریز میں LD اس کے لئے نظر آتا ہے.

ڈی

-ڈی سی

ڈی پی

یہ تین اختیارات برابر ہیں؛ دوسرے لنکرز کے ساتھ مطابقت کے لئے ایک سے زیادہ فارم کی حمایت کی جاتی ہے. وہ عام علامتوں کے لئے جگہ تفویض کرتا ہے یہاں تک کہ اگر ایک نقل و حرکت کے آؤٹ پٹ فائل کی وضاحت کی جائے (ساتھ -r ). اسکرپٹ کمانڈ "FORCE_COMMON_ALLOCATION" میں ایک ہی اثر ہے.

میں داخل ہوں

--ینٹری = اندراج

داخلے کا استعمال کرتے ہوئے واضح نشان کے طور پر آپ کے پروگرام کے عمل کو شروع کرنے کے بجائے ڈیفالٹ انٹری پوائنٹ کے بجائے. اگر اندراج کا کوئی علامت نہیں ہے تو، لنکر ایک نمبر کے طور پر اندراج کو پار کرنے کی کوشش کریں گے، اور اس کا استعمال انٹری ایڈریس کے طور پر استعمال کریں گے (نمبر بیس 10 میں تشریح کی جائے گی؛ آپ کو بیس 16 کے لئے ایک اہم 0x استعمال کر سکتے ہیں یا ایک معروف 0 بیس 8 کے لئے).

- ای

غیر ملکی - متحرک

متحرک طور پر منسلک کرنے والے قابل عمل بنانے پر، تمام علامات کو متحرک علامت کی میز میں شامل کریں. متحرک علامت کی میز اس علامتوں کا سیٹ ہے جو رن ٹائم پر متحرک اشیاء سے نظر آتا ہے.

اگر آپ اس اختیار کا استعمال نہیں کرتے ہیں تو، متحرک علامت ٹیبل عام طور پر صرف ان علامات پر مشتمل ہوتا ہے جو لنکس میں بیان کردہ کچھ متحرک اعتراض کی طرف اشارہ کرتی ہے.

اگر آپ متحرک اعتراض کو لوڈ کرنے کے لئے "dlopen" کا استعمال کرتے ہیں جو کسی دوسرے متحرک اعتراض کے بجائے پروگرام کی طرف سے مقرر کردہ علامتوں کو واپس کرنے کی ضرورت ہے، تو آپ شاید اس پروگرام کا استعمال کرتے وقت اس اختیار کا استعمال کرنے کی ضرورت ہوگی.

اگر آپ آؤٹ پٹ فارمیٹ اس کی حمایت کرتا ہے تو آپ کو متحرک علامت کی میز میں شامل کیا نشانوں کو شامل کرنے کے لئے ورژن کو استعمال کرنے کے لئے بھی استعمال کر سکتے ہیں. {ref {VERSION} میں ترمیم سکرپٹ کی وضاحت ملاحظہ کریں.

بی بی

بڑے-اینڈینان کی اشیاء کو لنک کریں. یہ ڈیفالٹ پیداوار کی شکل کو متاثر کرتا ہے.

-EL

چھوٹا سا اجنبی اشیاء لنک کریں. یہ ڈیفالٹ پیداوار کی شکل کو متاثر کرتا ہے.

- ایف

- نامیاتی نام

ELF مشترکہ اعتراض تخلیق کرتے وقت، داخلہ DT_AUXILIARY فیلڈ کو مخصوص نام پر مقرر کریں. یہ متحرک لنکر بتاتا ہے کہ مشترکہ اعتراض کا نام کی علامت کی میز پر مشترکہ فلٹر کے طور پر مشترکہ اعتراض کی علامت کی میز کو استعمال کیا جانا چاہئے.

اگر آپ بعد میں اس فلٹر اعتراض کے خلاف ایک پروگرام سے منسلک ہوتے ہیں تو، جب آپ پروگرام چلاتے ہیں تو، متحرک لنکر DT_AUXILIARY فیلڈ دیکھیں گے. اگر متحرک لنکر فلٹر اعتراض سے کوئی علامات کو حل کرتا ہے تو، یہ سب سے پہلے یہ چیک کریں گے کہ مشترکہ اعتراض کے نام میں کیا تعریف ہے. اگر ایک ہے تو، فلٹر اعتراض میں اس کی تعریف کے بجائے استعمال کیا جائے گا. مشترکہ اعتراض نام کی ضرورت نہیں ہے. اس طرح مشترکہ آبادی کا نام بعض افعال کے متبادل عمل کو فراہم کرنے کے لئے استعمال کیا جا سکتا ہے، شاید ڈیبگنگ یا مشین مخصوص کارکردگی کے لۓ.

یہ اختیار ایک بار سے زیادہ مخصوص کیا جا سکتا ہے. DT_AUXILIARY اندراجات اس ترتیب میں پیدا کی جائیں گی جس میں وہ کمان لائن پر ظاہر ہوتے ہیں.

ایف ایف کا نام

- فولٹر کا نام

ELF مشترکہ اعتراض تخلیق کرتے وقت، داخلہ DT_FILTER فیلڈ کو مخصوص نام پر مقرر کریں. یہ متحرک لنکر بتاتا ہے کہ مشترکہ اعتراض کی علامت کی میز کو تخلیق کیا جارہا ہے مشترکہ اعتراض کے نام کی علامت کی میز پر فلٹر کے طور پر استعمال کیا جانا چاہئے.

اگر آپ بعد میں اس فلٹر اعتراض کے خلاف ایک پروگرام سے رابطہ کریں، تو، جب آپ پروگرام چلاتے ہیں، تو متحرک لنکر DT_FILTER فیلڈ دیکھیں گے. متحرک لنکر معمول کے طور پر فلٹر شبیہ کی علامت کی میز کے مطابق علامات کو حل کرے گا، لیکن یہ اصل میں مشترکہ اعتراض کے نام میں پایا جانے والی تعریفوں سے منسلک کرے گا. اس طرح فلٹر اعتراض آبجیکٹ کے نام کی طرف سے فراہم کی علامتوں کے سب سے پہلے کا انتخاب کرنے کے لئے استعمال کیا جا سکتا ہے.

کچھ پرانے لنکرز نے ان پٹ اور آؤٹ پٹ آبجیکٹ دونوں فائلوں کے لئے اعتراض فائل کی شکل کی وضاحت کرنے کے لئے ایک تالیفائی ٹولچین بھر میں ایف ایف اختیار کیا. GNU لنکر اس مقصد کے لئے دوسرے میکانزم کا استعمال کرتا ہے: لنک ، اسکرپٹ میں اور "GNUTARGET" ماحول متغیر میں "BARGET" کمانڈ، اور -B ، --format ، --formform اختیارات،. این این ایف مشترکہ اعتراض تخلیق کرنے پر جی این یو لنکر ایف ایف اختیار کو نظر انداز نہیں کرے گا.

نامی نام

ELF قابل اطمینان یا مشترکہ اعتراض بنانے پر، NAME کو کال کریں جب قابل اطلاق یا مشترکہ اعتراض کو غیر فعال کردیا جاتا ہے، DT_FINI کو اس تقریب کے ایڈریس پر ترتیب دے کر. پہلے سے طے شدہ طور پر، لنکر "_fini" کو کال کرنے کے طور پر استعمال کرتا ہے.

جی

نظر انداز دیگر اوزار کے ساتھ مطابقت کے لئے فراہم کی.

جی جی

- gpsize = قیمت

جی پی رجسٹریشن کے سائز کا استعمال کرتے ہوئے اپنی مرضی کے مطابق زیادہ سے زیادہ سائز کی اشیاء مقرر کریں. یہ اعتراض فائل فارمیٹس کے لئے صرف معقول ہے جیسے MIPS ECOFF جس میں بڑے اور چھوٹے اشیاء کو مختلف حصوں میں ڈالنے میں مدد ملتی ہے. یہ دیگر اعتراض فائل فارمیٹس کے لئے نظر انداز کر دیا جاتا ہے.

- نام

- نام = نام

ELF مشترکہ اعتراض تخلیق کرتے وقت، داخلہ DT_SONAME فیلڈ کو مخصوص نام پر مقرر کریں. جب ایک قابل اطلاق کسی مشترکہ آبجیکٹ کے ساتھ ایک DT_SONAME فیلڈ سے منسلک ہوتا ہے، تو جب فعال چلتا ہے متحرک لنکر مشترکہ اعتراض کو DT_SONAME فیلڈ کی طرف سے متعین کردہ لوڈ کو لوڈ کرنے کی بجائے لنکر کو دی گئی فائل کا استعمال کرتے ہوئے استعمال کرے گا.

-میں

ایک اضافی لنک انجام دیں (جیسے ہی اختیار - آر ).

نام کا نام

ELF قابل اطمینان یا مشترکہ اعتراض بناتے وقت، NAME کو کال کریں جب قابل اطلاق یا مشترکہ اعتراض بھری ہوئی ہے، DT_INIT کو فنکشن کے ایڈریس پر ترتیب دے کر. پہلے سے طے شدہ طور پر، لنکر "_init" کا استعمال کرتا ہے جیسے کال کرنے کے لئے.

ایل آر آر آر

--library = محفوظ شدہ دستاویزات

فائلوں کی فہرست میں آرکائیو فائل آرکائیو شامل کرنے کے لئے شامل کریں. یہ اختیار کسی بھی وقت استعمال کیا جا سکتا ہے. ہر آرکائیو کے لئے ایل ڈی "libarchive.a" کے واقعات کے لئے اپنی راہ کی فہرست تلاش کرے گا.

سسٹم پر مشترکہ لائبریریوں کی حمایت کرتے ہیں، LD بھی ".a" کے علاوہ توسیع کے ساتھ لائبریریوں کی تلاش کرسکتے ہیں. خاص طور پر، ELF اور SunOS کے نظام پر، ایل ڈی لائبریری کے لئے ایک ڈائریکٹری تلاش کرے گا "." کے توسیع کے ساتھ ایک "تلاش" کے توسیع کے ساتھ ".a" کے توسیع کے ساتھ. کنونشن کے ذریعہ، ایک ".so" توسیع ایک مشترکہ لائبریری کا اشارہ کرتا ہے.

لنکر صرف ایک بار آرکائیو کو تلاش کرے گا، اس جگہ پر جہاں کمانڈ لائن پر بیان کیا جاتا ہے. اگر آرکائیو ایک ایسی علامت کی وضاحت کرتا ہے جس میں کسی چیز میں غیر معزول کیا گیا تھا جس میں کمانڈ لائن پر آرکائیو سے پہلے شائع ہوا، لنکر کو آرکائیو سے مناسب فائل (ے) شامل ہوگی. تاہم، کمانڈ لائن پر بعد میں ظاہر ہونے والے ایک اعتراض میں ایک غیر معمولی علامت اس آرکائیو کو دوبارہ دوبارہ تلاش کرنے کی وجہ سے نہیں کرے گا.

ملاحظہ کریں - آرکائیو ایک سے زیادہ بار تلاش کرنے کے لئے لنکر کو مجبور کرنے کا ایک طریقہ.

آپ کمانڈ لائن پر ایک سے زائد آرکائیو کی فہرست درج کرسکتے ہیں.

اس قسم کے آرکائیو کی تلاش یونسکس کے لنکس کے لئے معیاری ہے. تاہم، اگر آپ ld onAIX استعمال کررہے ہیں، تو نوٹ کریں کہ یہ AIX لنکر کے رویے سے مختلف ہے.

-L searchdir

- لائبریری - راستہ = searchdir

راستے کی تلاش میں شامل راستوں کی فہرست میں شامل کریں جو آرڈی آرکائیو لائبریریوں اور ایل ڈی کنٹرول سکرپٹ کے لئے تلاش کریں گے. آپ اس اختیار کو کسی بھی وقت استعمال کرسکتے ہیں. ڈائرکٹریز اس ترتیب میں تلاش کی جاتی ہیں جس میں وہ کمانڈ لائن پر بیان کی جاتی ہیں. کمان لائن پر متعین ڈائریکٹریز ڈیفالٹ ڈائریکٹریز سے پہلے تلاش کی جاتی ہیں. تمام ایل ایل کے اختیارات تمام ایل کے اختیارات پر لاگو ہوتے ہیں، قطع نظر اس ترتیب کے بغیر جس میں اختیارات ظاہر ہوتے ہیں.

اگر Searchdir "=" کے ساتھ شروع ہوتا ہے تو، "=" سیسروٹ پریفکس کی طرف سے تبدیل کیا جائے گا، لنکر تشکیل دیا جاتا ہے جب مخصوص راستہ.

راستوں کی ڈیفالٹ سیٹ کی تلاش کی (بغیر ایل ایل کے بغیر مخصوص) پر انحصار کرتا ہے جس پر ایائلولڈ موڈ ld استعمال کیا جاتا ہے، اور کچھ معاملات میں بھی یہ کس طرح ترتیب دیا گیا تھا.

"SEARCH_DIR" کمانڈ کے ساتھ لنکس سکرپٹ میں راستے بھی مخصوص کیا جا سکتا ہے. اس طرح سے ڈائریکٹریز کو اس نقطہ پر تلاش کیا جاتا ہے جس میں کمانڈ لائن میں لنکر سکرپٹ ظاہر ہوتا ہے.

ایم ایم

جذباتی روابط کو جذب کریں . آپ دستیاب حجموں کی فہرست میں شامل کرسکتے ہیں.

اگر ایم کے ذریعہ استعمال نہیں کیا جاتا ہے تو، تخروپن "متغیر" ماحولیاتی متغیر سے لیا جاتا ہے، اگر یہ بیان کیا جاتا ہے.

دوسری صورت میں، ڈیفالٹ انکمول پر منحصر ہے کہ لنکر کس طرح ترتیب دیا گیا تھا.

- ایم

- پرنٹ نقشہ

معیاری پیداوار کے لئے لنک کا نقشہ پرنٹ کریں. لنک کا نقشہ لنک کے بارے میں معلومات فراہم کرتا ہے، بشمول مندرجہ ذیل:

*

کہاں فائلوں اور علامات اعتراض میموری میں نقد نظر آتے ہیں.

*

عام علامتوں کو مختص کیا جاتا ہے.

*

سب آرکائیو کے ارکان نے لنک میں شامل کیا، اس علامت کے ذکر کے ساتھ جس میں آرکائیو کے رکن لایا جاۓ.

این

ناممکن

حصوں کے صفحے کی سیدھ بند کر دیں، اور اگر ممکن ہو تو "NMAGIC" کے طور پر پیداوار کو نشان زد کریں.

این

--امریکی

متن اور اعداد و شمار کے حصے کو پڑھنے کے قابل اور لکھنا قابل بنانا. اس کے علاوہ، اعداد و شمار کے حصول کے صفحے کو سیدھا نہ کریں، اور مشترکہ لائبریریوں کے خلاف منسلک کو غیر فعال کریں. اگر آؤٹ پٹ فارمیٹس یونس سٹائل جادو نمبروں کی حمایت کرتا ہے تو، آؤٹ پٹ "OMAGIC" کے طور پر نشان زد کریں.

--نو - اوگاکک

یہ اختیار این کے اختیارات کے زیادہ سے زیادہ اثرات کو منفی کرتی ہے. یہ متن سیکشن صرف پڑھنے کے لئے مقرر کرتا ہے، اور اعداد و شمار کے حصول کو صفحہ ضمنی کرنے کی طاقت دیتا ہے. نوٹ - یہ اختیار مشترکہ لائبریریوں کے خلاف منسلک نہیں کرتا ہے. اس کے لئے استعمال کریں.

پیداوار

آؤٹ پٹ = پیداوار

پیداوار کے طور پر پیداوار کا استعمال کریں ld کی طرف سے تیار کردہ پروگرام کے لئے؛ اگر یہ اختیار مخصوص نہیں ہے تو، نام a.out پہلے سے طے شدہ طور پر استعمال کیا جاتا ہے. اسکرپٹ کمانڈ "آؤٹ پٹ" آؤٹ پٹ فائل کا نام بھی بیان کر سکتا ہے.

اے سطح

اگر سطح صفر LD سے زیادہ عددی اقدار ہے تو پیداوار کو بہتر بناتا ہے. یہ ممکنہ طور پر طویل عرصے تک لے جا سکتا ہے اور اس وجہ سے شاید حتمی بائنری کیلئے صرف فعال ہونا چاہئے.

- ق

- ریمکس

مکمل طور سے منسلک exececutables میں منتقل کرنے کے حصے اور مواد کو چھوڑ دو. پوسٹ لنک کا تجزیہ اور اصلاح کے اوزار کو اس معلومات کی ضرورت ہوسکتی ہے تاکہ عمل درآمد کے صحیح ترمیم کو انجام دے سکے. اس کے نتیجے میں بڑے عمل درآمد.

اس اختیار میں فی الحال صرف ELF پلیٹ فارمز کی حمایت کی جاتی ہے.

آر

سایہ دار

relocatable پیداوار پیدا --- یعنی، ایک آؤٹ پٹ فائل پیدا کریں جس میں باری باری کے طور پر کام کر سکتے ہیں ld . یہ اکثر جزوی طور پر منسلک کیا جاتا ہے. ایک طرف اثر کے طور پر، معیاری یونس جادو نمبروں کی حمایت کرنے والے ماحول میں، یہ اختیار "OMAGIC" کرنے کے لئے آؤٹ پٹ فائل کی جادو نمبر بھی مقرر کرتا ہے. اگر یہ اختیار مخصوص نہیں ہے تو، مطلق فائل تیار کی جاتی ہے. C ++ پروگراموں کو منسلک کرتے وقت، یہ اختیار کارکنوں کے حوالے سے حل نہیں کرے گا ؛ ایسا کرنے کے لئے، استعمال کریں.

جب ان پٹ فائل میں آؤٹ پٹ فائل کے طور پر ایک ہی فارمیٹ نہیں ہے تو، جزوی طور پر منسلک صرف اس کی حمایت کی جاتی ہے اگر ان پٹ فائل میں کسی نقل و حمل پر مشتمل نہیں ہے. مختلف پیداوار فارمیٹس کو مزید پابندیاں مل سکتی ہیں؛ مثال کے طور پر کچھ "a.out" -بند شدہ فارمیٹس دیگر شکلوں میں ان پٹ فائلوں کے ساتھ جزوی رابطے کی حمایت نہیں کرتے ہیں.

یہ اختیار ایک ہی چیز کرتا ہے جیسا کہ اے .

آر فائل نام

- عدد - علامت = فائل نام

فائل نام سے علامات کے نام اور ان کے پتوں کو پڑھیں، لیکن ان کو نقل نہ کریں یا آؤٹ پٹ میں شامل کریں. یہ آپ کی پیداوار کی فائل کو علامتی طور پر دوسرے پروگراموں میں بیان کردہ میموری کی مطلق جگہوں پر حوالہ دینے کی اجازت دیتا ہے. آپ اس اختیار کا ایک بار سے زیادہ استعمال کرسکتے ہیں.

دوسرے ELF لنکرز کے ساتھ مطابقت کے لئے، اگر فائل کا نام کے بجائے آر-آر اختیار کے بعد ڈائریکٹری کا نام ہوتا ہے، تو اس کا اختیار اختیار کے طور پر کیا جاتا ہے.

ایس

- سبھی

آؤٹ پٹ فائل سے تمام علامات کی معلومات کو چھوڑ دیں.

ایس

اسٹینڈ ڈیبگ

آؤٹ پٹ فائل سے ڈیبگر سمبول کی معلومات کو چھوڑ دو (لیکن تمام علامات نہیں).

ٹرم

ان پر عملدرآمد کے طور پر ان پٹ فائلوں کے نام پرنٹ کریں.

- ٹی سکرپٹ

- سکرپٹ = سکرپٹ

لنکر اسکرپٹ کے طور پر سکرپٹ کا استعمال کریں. یہ رسم الخط ایل ڈی ڈی ڈیفالٹ لنکر اسکرپٹ کو تبدیل کرتا ہے (اس میں اضافہ کرنے کے بجائے)، لہذا کمانڈ فائل آؤٹ پٹ فائل کی وضاحت کرنے کے لئے ضروری ہر چیز کی وضاحت کرنا ضروری ہے. اگر موجودہ ڈائرکٹری میں سکرپٹ موجود نہیں ہے تو، "LD" کسی بھی سابقہ ایل ایل کے اختیارات کی طرف سے مقرر ڈائریکٹریز میں اس کے لئے نظر آتا ہے. ایک سے زیادہ ٹی کے اختیارات جمع.

- علامت

- بنڈل = علامت

آؤٹ پٹ فائل میں ایک غیر منقولہ علامت کے طور پر داخل ہونے کے لئے طاقت کا نشان. مثال کے طور پر، معیاری لائبریریوں سے اضافی ماڈیولز کو منسلک کرنا. -u اضافی طور پر غیر معمولی علامات درج کرنے کے لئے مختلف آپشن کے دلائل کے ساتھ بار بار کیا جا سکتا ہے. یہ اختیار "بیرونی" لنکر اسکرپٹ کمانڈ کے برابر ہے.

-

C ++ پروگراموں کے علاوہ کسی بھی چیز کے لئے، یہ اختیار -R کے برابر ہے- یہ نقل و حرکت سے متعلق پیداوار پیدا کرتا ہے --- یعنی، آؤٹ پٹ فائل جس میں باری باری ہو سکتی ہے. C ++ پروگراموں کو منسلک کرتے وقت، -R کے برعکس، ساخترسوں کے حوالہ جات کو حل کرنے میں مدد کرتا ہے . یہ استعمال کرنے کے لئے کام نہیں کرتا - فائلوں پر جو خود خود سے منسلک تھے - اورا ؛ ایک بار تعمیراتی میز بنایا گیا ہے، اس میں شامل نہیں کیا جا سکتا ہے. استعمال کریں- صرف جزوی آخری لنک کے لئے، اور -r دوسروں کے لئے.

--ونیک [= سیکشن ]

ہر یتیم ان پٹ کے سیکشن کے لئے، ہر ان پٹ سیکشن کے ملاپ کے سیکشن کے لئے علیحدہ پیداوار سیکشن بناتا ہے، یا اختیاری وائلڈ کارڈ SECTION دلیل لاپتہ ہے. ایک یتیم کا حصہ خاص طور پر لنکر سکرپٹ میں ذکر نہیں ہے. آپ کمانڈ لائن پر یہ اختیار کئی بار استعمال کر سکتے ہیں؛ یہ ایک ہی نام کے ساتھ ان پٹ حصوں کی عام ضم کرنا روکتا ہے، ایک لنکر اسکرپٹ میں آؤٹ پٹ سیکشن تفویض کو ہٹانا.

-v

- تبدیلی

- وی

ld کے لئے ورژن نمبر دکھائیں. V کے اختیار میں بھی سہولت مہیا کی گئی ہے.

-ایکس

- ڈسکارڈ - سب

تمام مقامی علامات کو حذف کریں.

-ایکس

- ڈسکارڈ - مقامی

تمام عارضی مقامی علامات کو حذف کریں. زیادہ تر اہداف کے لئے، یہ تمام مقامی علامات ہیں جن کے نام ایل کے ساتھ شروع ہوتے ہیں.

آپ کی علامت

- علامت - علامت = علامت

ہر منسلک فائل کا نام پرنٹ کریں جس میں علامت ظاہر ہوتا ہے. یہ اختیار کسی بھی وقت کئی مرتبہ دیا جا سکتا ہے. بہت سارے نظاموں پر یہ ایک غیر معمولی پیش کرنا ضروری ہے.

یہ اختیار مفید ہے جب آپ کے لنک میں ایک غیر معمولی علامت ہے لیکن پتہ نہیں ہے کہ حوالہ کہاں سے آ رہا ہے.

- اے راہ

ڈیفالٹ لائبریری تلاش کے راستہ پر شامل کریں. سولسیز مطابقت کے لئے یہ اختیار موجود ہے.

- مطلوبہ الفاظ

تسلیم شدہ مطلوبہ الفاظ "غیر فعال"، "بوجھ فلٹر"، "نوڈفلاٹلیب"، "نوڈڈائلٹ"، "نوڈڈیٹ"، "نوڈولپن"، "نوڈمپ"، "اب"، "اصل"، "combreloc"، "nocombreloc" اور "نوکوپیرا" ". شمسیس مطابقت کے لئے دیگر مطلوبہ الفاظ کو نظر انداز کر دیا گیا ہے. "غیر فعال" اعتراض کسی بھی دوسری چیزوں سے پہلے کسی بھی چیز سے پہلے رن ٹائم میں ابتدائی طور پر ابتداء کی نشاندہی کرتا ہے. "نقطہ نظر" اس اعتراض کی نشاندہی کرتا ہے کہ اس کی علامت کی میز تمام علامات سے پہلے مداخلت سے پہلے مداخلت کرتی ہے. "loadfltr" اس اعتراض کو نشان زد کرتا ہے کہ اس کے فلٹس کو فوری طور پر رن ​​ٹائم پر عملدرآمد کیا جاتا ہے. "nodefaultlib" اس اعتراض کو نشان زد کرتا ہے کہ اس اعتراض کے انحصار کے لئے تلاش نظر آئے گا. کسی بھی ڈیفالٹ لائبریری تلاش کے راستے. "nodelete" کے نشانات کو رن ٹائم میں غیر منحصر نہیں ہونا چاہئے. "nodlopen" اعتراض "dlopen" پر دستیاب نہیں ہے. "نوڈمپ" کے نشانات کو "dldump" کی طرف سے ڈمپ نہیں کیا جا سکتا. "اب" اعتراض غیر سست رن ٹائم کے ساتھ اعتراض کو نشان لگا دیتا ہے. "اصل" کے نشان پر مشتمل ہے $ ORIGIN. "defs" غیر منقول شدہ علامات کو مسترد کرتا ہے. "ملحد" ایک سے زیادہ تعریفیں فراہم کرتا ہے. "combreloc" ایک سے زیادہ ریل سیکشن کو جوڑتا ہے اور ان کو متحرک علامت کی تلاش کی ممکنہ کیشنگ ممکنہ طور پر تشکیل دیتا ہے.

"nocombreloc" کو یکجا کرنے کے لۓ متعدد ریزرو حصوں کو غیر فعال کرتا ہے. "نوکوپیریوکو" کاپی رپوکس کی پیداوار کو غیر فعال کرتا ہے.

- ( آرکائیو -)

سٹار گروپ آرکائیوز

آرکائیو آرکائیو فائلوں کی فہرست ہونا چاہئے. وہ یا تو واضح فائل کے نام، یا ایل کے اختیارات ہوسکتے ہیں.

مخصوص آرکائیوز بار بار تلاش کی جاتی ہیں جب تک کہ کوئی نیا غیر معتبر حوالہ نہیں بنائے جائیں. عموما، ایک آرکائیو صرف ایک بار تلاش کی ہے تاکہ حکم کمانڈ پر مخصوص ہو. اگر کسی آرکائیو میں ایک آرکائیو میں حوالہ کردہ ایک غیر معمولی نشان کو حل کرنے کے لئے اس آرکائیو میں ایک علامت ہے تو بعد میں کمانڈ لائن پر ظاہر ہوتا ہے، لنکر اس حوالہ کو حل کرنے میں ناکام نہیں ہو گا. آرکائیو گروپوں کی طرف سے، وہ سب کو بار بار تلاش کی جاۓ جب تک کہ ممکنہ حوالہ حل نہ ہو.

اس اختیار کا استعمال کرتے ہوئے ایک اہم کارکردگی کی قیمت ہے. دو یا اس سے زیادہ آرکائیو کے درمیان ناگزیر سرکلر حوالہ جات موجود ہیں جب یہ صرف اس کا استعمال کرنا بہتر ہے.

- قبول غیر نامعلوم ان پٹ آرک

- نہیں قبول - نامعلوم - ان پٹ آرک

ان پٹ فائلوں کو قبول کرنے کے لئے لنکر بتاتا ہے جس کے فن تعمیر کو تسلیم نہیں کیا جا سکتا. فرض یہ ہے کہ صارف کو جانتا ہے کہ وہ کیا کر رہے ہیں اور جان بوجھ کر ان نامعلوم ان پٹ فائلوں میں لنک کرنا چاہتے ہیں. 2.14 رہائی سے قبل لنکر کا یہ ڈیفالٹ طرز عمل تھا. رہائی 2.14 کے بعد سے ڈیفالٹ رویے اس طرح کی ان پٹ فائلوں کو مسترد کرنا ہے، اور اس طرح پرانے رویے کو بحال کرنے کیلئے غیر منظور شدہ ان پٹ آرک اختیار شامل کیا گیا ہے.

سرٹیفیکیشن مطلوبہ الفاظ

SunOS مطابقت کے لئے یہ اختیار نظر انداز کر دیا گیا ہے.

- متحرک

-D y

کیک_شائرڈ

متحرک لائبریریوں کے خلاف لنک. یہ صرف اس پلیٹ فارم پر قابل قدر ہے جس کے لئے مشترکہ لائبریریوں کی حمایت کی جاتی ہے. یہ اختیار عام طور پر اس پلیٹ فارم پر ڈیفالٹ ہے. اس اختیار کے مختلف متغیر مختلف نظام کے ساتھ مطابقت کے لئے ہیں. آپ کمانڈ لائن پر اس اختیار کو کئی دفعہ استعمال کر سکتے ہیں: یہ لائبریری کے تلاش کے اختیارات پر اثر انداز کرتا ہے جو اس کی پیروی کرتی ہے.

- گروپ

متحرک سیکشن میں "DT_FLAGS_1" اندراج میں "DF_1_GROUP" پرچم مقرر کریں. اس کے نتیجے میں رن ٹائم لنکر اس اعتراض میں نظر آتے ہیں اور اس کے انحصار کو صرف گروہ کے اندر ہی انجام دیا جا سکتا ہے. - کوئی غیر منقول نہیں ہے. یہ اختیار ELF پلیٹ فارمز پر صرف معقول ہے جو مشترکہ لائبریریوں کی حمایت کرتا ہے .

-بیٹس

- ڈن

-non_shared

محتاط

مشترکہ لائبریریوں کے خلاف متصل نہ کریں. یہ صرف اس پلیٹ فارم پر قابل قدر ہے جس کے لئے مشترکہ لائبریریوں کی حمایت کی جاتی ہے. اس اختیار کے مختلف متغیر مختلف نظام کے ساتھ مطابقت کے لئے ہیں. آپ کمانڈ لائن پر اس اختیار کو کئی دفعہ استعمال کر سکتے ہیں: یہ لائبریری کے تلاش کے اختیارات پر اثر انداز کرتا ہے جو اس کی پیروی کرتی ہے.

بسمبولک

مشترکہ لائبریری بناتے وقت، مشترکہ لائبریری کے اندر تعریف کرنے کے لئے عالمی علامات کے حوالے سے حوالہ باندھتے ہیں. عام طور پر، ممکنہ طور پر ایک ممکنہ لائبریری کے خلاف مشترکہ لائبریری کے اندر کی تعریف کو زیادہ سے زیادہ کرنے کے لئے ایک پروگرام کے لئے ممکن ہے. یہ اختیار ELF پلیٹ فارمز پر صرف معقول ہے جو مشترکہ لائبریریوں کی حمایت کرتا ہے.

- چیک سیکشن

- نہیں چیک سیکشن

لنکر کو بتاتا ہے کہ سیکشن ایڈریسز کو چیک کرنے کے بعد ان کو تفویض نہیں کیا جاسکتا ہے. عام طور پر لنکر اس چیک کو انجام دے گا، اور اگر یہ کسی بھی پرورش پاتا ہے تو یہ مناسب غلطی کے پیغامات تیار کرے گا. لنکر اس کے بارے میں جانتا ہے، اور اضافی اجزاء کے حصول کے لئے اجازت دیتا ہے. کمانڈ لائن سوئچ کا استعمال کرکے ڈیفالٹ رویے کو بحال کیا جا سکتا ہے - چیک سیکشن .

- سیف

کراس حوالہ ٹیبل آؤٹ کریں. اگر ایک لنکر میپ فائل پیدا ہو رہا ہے تو، کراس حوالہ ٹیبل نقشہ فائل پر چھپی ہوئی ہے. دوسری صورت میں، یہ معیاری پیداوار پر چھپی ہوئی ہے.

ٹیبل کی شکل جان بوجھ کر سادہ ہے، لہذا اگر ضروری ہو تو یہ سکرپٹ کی طرف سے آسانی سے عملدرآمد ہوسکتا ہے. علامات نام کے مطابق، چھپی ہوئی ہیں. ہر علامت کے لئے، فائل ناموں کی فہرست دی گئی ہے. اگر علامت کی وضاحت کی جاتی ہے تو، پہلی فائل درج کی گئی تعریف کی جگہ ہے. باقی فائلیں علامت کے حوالہ ہیں.

--no-define-common

یہ اختیار عام علامتوں کے پتے کے تفویض کو روکتا ہے. اسکرپٹ کمانڈ "INHIBIT_COMMON_ALLOCATION" کا اثر بھی ہے.

--no-define-common option آؤٹ پٹ فائل کی قسم کے انتخاب سے عام علامتوں کو پتے کو تفویض کرنے کا فیصلہ کو مسترد کرنے کی اجازت دیتا ہے؛ دوسری صورت میں غیر منسلک آؤٹ پٹ کی قسم کی فورسز عام علامتوں کے پتوں کو تفویض کرتی ہیں. استعمال کرتے ہوئے --no-define-common عام علامتوں کو صرف ایک اہم لائبریری سے حوالہ دیا جاتا ہے جو صرف اہم پروگرام میں پتے جاتے ہیں. یہ مشترکہ لائبریری میں غیر استعمال شدہ ڈپلیک اسپیس کو ختم کرتا ہے، اور غلط ڈپلیکیٹ کو حل کرنے پر کسی بھی ممکنہ الجھن کو روکتا ہے جب رن ٹائم علامت قرارداد کے لئے مخصوص تلاش کے راستوں کے ساتھ بہت متحرک ماڈیولز موجود ہیں.

- ڈیڈیمیم علامت = اظہار

آؤٹ پٹ فائل میں ایک عالمی علامت بنائیں، جس میں اظہار کی طرف سے دیئے گئے مکمل ایڈریس شامل ہے . آپ کو کمانڈ لائن میں ایک سے زیادہ علامات کی وضاحت کرنے کے لئے آپ کو اس اختیار کے طور پر کئی بار استعمال کر سکتے ہیں. اس سلسلے میں اظہار کے لئے ایک محدود شکل کا اظہار کیا جاتا ہے: آپ ایک ہییکسڈیکائل مسلسل یا موجودہ علامت کے نام کو دے سکتے ہیں، یا "+" اور "-" کو استعمال کرسکتے ہیں یا اس کے پاس ہیکسڈاسیکیم constants یا علامات کو شامل کرسکتے ہیں. اگر آپ کو زیادہ وسیع اظہار کی ضرورت ہے، تو اسکرپٹ سے لنکر کمانڈ کی زبان کا استعمال کریں. نوٹ: علامت ( لوگو ) کے درمیان کوئی سفید جگہ نہیں ہونا چاہئے، برابر علامت (`` = '')، اور اظہار .

- ڈیمنگ [= سٹائل ]

- نہیں - ڈیمنگ

یہ اختیارات غلطی کے پیغامات اور دیگر آؤٹ پٹ میں علامات کے نام کو مسترد کرنا چاہتی ہیں. جب لنکر ڈیمالل کو بتایا جاتا ہے تو، یہ ایک پڑھنے کے قابل فیشن میں علامات کے نام پیش کرنے کی کوشش کرتا ہے: اگر وہ اعتراض فائل کی شکل سے استعمال کیا جاتا ہے، تو اس کے نیچے زیر قیادت رہتا ہے اور صارف کو پڑھنے کے قابل ناموں میں C ++ ممبئی علامت ناموں کو بدل دیتا ہے. مختلف compilers مختلف متعدد شیلیوں ہیں. آپ کے کمپائلر کے لئے مناسب ڈیمنگنگ سٹائل منتخب کرنے کے لئے اختیاری ڈیمنگنگ سٹائل کے دلائل استعمال کیے جا سکتے ہیں. جب تک ماحول متغیر COLLECT_NO_DEMANGLE مقرر نہیں ہوتا ہے تو لنکر ڈیفالٹ کی طرف سے ڈیمالل کریں گے. یہ اختیارات ڈیفالٹ کو اوور کرنے کے لئے استعمال کیا جا سکتا ہے.

- متحرک لنکر فائل

متحرک لنکر کا نام مقرر کریں. متحرک طور پر منسلک ELF ایگزیکٹوبلز تخلیق کرتے وقت یہ صرف بصیرت ہے. ڈیفالٹ متحرک لنکر عام طور پر درست ہے؛ اس کا استعمال نہ کریں جب تک کہ آپ جانتے ہو کہ آپ کیا کر رہے ہیں.

جھلکیاں

جب یہ ایرر برقرار رہے تو ہمارے ہیلپ ڈیسک سے رابطہ کریں. غلط استعمال کی اطلاع دیتے ہوئے ایرر آ گیا ہے. براہ مہربانی دوبارہ کوشش کریں. اگر یہ ایرر برقرار رہے تو ہمارے ہیلپ ڈیسک سے رابطہ کریں. غلط استعمال کی اطلاع دیتے ہوئے ایرر آ گیا ہے. لنکر کا سبب بنتا ہے کہ کسی ٹیبلٹ میں کسی بھی ڈیٹا کو منتقل کرنے کے لئے استعمال کیا جاسکتا ہے، جس سے قطع نظر پوائنٹر اقدار کو ابتدائی طور پر متعارف کرایا جاتا ہے. تفصیلات کے لئے جانچ پڑتال / ld-empic میں کوڈ ملاحظہ کریں.

- انتباہ انتباہ

تمام انتباہات کو غلطی کے طور پر علاج کریں.

- فورس - exe-suffix

اس بات کو یقینی بنائیں کہ ایک آؤٹ پٹ فائل میں .exe کی تکلیف ہے.

اگر کامیابی سے مکمل طور پر منسلک آؤٹ پٹ فائل میں کوئی ". exe " یا " .dll " suffix نہیں ہے، اس اختیار کو لنکر کو ".exe" تکلیف کے ساتھ ایک ہی نام میں فائل آؤٹ کرنے کی فائل کو کاپی کرنے کی طاقت ہوتی ہے. یہ اختیار مفید ہوتا ہے جب مائیکروسافٹ ونڈوز میزبان پر unmodified Unix بنانےfiles کا استعمال کرتے ہوئے، کیونکہ ونڈوز کے کچھ ورژن کسی تصویر کو نہیں چلائیں گے جب تک کہ ".exe" تکلیف میں ختم ہوجائے.

- نہیں - جی سی سیکشن

جی سی سیکشن

غیر استعمال شدہ ان پٹ حصوں کی ردی کی ٹوکری کا مجموعہ فعال کریں. اس اہداف پر نظر انداز کیا جاتا ہے جو اس اختیار کی حمایت نہیں کرتے. اس اختیار کے ساتھ ہم آہنگ نہیں ہے، اور نہ ہی متحرک لنک کے ساتھ استعمال کیا جانا چاہئے. پہلے سے طے شدہ رویے (یہ ردی کی ٹوکری جمع کرنے کی کارکردگی کا مظاہرہ نہیں) کی طرف سے بحال کیا جاسکتا ہے - کمانڈ لائن پر نو - جی سی سیکشن .

--مدد

معیاری آؤٹ پٹ اور باہر نکلیں کمانڈ لائن کے اختیارات کا خلاصہ پرنٹ کریں.

- مقاصد - مدد

معیاری آؤٹ پٹ اور باہر نکلنے کے تمام ہدف مخصوص اختیارات کا ایک خلاصہ پرنٹ کریں.

نقشہ نقشہ جات

فائل نقشہ فائل میں لنک کا نقشہ پرنٹ کریں. مندرجہ بالا ایم کے اختیارات کی وضاحت ملاحظہ کریں.

- کوئی یاد رکھنا

عام طور پر LD میموری میں ان پٹ فائلوں کی علامت میزوں کی طرف سے میموری کے استعمال پر تیز رفتار کے لئے مرضی کے مطابق. یہ اختیار LD سے بتاتا ہے کہ اس کے بجائے اس کے بجائے ضروری طور پر علامتوں کی جدولوں کی طرف سے حافظ میموری استعمال کے لئے بہتر بنانا. اگر یہ ایرر برقرار رہے تو ہمارے ہیلپ ڈیسک سے رابطہ کریں. غلط استعمال رپورٹ نہیں کیا جا سکا. ایک یا زیادہ ایرر آ گئے ہیں. براہ مہربانی ایرر پیغام سے نشان زدہ فیلڈز کو ٹھیک کریں.

نہیں

-Z defs

عام طور پر غیر علامتی مشترکہ لائبریری تخلیق کرتے وقت، غیر معمولی علامات کو رن ٹائم لوڈر کی طرف سے حل کرنے کی اجازت دی جاتی ہے. یہ اختیارات اس طرح کے غیر معمولی علامتوں کو مسترد کرتی ہیں.

--العمل - ایک سے زیادہ تعریف

- مولویوں

عموما جب کوئی علامت کئی بار بیان کرتا ہے تو، لنکر ایک مہلک غلطی کی اطلاع دے گا. یہ اختیارات ایک سے زیادہ کی تعریف کی اجازت دیتا ہے اور پہلی تعریف کا استعمال کیا جائے گا.

- قد - شیلب غیر منقول

مشترکہ چیزوں میں غیر معمولی علامتوں کی اجازت دیتے ہیں یہاں تک کہ جب - کوئی غیر منقول نہیں ہے. خالص نتیجہ یہ ہوگا کہ باقاعدگی سے اشیاء میں غیر معمولی نشانات اب بھی ایک غلطی کی تلقین کرے گی، لیکن مشترکہ اشیاء میں غیر معمولی علامت نظر انداز نہیں کی جائیں گی. no_undefined کے نفاذ اس تصور کو بنا دیتا ہے کہ رن ٹائم لنکر غیر منقولہ علامتوں پر گلا دیں گے. تاہم، کم از کم ایک نظام (BEOS) ہے جہاں مشترکہ لائبریریوں میں غیر معمولی علامات عام ہے کیونکہ چونکہ ان کو لوڈ کرنے کے وقت لوڈ کرنے کے وقت ان کی پیچھا کرتا ہے جو موجودہ فن تعمیر کے لئے مناسب ہے. IE متحرک طور پر ایک مناسب memset تقریب کو منتخب کریں. ظاہر ہے کہ HPPA کے لئے غیر معمولی علامات رکھنے کے لئے یہ عام لائبریریوں سے بھی مشترکہ ہے.

- کوئی غیر معمولی ورژن

عموما جب کوئی علامت غیر منفی ورژن ہے تو، لنکر اسے نظر انداز کرے گا. اس اختیار کو غیر معمولی ورژن کے ساتھ علامات سے مسترد کرتے ہیں اور اس کی بجائے ایک مہلک غلطی جاری کی جائے گی.

نہیں - انتباہ - بیمار

عام طور پر LD ایک غلطی دے گا اگر آپ ان پٹ فائلوں کو مل کر کرنے کی کوشش کرتے ہیں جو کسی وجہ سے بے بنیاد ہیں، شاید اس وجہ سے کہ وہ مختلف پروسیسرز یا مختلف endiannesses کے لئے مرتب کیا گیا ہے. یہ اختیار ایل ڈی سے کہتا ہے کہ اسے خاموشی سے اس طرح کے ممکنہ غلطیوں کی اجازت دی جاسکتی ہے. یہ اختیار صرف دیکھ بھال کے ساتھ استعمال کیا جانا چاہئے، اس صورت میں جب آپ نے کچھ خاص عمل لیا ہے تو یہ یقینی بناتا ہے کہ لنکر کی غلطیاں غیر مناسب ہیں.

نہیں - مکمل آرکائیو

بعد میں آرکائیو فائلوں کے لئے جوہری آرکائیو اختیار کا اثر بند کر دیں.

- ناانصافی - عملدرآمد

جب بھی اب بھی قابل استعمال ہے تو عمل درآمد آؤٹ پٹ فائل کو برقرار رکھنا. عام طور پر، لنکر ایک آؤٹ پٹ فائل پیدا نہیں کرے گا اگر یہ لنک کے عمل کے دوران غلطیوں کا سراغ لگاتا ہے؛ یہ آؤٹ پٹ فائل لکھنے کے بغیر نکلتا ہے جب اسے کسی بھی غلطی کا سامنا کرنا پڑتا ہے.

نستعلیق

صرف تلاش لائبریری ڈائریکٹریز کو واضح طور پر کمانڈ لائن پر متعین کیا گیا ہے. لکرکر سکرپٹ میں مخصوص لائبریری ڈائریکٹریز (کمانڈ لائن پر بیان کردہ لنکر سکرپٹ سمیت) کو نظر انداز کر دیا جاتا ہے.

- فارمیٹ آؤٹ پٹ فارمیٹ

LD ایک سے زیادہ قسم کی اعتراض فائل کی حمایت کرنے کے لئے تشکیل دیا جا سکتا ہے. اگر آپ کے ایل ڈی اس طرح سے ترتیب دیا جاتا ہے تو، آؤٹ پٹ فائل فائل کے لئے بائنری شکل کی وضاحت کرنے کے لئے آپ کو استعمال کرنے کے لئے استعمال کیا جا سکتا ہے. یہاں تک کہ جب ld متبادل اختیاری فارمیٹس کی حمایت کرنے کے لئے تشکیل دیا جاتا ہے، آپ کو عام طور پر اس کی وضاحت کرنے کی ضرورت نہیں ہے، لہذا ایل ڈی ہر ایک مشین پر سب سے زیادہ معمول کی شکل میں ایک ڈیفالٹ آؤٹ پٹ شکل کے طور پر پیدا کرنے کے لئے ترتیب دیا جانا چاہئے. آؤٹ پٹ فارمیٹ ایک متن سٹرنگ ہے، بی ایف ڈی لائبریریوں کی طرف سے کی حمایت کی ایک خاص شکل کے نام. (آپ objdump کے ساتھ دستیاب بائنری فارمیٹس کی فہرست کر سکتے ہیں.) اسکرپٹ کمانڈ "OUTPUT_FORMAT" بھی آؤٹ پٹ کی شکل کی وضاحت کرسکتے ہیں، لیکن یہ اختیار اس پر قابو پاتا ہے.

قماکک

یہ اختیار لینکس مطابقت کے لئے نظر انداز کر دیا گیا ہے.

- کیا

SVR4 مطابقت کے لئے اس اختیار کو نظر انداز کیا جاتا ہے.

سلیمان

مشین پر منحصر اثرات کے ساتھ ایک اختیار. یہ اختیار چند مقاصد پر صرف حمایت کرتا ہے.

کچھ پلیٹ فارمز پر، فرییکس اختیاری عالمی اصلاحات انجام دیتا ہے جب لنکر پروگرام میں خطاب کرتے ہوئے ممکن ہوسکتا ہے، جیسے آؤٹ پٹ ایڈریس کے طریقوں اور آؤٹ پٹ اعتراض فائل میں نئے ہدایات کو سنبھالنے.

کچھ پلیٹ فارمز پر یہ لنک وقت گلوبل اصلاحات نتیجے میں قابل عمل ناممکن کے علامتی ڈیبگنگ کر سکتا ہے. اس سے پروسیسروں کے مٹسششوتا MN10200 اور MN10300 خاندان کا معاملہ ہونا ہے.

پلیٹ فارم پر جہاں اس کی حمایت نہیں کی جاتی ہے، - کنکس قبول کیا جاتا ہے، لیکن نظر انداز نہیں کیا گیا ہے.

افسوس - علامات - فائل فائل نام

صرف فائلوں میں درج کردہ علامات کو برقرار رکھنا، سبھی کو مسترد کرنا. فائل نام صرف ایک فلیٹ فائل ہے، فی لائن ایک علامت نام کے ساتھ. یہ اختیار خاص طور پر ماحول میں ہے (جیسے VxWorks)، جہاں بڑے پیمانے پر عالمی علامت کی میز کو آہستہ آہستہ جمع کیا جاتا ہے، چلانے کے وقت کی میموری کو برقرار رکھنے کے لئے.

- بدقسمتی کی علامت - فائل غیر منقول شدہ علامات، یا نقل و حمل کے لئے ضروری علامات کو ختم نہیں کرتا.

آپ صرف وضاحت کر سکتے ہیں - کمانڈ کی علامت میں ایک بار فائلوں کی علامت . یہ اوورائڈز - او ایس ایس .

راڈ ڈری

رن ٹائم لائبریری تلاش کے راستے میں ڈائریکٹری شامل کریں. یہ استعمال کیا جاتا ہے جب ایک ELFexecutable مشترکہ اشیاء کے ساتھ منسلک. تمام رکاوٹوں کو کنٹیٹینیٹ کیا جاتا ہے اور رن ٹائم لنکر کو منتقل کیا جاتا ہے، جو رن ٹائم میں مشترکہ اشیاء کو تلاش کرنے کے لئے استعمال کرتا ہے. جب مشترکہ اشیاء کی طرف سے ضروری طور پر لنک میں شامل کردہ مشترکہ اشیاء کا پتہ لگانے پر ریت اختیار بھی استعمال کیا جاتا ہے؛ ریت لنک لنک کا بیان ملاحظہ کریں. اگر ELF کے قابل عمل سے منسلک ہونے پر رحم نہیں کیا جاتا ہے تو، ماحول کی متغیر "LD_RUN_PATH" کے مواد استعمال کیا جائے گا اگر یہ وضاحت کی جاتی ہے.

SunOS پر ریت کا اختیار بھی استعمال کیا جا سکتا ہے. پہلے سے طے شدہ طور پر، SunOS پر، لنکر تمام لیئے گئے اختیارات کے باہر رن ٹائم تلاش پیچ تشکیل دے گا. اگر ایک راستہ اختیار کیا جاتا ہے تو، ایل ایل کے اختیارات کو نظر انداز کرنے کے بجائے رنٹری کے اختیارات کا استعمال کرتے ہوئے رن ٹائم تلاش کا راستہ قائم کیا جائے گا. جی سی سی کا استعمال کرتے ہوئے یہ فائدہ مند ہوسکتا ہے، جس میں بہت سے اضافہ ہوتا ہے- ایل اختیارات جو فائل پر این ایف ایس ہو سکتی ہے، فائلوں کے نظام کو نصب کیا جا سکتا ہے.

دوسرے ELF لنکرز کے ساتھ مطابقت کے لئے، اگر فائل کا نام کے بجائے آر-آر اختیار کے بعد ڈائریکٹری کا نام ہوتا ہے، تو اس کا اختیار اختیار کے طور پر کیا جاتا ہے.

ریت لنک ڈائر

ELF یا SunOS کا استعمال کرتے وقت، ایک مشترکہ لائبریری کسی دوسرے کی ضرورت ہو سکتی ہے. ایسا ہوتا ہے جب "ldshared" لنک ​​میں ایک ان پٹ فائلوں میں سے ایک کے طور پر مشترکہ لائبریری شامل ہے.

جب لنکر غیر مشترکہ، غیر منسلک ہونے والی لنک کرتے وقت اس طرح کی ایک انحصار کا مقابلہ کرتا ہے، تو یہ خود بخود مطلوبہ مشترکہ لائبریری کو تلاش کرنے کی کوشش کرے گا اور اسے لنک میں شامل کرے گا، اگر یہ واضح طور پر شامل نہ ہو. ایسی صورت میں، ریت لنک کا اختیار آپ کو تلاش کرنے کے ڈائریکٹریز کا تعین کرتا ہے. ریت لنکس کا اختیار کولون کی طرف سے علیحدہ ناموں کی فہرست، یا ایک سے زیادہ بار ظاہر کرنے کی فہرست کی طرف سے یا تو ڈائرکٹری کے ناموں کی ترتیب کی وضاحت کرسکتے ہیں.

اس اختیار کو احتیاط سے استعمال کیا جاسکتا ہے کیونکہ یہ تلاش کا راستہ طے کر سکتا ہے جو مشترکہ لائبریری میں مشکل مرتب ہوسکتا ہے. اس صورت میں یہ رن ٹائم لنکر کرے گا کے مقابلے میں غیر متوقع طور پر مختلف تلاش کے راستے کا استعمال کرنا ممکن ہے.

مطلوبہ مشترکہ لائبریریوں کو تلاش کرنے کے لئے لنکر مندرجہ ذیل تلاش کے راستے کا استعمال کرتا ہے.

1.

کسی بھی ڈائریکٹریز کی طرف سے مخصوص لنک کے اختیارات.

2.

کسی بھی ڈائریکٹریز کی طرف سے مخصوص اختیارات. -درپیڈ اور ریت-لنک کے درمیان فرق یہ ہے کہ رویے کے اختیارات کی طرف سے مخصوص ڈائرکٹریز عمل میں شامل ہیں اور رن ٹائم میں استعمال ہوتے ہیں، جبکہ رالپ ٹریک کا اختیار لنک وقت میں صرف مؤثر ہے. یہ صرف مقامی لنک کے لئے ہے.

3.

ELF کے نظام پر، اگر ہمدردی اور "روپیڈ لنک" کے اختیارات استعمال نہیں کیے گئے تو، ماحول متغیر "LD_RUN_PATH" کے مواد کو تلاش کریں. یہ صرف مقامی لنک کے لئے ہے.

4.

SunOS پر، اگر راہ اختیار کا استعمال نہیں کیا گیا تو، ایل ایل کے استعمال کے مطابق مخصوص ڈائریکٹریز تلاش کریں.

5.

مقامی کنکر کے لئے، ماحول متغیر "LD_LIBRARY_PATH" کے مواد.

6.

مقامی ELF لنکر کے لئے، مشترکہ لائبریری کے "DT_RUNPATH" یا "DT_RPATH" میں ڈائریکٹریز اس کی طرف سے ضروری مشترکہ لائبریریوں کی تلاش کی جاتی ہیں. اگر "DT_RUNPATH" اندراج موجود ہیں تو "DT_RPATH" اندراج موجود نہیں ہیں.

7.

پہلے سے طے شدہ ڈائریکٹریز، عام طور پر / lib اور / usr / lib .

8.

ایک ELF کے نظام پر ایک مقامی لنکر کے لئے، اگر فائل /etc/ld.so.conf موجود ہے تو اس فائل میں پایا ڈائریکٹریز کی فہرست.

اگر ضروری مشترکہ لائبریری نہیں ملا ہے تو، لنکر ایک انتباہ جاری کرے گا اور لنک کے ساتھ جاری رکھیں گے.

مشترکہ

کامیاب

ایک مشترکہ لائبریری بنائیں. یہ فی الحال صرف ELF، XCOFF اور SunOS پلیٹ فارمز پر صرف اس کی حمایت کی ہے. SunOS پر، لنکر خود کار طریقے سے ایک مشترکہ لائبریری بنائے گا اگر وہ اختیار استعمال نہیں کیا جاتا ہے اور لنک میں غیر معمولی علامات موجود ہیں.

- عام طور پر

یہ اختیار LD سے عام علامات کو ترتیب دینے کے لئے بتاتی ہے جب وہ مناسب پیداوار حصوں میں جگہ رکھتا ہے. سب سے پہلے سب ایک بائیں علامات، پھر سب دو بائیں، پھر چار چار بائیں، اور پھر سب کچھ. یہ سیدھا رکاوٹوں کی وجہ سے علامات کے درمیان فرقوں کو روکنے کے لئے ہے.

- کی طرف سے فائل [ سائز ]

سائز تک پہنچنے کے بعد - انپلٹ کی طرف سے رکاوٹ کی طرح لیکن ہر ان پٹ فائل کے لئے ایک نیا آؤٹ پٹ سیکشن پیدا ہوتا ہے. اگر سائز نہیں دیا گیا تو سائز کا ڈیفالٹ 1 سائز تک ہوتا ہے.

- کی طرف سے تبدیلی

آؤٹ پٹ فائل میں اضافی حصوں کو تخلیق کرنے کی کوشش کرتا ہے تاکہ فائل میں کوئی بھی آؤٹ پٹ سیکشن گنتی نقل و حمل سے بھی زیادہ نہیں ہوتا . یہ مفید ہے جب COFF اعتراض فائل کی شکل کے ساتھ مخصوص اصلی وقت کے داتوں میں ڈاؤن لوڈ کرنے کے لئے بہت بڑی نقل مکانی فائلوں کی تخلیق؛ چونکہ COFFcannot ایک ہی حصے میں 65535 سے زیادہ نقل مکانات کی نمائندگی کرتا ہے. نوٹ کریں کہ یہ اعتراض فائل فارمیٹس کے ساتھ کام کرنے میں ناکام ہو جائے گا جس میں مباحثہ طبقے کی حمایت نہیں ہوتی. لنکر انفرادی ان پٹ حصوں کو دوبارہ تقسیم کرنے کے لئے تقسیم نہیں کرے گا، لہذا اگر ایک ان پٹ سیکشن میں شمار میں منتقل ہونے سے کہیں زیادہ ہوتا ہے تو ایک آؤٹ پٹ سیکشن میں ان کے بہت سے نقل مکانات شامل ہوں گے. 32768 کی قیمت میں ڈیفالٹ شمار کریں .

اسٹیٹس

لنکر کے آپریشن کے بارے میں اعداد و شمار کو کمپاؤنٹ اور ڈسپلے، جیسے اعدام کا وقت اور میموری استعمال.

- ٹائم کی شکل

کچھ مقاصد کے لئے، کچھ موجودہ لنکر کی پیداوار سے کچھ طریقوں میں ایل ڈی کی پیداوار مختلف ہے. اس سوئچ کی درخواستوں کے بجائے روایتی شکل کا استعمال کرنے کے لئے ld .

مثال کے طور پر، SunOS پر، ایل ڈی ڈپلیکیٹ اندراج کو علامت سٹرنگ ٹیبل میں جوڑتا ہے. یہ مکمل ڈیبگنگ معلومات کے ساتھ آؤٹ پٹ فائل کے سائز کو 30 فیصد سے کم کر سکتا ہے. بدقسمتی سے، SunOS "dbx" پروگرام نتیجے سے متعلق پروگرام نہیں پڑھ سکتا ہے ("GDB" میں کوئی مصیبت نہیں ہے). --ٹڈیٹیٹیٹ فارمیٹ سوئچ LD بتاتی ہے کہ ڈپلیکیٹ اندراجات کو جمع نہیں کیا جا سکتا.

سیکشن شروع سیکشن نام = org

آؤٹ کی طرف سے دی گئی مکمل ایڈریس پر پیداوار فائل میں ایک سیکشن کا پتہ لگائیں. آپ کمانڈ لائن میں ایک سے زیادہ حصوں کو تلاش کرنے کے لئے ضروری ہے کہ آپ اس اختیار کو بہت سے بار استعمال کرسکیں. org ایک ہی ہیجڈاسکمل کمیٹر ہونا لازمی ہے؛ دوسرے لنکرز کے ساتھ مطابقت کے لۓ، آپ عام طور پر 0x معروف ہوسکتے ہیں جو عام طور پر ہییکسڈیکائل اقدار کے ساتھ منسلک ہیں. نوٹ: سیکشن نام کے درمیان کوئی سفید جگہ نہیں ہونا چاہئے، مساوات کے برابر (`` = '')، اور org .

ٹی ٹی ایس org

- ٹیٹاٹا org

ٹیکسٹ org

پیداوار کے ایڈریس کے طور پر org کے طور پر --- بالترتیب --- "بی ایس ایس"، "ڈیٹا"، یا آؤٹ لک فائل کے "متن" طبقہ کے طور پر استعمال کریں. org ایک ہی ہیجڈاسکمل کمیٹر ہونا لازمی ہے؛ دوسرے لنکرز کے ساتھ مطابقت کے لۓ، آپ عام طور پر 0x معروف ہوسکتے ہیں جو عام طور پر ہییکسڈیکائل اقدار کے ساتھ منسلک ہیں.

--dll-شبدبہل

- ہر جگہ

ایل ڈی کے لئے ورژن نمبر دکھائیں اور لنکر ای میلوں کی حمایت کی فہرست درج کریں. ظاہر کریں کہ ان پٹ فائلوں کو کونسا کھول سکتا ہے. linker کی طرف سے استعمال کیا جاتا لنکر اسکرپٹ کو دکھائیں.

ترمیم سکرپٹ = ورژن سکرپٹ

لنکر میں ایک نسخہ اسکرپٹ کا نام متعین کریں. یہ عام طور پر استعمال کیا جاتا ہے جب مشترکہ لائبریریوں کو تخلیق کرنے کے لۓ لائبریری کے لۓ ورژن وارثریی کے بارے میں مزید معلومات کی وضاحت کرنے کے لئے تیار کیا جاتا ہے. یہ اختیار ELF پلیٹ فارمز پر صرف معقول ہے جو مشترکہ لائبریریوں کی حمایت کرتا ہے.

- عام - عام

جب ایک عام علامت دوسرے عام علامت کے ساتھ یا علامت کی تعریف کے ساتھ مل کر مشترکہ کیا جاتا ہے تو اس بات کو یاد رکھیں. یونیسی لنکرز نے یہ کچھ حد تک فلاپی عمل کی اجازت دیتے ہیں، لیکن کچھ دوسرے آپریٹنگ سسٹم پر لنکرز نہیں ہیں. یہ اختیار آپ کو گلوبل علامات کو جمع کرنے سے ممکنہ مسائل کو تلاش کرنے کی اجازت دیتا ہے. بدقسمتی سے، بعض سی لائبریری اس عمل کا استعمال کرتے ہیں، لہذا آپ لائبریریوں کے ساتھ ساتھ آپ کے پروگراموں میں علامتوں کے بارے میں کچھ انتباہ بھی حاصل کرسکتے ہیں.

یہاں تین اقسام ہیں جنہیں یہاں گلوبل نشانیاں ملتی ہیں.

int i = 1؛

ایک تعریف، جو آؤٹ پٹ فائل کے ابتدائی اعداد و شمار کے حصے میں جاتا ہے.

extern int میں؛

ایک غیر معمولی حوالہ، جس سے جگہ مختص نہیں کرتا. متغیر جگہ کے لئے یا تو ایک تعریف یا ایک عام علامت ہونا ضروری ہے.

int i؛

ایک عام علامت. اگر متغیر کے لئے صرف (ایک یا زیادہ) عام علامات ہیں، تو یہ آؤٹ پٹ فائل کے غیر منبع ڈیٹا علاقے میں جاتا ہے. لنکر ایک ہی علامت میں ایک ہی متغیر کے لئے ایک سے زیادہ عام علامات کو ضم کرتا ہے. اگر وہ مختلف سائز کے ہیں، تو یہ سب سے بڑا سائز چنتا ہے. لنکر ایک عام علامت میں ایک اعلان میں بدل جاتا ہے، اگر ایک ہی متغیر کی تعریف ہوتی ہے.

واورن - عام آپشن پانچ قسم کی انتباہ پیدا کر سکتی ہے. ہر انتباہ لائنوں کی ایک جوڑی پر مشتمل ہوتی ہے: سب سے پہلے علامت کا سامنا کرنا پڑتا ہے، اور دوسرا اسی نام کے ساتھ سامنا ہوا پچھلے علامت کی وضاحت کرتا ہے. ایک یا دو علامتوں کا ایک عام علامت ہوگا.

1.

ایک حوالہ میں ایک عام علامت کو تبدیل کر رہا ہے، کیونکہ علامت کے لئے پہلے ہی ایک تعریف ہے.

<فائل> (<سیکشن>): انتباہ: تعریف <عام طور پر <علامت> 'کی طرف سے زیادہ سے زیادہ <فائل> (<سیکشن>): انتباہ: یہاں کی وضاحت

2.

ایک حوالہ میں ایک عام علامت بدل رہا ہے، کیونکہ علامت کے بعد بعد کی تعریف کا سامنا کرنا پڑا ہے. یہ پچھلے کیس کے طور پر ہے، اس کے علاوہ اس علامتوں کو مختلف ترتیب میں سامنا کرنا پڑا ہے.

<فائل> (<سیکشن>): انتباہ: `<علامت> 'کی تعریف عام <فائل> (<سیکشن>) سے زیادہ ہے: انتباہ: عام یہاں ہے

3.

پچھلے ہی سائز کے عام علامت کے ساتھ ایک عام علامت ضم.

<فائل> (<سیکشن>): انتباہ: `<علامت> '<فائل> (<سیکشن>) کے بہت سے عام: انتباہ: پچھلے عام یہاں ہے

4.

گزشتہ بڑے عام علامت کے ساتھ ایک عام علامت ضم.

<فائل> (<سیکشن>): انتباہ: عام <`علامت> 'کا بڑا بڑا عام <فائل> (<سیکشن>) کی طرف سے زیادہ سے زیادہ ہے: انتباہ: بڑا عام یہاں ہے

5.

گزشتہ چھوٹے عام علامت کے ساتھ ایک عام علامت ضم. یہ پچھلے کیس کے طور پر ہے، اس کے علاوہ اس علامتوں کو مختلف ترتیب میں سامنا کرنا پڑا ہے.

<فائل> (<سیکشن>): انتباہ: عام <`علامت> 'کا معمولی چھوٹے عام <فائل> (<سیکشن>) پر قبضہ کر رہا ہے: انتباہ: چھوٹے عام یہاں ہے

- واور - تعمیراتی

خبردار اگر کسی بھی گلوبل ڈویلپرز استعمال کیے جائیں. یہ کچھ اعتراض فائل فارمیٹس کے لئے صرف مفید ہے. COFF یا ELF جیسے فارمیٹس کے لئے، لنکر گلوبل ڈویلپرز کے استعمال کا پتہ لگانا نہیں کرسکتا.

- واور - ایک سے زیادہ جی پی

خبردار کریں کہ آؤٹ پٹ فائل میں متعدد عالمی پوائنٹر اقدار کی ضرورت ہے. یہ کچھ پروسیسرز جیسے الفا کے طور پر صرف معنی ہے. خاص طور پر، بعض پروسیسرز نے ایک اہم حصہ میں بڑے معدنیات سے متعلق محض رکھی. ایک خاص رجسٹر (عالمی پوائنٹر) اس سیکشن کے وسط میں اشارہ کرتا ہے، تاکہ محض بیس بیس رجسٹریشن سے متعلق ایڈریس موڈ کے ذریعہ مؤثر طریقے سے بھری ہوئی ہوسکتی ہے. چونکہ بیس بیس رجسٹرڈ رشتہ دار موڈ میں آفسیٹ طے شدہ اور نسبتا چھوٹا ہوتا ہے (مثال کے طور پر، 16 بٹس)، یہ مسلسل پول کے زیادہ سے زیادہ سائز کو محدود کرتا ہے. اس طرح، بڑی پروگراموں میں، اکثر ممکنہ طور پر متعدد گلوبل پوائنٹر اقدار کو استعمال کرنے کے لئے ضروری ہے تاکہ ہر ممنوعہ محض پھیروں کو حل کرنے کے قابل ہو. یہ اختیار جب بھی ہوتا ہے تو اس اختیار کا انتباہ جاری ہے.

- ایک بار

ہر ایک غیر منقولہ علامت کے لئے صرف ایک بار انتباہ کرتے ہیں، فی ماڈیول فی ایک بار، جو اس سے مراد ہے.

- لکھا سیکشن - سیدھا

اگر انتباہ کی وجہ سے آؤٹ پٹ کے حصے کا پتہ تبدیل ہوجائے تو پتہ چلتا ہے. عام طور پر، قطار ایک ان پٹ سیکشن کی طرف سے مقرر کیا جائے گا. پتہ صرف اس صورت میں بدل جائے گا اگر یہ واضح طور پر بیان نہیں کیا جائے گا؛ یہ ہے، اگر "سیکشن" کمانڈ سیکشن کے لئے شروع ایڈریس کی وضاحت نہیں کرتا ہے.

- جوہری آرکائیو

ہول-آرکائیو کے اختیارات کے بعد کمان لائن پر ہر آرکائیو کے لئے، لازمی اعتراض کی فائلوں کے لئے آرکائیو کو تلاش کرنے کے بجائے، لنک میں آرکائیو میں ہر شے فائل میں شامل ہوتا ہے. یہ عام طور پر ایک آرکائیو فائل کو ایک مشترکہ لائبریری میں تبدیل کرنے کے لئے استعمال کیا جاتا ہے، جس کے نتیجے میں مشترکہ مشترکہ لائبریری میں ہر چیز شامل ہونا چاہئے. یہ اختیار ایک بار سے زیادہ استعمال کیا جا سکتا ہے.

جی سی سی سے اس اختیار کا استعمال کرتے ہوئے دو نوٹ: سب سے پہلے، جی سی سی اس اختیار کے بارے میں نہیں جانتا، لہذا آپ کو استعمال کرنا پڑے گا -WL، -whole-archive . دوسرا، آپ آرکائیوز کی فہرست کے بعد ، ڈبلیو - نہ - ساری محفوظ شدہ دستاویزات استعمال نہ کریں، کیونکہ جی سی سی آپ کے لنک پر اپنی آرکائیو کی اپنی فہرست شامل کرے گی اور آپ یہ نہیں چاہتے کہ یہ پرچم بھی ان لوگوں کو متاثر کرے.

لکڑی کا نشان

علامت کے لئے لاپتہ تقریب کا استعمال کریں. علامت کے کسی بھی غیر معمولی حوالہ "__ wrap_symbol" کو حل کیا جائے گا. "__real_symbol" کے کسی بھی بے نقاب حوالہ نشان کو حل کیا جائے گا.

یہ ایک نظام کے فنکشن کے لئے لفافہ فراہم کرنے کے لئے استعمال کیا جا سکتا ہے. wrapper تقریب کو "__wrap_symbol" کہا جانا چاہئے. اگر یہ نظام کی تقریب کو کال کرنا چاہتا ہے تو اسے "__ real_symbol" کہتے ہیں.

یہاں ایک چھوٹا سا مثال ہے:

باطل * __wrap_malloc (int c) {printf ("٪ ld \ n" کے ساتھ بلایا ملالہ، c)؛ واپسی __real_malloc (c)؛ }

اگر آپ اس فائل کے ساتھ دوسرے کوڈ کو لنک کرتے ہیں - لکڑی مولولک ، پھر "ماللکو" میں تمام کالز کی بجائے تقریب "__wrap_malloc" کو کال کریں گے. "__wrap_malloc" میں "__real_malloc" کا کال حقیقی "ملالکو" تقریب کو کال کریں گے.

آپ کو "__real_malloc" تقریب فراہم کرنا بھی ہوسکتا ہے، تاکہ بغیر لکھے اختیار کے بغیر روابط کامیاب ہوں گے. اگر آپ ایسا کرتے ہیں تو آپ کو "__wrap_malloc" کے طور پر اسی فائل میں "__ real_malloc" کی تعریف نہیں کرنا چاہئے؛ اگر آپ کرتے ہیں تو، اسمبلی کو فون کو حل کرنے سے قبل لنکر کو اسے "مالاکوک" کو لپیٹنے کا موقع ملے گا.

- قابل - نئے-ڈاٹگ

- قابل اطلاق نئے-ڈاٹگ

یہ روابط ELF میں نیا متحرک ٹیگ بنا سکتا ہے. لیکن بڑی عمر کے ایل ایف کے نظام ان کو سمجھ نہیں سکتے ہیں. اگر آپ وضاحت کرتے ہیں - قابل اطلاق نئے-ڈیٹٹکس ، متحرک ٹیگ کی ضرورت ہو گی. اگر آپ وضاحت کرتے ہیں - قابل اطلاق نئے-ڈاٹگکس ، کوئی نیا متحرک ٹیگ نہیں بنائے جائیں گے. پہلے سے طے شدہ طور پر، نئے متحرک ٹیگ نہیں بنائے جاتے ہیں. نوٹ کریں کہ ان کے اختیارات صرف FORELF سسٹم دستیاب ہیں.

i386 پیئ لنکر نے مشترکہ اختیار کی حمایت کی ہے، جس سے پیداوار عام طور پر منسلک ہونے کی بجائے متحرک طور پر منسلک لائبریری (DLL) بناتا ہے. جب آپ اس اختیار کو استعمال کرتے ہیں تو آپ کو "* .dll" پیداوار نام کرنا چاہئے. اس کے علاوہ، لنکر معیاری "*" ڈیڈ فائلوں کو مکمل طور پر حمایت کرتا ہے، جس میں لنکر کمانڈ لائن پر اعتراض فائل کی طرح بیان کیا جاسکتا ہے (حقیقت میں، یہ آرکائیو سے پہلے یہ علامتوں کو برآمد کرنا چاہئے، اس بات کا یقین کرنے کے لئے کہ وہ منسلک ہوجائیں، صرف ایک عام اعتراض فائل کی طرح).

تمام مقاصد کے لئے عام اختیارات کے علاوہ، i386 پیئ لنکر اضافی کمانڈ لائن کے اختیارات کی حمایت کرتا ہے جو i386 پیئ ہدف کے لئے مخصوص ہیں. اقدار کو لے جانے والے اختیارات کو ان کی قیمتوں سے کسی جگہ کی طرف سے الگ کیا جاسکتا ہے یا ایک مساوات کے برابر.

--ڈڈ اسٹال عرف

اگر دیا گیا ہے تو، ایک اسٹڈی کاپی کاپی (@ این این ) کے ساتھ علامتوں کو برآمد کیا جائے گا اور اس کے ساتھ ہی پٹھوں کو اتار دیا جائے گا.

بیس فائل فائل

فائل کا نام فائل کے طور پر استعمال کریں جس میں تمام نقل مکانیوں کے بیس ایڈریس کو بچانے کے لئے ڈی ایل ایل کے ساتھ ڈی ایل ایل پیدا کرنے کے لئے ضروری ہے.

--dll

باقاعدگی سے عملدرآمد کے بجائے ایک DLL بنائیں. آپ کسی بھی ".def" فائل میں ایک "لائبریری" کا اشتراک یا اس کی وضاحت کرسکتے ہیں.

قابل اطلاق سٹڈکل - فکسپ

- قابل اطلاق سٹڈکل - فکسپ

اگر لنک ایک علامت ڈھونڈتا ہے جو یہ حل نہیں کرسکتا ہے، اس کو ایک دوسرے کی وضاحت کردہ علامت کی تلاش کرکے `` فجی لنکنگ '' کرنے کی کوشش کرے گی، جو صرف علامتی نام (cdecl vs stdcall) کی شکل میں مختلف ہوتا ہے اور منسلک کرکے اس علامت کو حل کرے گا. میچ میں مثال کے طور پر، غیر معمولی نشان "_foo" کی تقریب "_foo @ 12" سے منسلک کیا جاسکتا ہے، یا غیر معمولی نشان "_bar @ 16" کو فنکشن "_bar" سے منسلک کیا جا سکتا ہے. جب لنکر ایسا کرتا ہے تو، یہ ایک انتباہ پرنٹ کرتا ہے، کیونکہ اس سے عام طور پر لنک کرنے میں ناکام ہوگیا تھا، لیکن کبھی کبھی تیسری پارٹی کے ڈییلز سے پیدا شدہ لائبریری درآمد کرتے ہیں اس خصوصیت کو استعمال کرنے کی ضرورت ہوسکتی ہے. اگر آپ وضاحت کرتے ہیں - قابل - اسٹڈکال فکسپ ، یہ خصوصیت مکمل طور پر فعال ہے اور انتباہ پرنٹ نہیں کی جاتی ہے. اگر آپ وضاحت کرتے ہیں - قابل استعمال - اسٹڈکل - فکسپ ، یہ خصوصیت غیر فعال ہے اور اس طرح کی غلطی غلطیاں سمجھی جاتی ہیں.

غیر ملکی - علامات

اگر دی گئی ہے تو، DLL کی طرف سے برآمد کردہ ڈی ایل ایل کی تعمیر کے لئے استعمال کردہ اشیاء میں تمام عالمی علامات. نوٹ کریں کہ یہ ڈیفالٹ ہے اگر دوسری صورت میں کسی بھی برآمد کردہ علامت نہیں ہوں گے. جب DEF فائلوں کے ذریعہ واضح طور پر برآمد کردہ علامات برآمد کیے جاتے ہیں تو تقریب کے صفات کے ذریعہ برآمد کیا جاتا ہے تو، ڈیفالٹ یہ ہے کہ جب تک یہ اختیار نہیں دیا جاتا ہے، تو اسے ڈیفالٹ برآمد نہیں کیا جائے گا. نوٹ کریں کہ علامات "DllMain @ 12"، "DllEntryPoint @ 0"، "DllMainCRTSTartup @ 12"، اور "impure_ptr" خود کار طریقے سے برآمد نہیں کیا جائے گا. اس کے علاوہ، دوسرے DLL سے درآمد شدہ علامتوں کو دوبارہ برآمد نہیں کیا جائے گا، اور نہ ہی ڈی ایل ایل کے اندرونی ترتیب کی علامتوں کو نشان زد کریں گے جیسے جیسے "_head_" یا "_iname" کے ساتھ ختم ہونے والے نشانات. اس کے علاوہ، "libgcc"، "libstd ++"، "libmingw32"، یا "crtX.o" سے کوئی علامات برآمد نہیں کیے جائیں گے. نشانیاں جن کے نام "__rtti_" یا "__builtin_" کے ساتھ شروع ہو جائیں گے، نہیں برآمد کریں گے، C ++ DLLs کے ساتھ مدد کرنے کے لئے. آخر میں، سائگون نجی علامتوں کی ایک وسیع فہرست ہے جو برآمد نہیں کی جاتی ہے (واضح طور پر، یہ سائگون کے اہداف کے لئے DLL کی تعمیر پر لاگو ہوتا ہے).

یہ سائگون میں شامل نہیں ہیں: "_ سیسیونین_ ڈیل ایننٹ 12"، "_cygwin_crt0_common @ 8"، "_ cygwin_noncygwin_dll_entry @ 12"، "_fmode"، "_impure_ptr"، "cygwin_attach_dll"، "cygwin_premain0"، "cygwin_premain1"، "cygwin_premain2"، "cygwin_premain3" "cygwin_premain3 "، اور" ماحول ".

- شامل کریں علامات علامت ، علامت ، ...

علامات کی فہرست کی وضاحت کرتا ہے جو خود بخود برآمد نہیں ہونا چاہئے. علامات کے نام کو کما یا کالوں کی طرف سے محدود کیا جا سکتا ہے.

آزادی - libs lib ، lib ، ...

آرکائیو لائبریریوں کی ایک فہرست کی وضاحت کرتا ہے جس سے علامتوں کو خود بخود برآمد نہیں کیا جانا چاہئے. لائبریری کے نام کو کما یا کالونوں سے الگ کیا جا سکتا ہے. "- شامل کردہ لیبیا سبھی" کی وضاحت کرنا "خود کار طریقے سے برآمد سے تمام آرکائیو لائبریریوں میں نشانیاں شامل نہیں ہیں. واضح طور پر ڈی ڈی ایف فائل میں درج کردہ علامات اب بھی اس اختیار کے بغیر برآمد کئے جاتے ہیں.

- فائل سیدھ

فائل کی سیدھ کی وضاحت کریں. فائل میں حصے ہمیشہ فائل آف سیٹ پر شروع کریں گے جو اس نمبر کے ملحق ہیں. یہ طے شدہ 512 تک.

--پھرا ریزرو

ہیپ ریزرو ، وعدہ

اس پروگرام کے لۓ شے کے طور پر استعمال کرنے کے لئے ریزرو (اور اختیاری وعدہ) کو میموری کی رقم کی وضاحت کریں. ڈیفالٹ ڈیفالٹ 1Mb ہے، 4K انجام دیا ہے.

--مصرف بیس کی قیمت

اپنے پروگرام یا ڈییل کے بیس ایڈریس کے طور پر قدر کا استعمال کریں. یہ سب سے کم میموری محل وقوع ہے جو آپ کے پروگرام یا DLL لوڈ ہو جاتا ہے جب استعمال کیا جائے گا. منتقل کرنے اور آپ کے DLL کی کارکردگی کو بہتر بنانے کی ضرورت کو کم کرنے کے لئے، ہر ایک کو ایک منفرد بیس ایڈریس ہونا چاہئے اور کسی دوسرے ڈیلز کو اوورلوپ نہیں ہونا چاہئے. ڈیفالٹ 0x400000 executables کے لئے ہے، اور 0x10000000 dlls کے لئے.

- کلو

اگر دی گئی ہے تو، اس اسٹاک سیال تکمیل (@ این ) کو برآمد کرنے سے قبل نشانوں سے چھٹکارا جائے گا.

اہم تصویر ورژن ورژن

`تصویر ورژن 'کی بڑی تعداد کو سیٹ کرتا ہے. 1 سے غلطی

مرکزی - ورژن ورژن کی قیمت

`os ورژن 'کی بڑی تعداد کو سیٹ کرتا ہے. 4 کی غلطیاں

اہم - سبسیکشن ورژن ورژن

`` سب سسٹم '' کی بڑی تعداد کو سیٹ کرتا ہے. 4 کی غلطیاں

- منور - تصویر - ورژن کی قدر

`تصویر ورژن 'کی معمولی تعداد کو سیٹ کرتا ہے. 0 پر غلطیاں

منور - ورژن ورژن قیمت

معمول کی تعداد `` اوسی ورژن 'سیٹ کرتا ہے. 0 پر غلطیاں

- منور سبسیکشن ورژن ورژن

`` سب سسٹم '' کی معمولی تعداد کو سیٹ کرتا ہے. 0 پر غلطیاں

آؤٹ پٹ ڈیف فائل

لنکر فائل فائل تشکیل دے گی جس میں ڈی ایچ ایل کے مطابق ڈیف ایف فائل شامل ہو گی جس میں لنکر پیدا ہو رہا ہے. یہ DEF فائل (جس کو "* .def" کہا جانا چاہئے) "ڈیولٹو" کے ساتھ ایک درآمد لائبریری تخلیق کرنے کے لئے استعمال کیا جا سکتا ہے یا خود کار طریقے سے یا معتبر طور پر ایکسپورٹ اشارے کے حوالے سے استعمال کیا جا سکتا ہے.

ایک آؤٹ پٹ فائل

لنکر فائل فائل تخلیق کرے گا جس میں ڈی ایل ایل کے مطابق ایک درآمد کردہ لائبریری شامل ہوگی جس میں لنکر پیدا ہو رہا ہے. یہ درآمدی لی (جس کو کہا جاتا ہے "* .dll.a" یا "* .a" استعمال کیا جا سکتا ہے، تخلیق شدہ DLL کے خلاف گاہکوں کو منسلک کرنے کے لئے؛ یہ رویے ایک علیحدہ "dlltool" درآمد لائبریری تخلیق قدم کو چھوڑنے کے لئے ممکن ہے.

قابل اطلاق آٹو تصویر کی بنیاد

خود کار طریقے سے DLL کے لئے تصویر کا مرکز منتخب کریں، جب تک کہ کسی کو "--image-base" کے دلائل کا استعمال نہیں کیا جاسکے. ہر ڈی ڈی ایل کے لئے منفرد تصویری اڈوں کو تخلیق کرنے کے لئے dllname سے پیدا ہونے والی ایک ہیش کا استعمال کرتے ہوئے، ان میں میموری ٹرانزیکشنز اور نقل مکانیوں کو جو پروگرام کے عمل میں تاخیر سے بچا جاسکتا ہے.

قابل اطلاق آٹو تصویر بیس

خود بخود منفرد تصویر بیس پیدا نہ کریں. اگر کوئی صارف کی مخصوص تصویر بیس ("--image-base") نہیں ہے تو پھر پلیٹ فارم ڈیفالٹ استعمال کریں.

- ڈیل تلاش - پہلے سے طے شدہ سٹرنگ

جب ڈی ڈی ایل کسی متحرک لائبریری کے بغیر متحرک طور پر منسلک ہوتا ہے تو، "lib .dll" پر ترجیح میں " .dll" تلاش کریں. یہ رویہ مختلف `` subplatforms ': مقامی، cygwin، uwin، پی او وغیرہ کے لئے بنایا DLL کے درمیان آسان فرق کی اجازت دیتا ہے. مثال کے طور پر، cygwin DLL عام طور پر "- ڈیل-سرچ - prefix = cyg" استعمال کرتے ہیں.

قابل اعتماد آٹو درآمد

DLL سے ڈیٹا درآمدات کے لئے "_symbol" کی جدید ترین منسلک کرتے ہیں، اور DATAexports کے ساتھ درآمد لائبریریوں کی تعمیر کرتے وقت ضروری انگوٹھے نشان بناتے ہیں. یہ عام طور پر 'صرف کام' کرے گا --- لیکن کبھی کبھی آپ اس پیغام کو دیکھ سکتے ہیں:

"متغیر" 'خود کار طریقے سے درآمد نہیں کیا جاسکتا. برائے مہربانی دستاویزات برائے تفصیلات کے لئے "قابل اعتماد آٹو درآمد" کے لئے دستاویزات پڑھیں.

یہ پیغام اس وقت ہوتا ہے جب کچھ (ذیلی) اظہار ایک مستقل طور پر ایک ایڈریس تک رسائی حاصل کرتا ہے جسے دو رکاوٹوں کے ذریعہ دیا جاتا ہے (Win32 درآمد میزیں صرف ایک ہی اجازت دیتا ہے). اس صورت میں جہاں یہ ہوسکتا ہے اس میں شامل ہے کہ ڈیلیل سے درآمد ساخت متغیر کے ممبر شعبوں میں رسائی، اور ساتھ ساتھ ڈی ڈی ایل سے درآمد کردہ صف متغیر میں مسلسل انڈیکس کا استعمال کرتے ہوئے. کسی بھی کثیر زبان متغیر (arrays، structs، طویل عرصے سے، وغیرہ) اس غلطی کی حالت کو ٹرگر کرسکتے ہیں. تاہم، پریشان کن برآمد شدہ متغیر کی صحیح اعداد و شمار کی قسم کے مطابق، ld ہمیشہ اس کا پتہ لگائے گا، انتباہ، اور باہر نکلیں.

اس مشکل کو حل کرنے کے کئی طریقے ہیں، برآمد شدہ متغیر کے اعداد و شمار کی قسم کے بغیر:

ایک ہی طریقہ استعمال کرنے کے قابل ہے - قابل اطلاق رن ٹائم-چھاسو- ریسکیو سوئچ. یہ آپ کے کلائنٹ کوڈ میں رن ٹائم ماحول کے لئے ریفرنسز کو ایڈجسٹ کرنے کا کام چھوڑتا ہے، لہذا یہ طریقہ صرف کام کرتا ہے جب رن ٹائم اینورٹمنٹ اس خصوصیت کی حمایت کرے.

دوسرا حل یہ ہے کہ 'رکاوٹوں' میں سے کسی ایک متغیر ہونے پر مجبور ہوجائے --- جو کہ مطابقت پذیر وقت پر نامعلوم اور غیر مرضی کے مطابق ہے. arrays کے لئے، دو امکانات موجود ہیں: a) انڈیکسڈی (صف کا پتہ) ایک متغیر، یا ب) بنانے 'مسلسل' انڈیکس ایک متغیر. اس طرح:

خارجہ قسم extern_array []؛ extern_array [1] -> {مستحکم قسم * t = extern_array؛ t [1]}

یا

خارجہ قسم extern_array []؛ extern_array [1] -> {مستحکم int = = 1؛ extern_array [t]}

structs کے لئے (اور زیادہ سے زیادہ کثیر مطلوبہ الفاظ کے اعداد و شمار کی اقسام) صرف ایک ہی اختیار ہے جس میں ساخت خود (یا طویل عرصہ، یا ...) متغیر بنانا ہے:

extern struct s extern_struct؛ extern_struct.field -> {مستحکم ساخت ے * t = & extern_struct؛ ٹی - فیلڈ}

یا

extern طویل طویل extern_ll؛ extern_ll -> {مستحکم لمبی لمبی * local_ll = & extern_ll؛ * local_ll}

اس مشکل سے نمٹنے کا ایک تہہ طریقہ اختتام شدہ علامت کے لئے 'آٹو درآمد' کو چھوڑ کر اسے "__declspec (dllimport)" سے نشان زد کرنا ہے. تاہم، عملی طور پر جس میں مرتب شدہ وقت #defines استعمال کرنے کی ضرورت ہوتی ہے اس بات کی نشاندہی کرنے کے لئے کہ آپ DLL تعمیر کررہے ہیں، کلائنٹ کا کوڈ بنانا جو ڈی ایل ایل سے منسلک ہوجائے گا یا صرف ایک مستحکم لائبریری سے منسلک ہوجائے گا. مستقل آفسیٹ کے ساتھ براہ راست ایڈریس کو حل کرنے کے مختلف طریقوں کے درمیان انتخاب کرنے میں، آپ کو عام دنیا کے استعمال کے بارے میں غور کرنا چاہئے:

اصل:

--foo.h extern int arr []؛ --foo.c # شامل کریں "foo.h" باطل مین (int argc، چار ** argv) {printf ("٪ d \ n"، arr [1])؛ }

حل 1:

--foo.h extern int arr []؛ --foo.c # شامل کریں "foo.h" باطل مین (int argc، چار ** argv) {/ * یہ پہلو دور win32 اور cygwin کے لئے ہے؛ "بہتر بنائیں" * / مستحکم int * parr = arr؛ پرنف ("٪ d \ n"، parr [1])؛ }

حل 2:

--foo.h / * نوٹ: آٹو برآمد فرض کیا جاتا ہے (نہیں __declspec (dllexport)) * / #if (وضاحت (_WIN32) || وضاحت (__ CYGWIN__)) && \! (وضاحت کی گئی ہے (FOO_BUILD_DLL) || وضاحت (FOO_STATIC )) # مزید FOO_IMPORT __declspec (dllimport) # کھولیں FOO_IMPORT #endif extern FOO_IMPORT int arr []؛ --foo.c # شامل کریں "foo.h" باطل مین (int argc، چار ** argv) {printf ("٪ d \ n"، arr [1])؛ }

اس مسئلے سے بچنے کے لئے ایک چوتھا راستہ آپ کے لائبریری کو غیر فعال متغیر (مثال کے طور پر set_foo () اور get_foo () رسیور افعال کے لئے ایک ڈیٹا انٹرفیس کے بجائے ایک فعال انٹرفیس استعمال کرنے کے لئے دوبارہ کوڈ کرنا ہے.

قابل تجدید آٹو درآمد

DLL سے DATAIMports کے لئے "_Symbol" کے "__imp__symbol" sophisticalted لنک کرنے کی کوشش مت کرو.

ممکنہ رن ٹائم - چھاسو - ریز

اگر آپ کے کوڈ میں قابل ذکر آٹو درآمد سیکشن میں بیان کردہ اظہارات شامل ہیں، تو یہ ہے کہ، غیر صفر آفسیٹ کے ساتھ DATAimports DLL سے، یہ سوئچ 'رن ٹائم چھدو نقل مکانی' کی ایک ویکٹر تخلیق کرے گا جس میں رن ٹائم ماحول کے ذریعے حوالہ جات کو ایڈجسٹ کرنے کے لئے استعمال کیا جا سکتا ہے. آپ کے کلائنٹ کوڈ میں اس طرح کے اعداد و شمار کے لئے.

- قابل اطلاق رن ٹائم - چھدو - ریز

غیر صفر آفسیٹ ڈی ڈی ایل سے ڈیٹا درآمد درآمد کیلئے چھدو نقل و حرکت نہ بنائیں. یہ ڈیفالٹ ہے.

قابل اضافی پیئ ڈیبگ

آٹو درآمد علامت thunking سے متعلق اضافی ڈیبگ کی معلومات دکھائیں.

- سنجیدگی کی سیدھ

سیکشن سیدھا سیٹ کرتا ہے. میموری میں حصے ہمیشہ پتے پر شروع کریں گے جو اس نمبر کے ایک سے زیادہ ہیں. 0x1000 کی غلطیاں

اسٹاک محفوظ کریں

اسٹاک محفوظ کریں ، وعدہ کریں

اس پروگرام کے لئے اسٹیک کے طور پر استعمال کرنے کے لئے ریزرو (اور اختیاری وعدہ) کو میموری کی رقم کی وضاحت کریں. ڈیفالٹ ڈیفالٹ 2Mb ہے، 4K انجام دیا ہے.

- جس کا نظام

--بیسب کا نظام جس میں : بڑا

--بیسب کا نظام جس میں : بڑا . معمولی

سب سیسٹم کی وضاحت کرتا ہے جس کے تحت آپ کے پروگرام پر عملدرآمد ہو گا. جس کے لئے قانونی اقدار "آبادی"، "ونڈوز"، "کنسول"، اور "پوزا" ہیں. آپ اختیاری ورژن بھی اختیار کر سکتے ہیں.

اہم: انسان کے کمانڈر ( ٪ انسان ) کا استعمال کریں کہ کس طرح کمانڈ آپ کے مخصوص کمپیوٹر پر استعمال کیا جاتا ہے.