.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "LD 1" .TH LD 1 2025-11-10 binutils-2.45.1 "GNU Development Tools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" ld \- پیونددهندهٔ گنو .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" ld [\fBoptions\fR] \fIobjfile\fR ... .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" \&\fBld\fR چندین فایل شیء و آرشیو را ترکیب کرده، داده‌های آن‌ها را بازنشانی (relocate) می‌کند و ارجاعات نمادها را متصل می‌سازد. معمولاً آخرین مرحله در کامپایل یک برنامه، اجرای \fBld\fR است. .PP \&\fBld\fR فایل‌های زبان دستورات پیونددهنده (Linker Command Language) را که در یک ابرمجموعه از نحو Link Editor Command Language متعلق به AT&T نوشته شده‌اند می‌پذیرد تا کنترلی صریح و کامل بر فرآیند پیونددهی فراهم کند. .PP این صفحهٔ راهنما زبان دستورات را شرح نمی‌دهد؛ برای جزئیات کامل در مورد زبان دستورات و سایر جنبه‌های پیونددهندهٔ GNU، مدخل \&\fBld\fR را در \f(CW\*(C`info\*(C'\fR ببینید. .PP این نسخه از \fBld\fR از کتابخانه‌های چندمنظورهٔ BFD برای کار روی فایل‌های شیء استفاده می‌کند. این ویژگی به \fBld\fR امکان می‌دهد فایل‌های شیء را در قالب‌های مختلفِ بسیاری بخواند، ترکیب کند و بنویسد\-\-\-برای مثال، COFF یا \&\f(CW\*(C`a.out\*(C'\fR. قالب‌های مختلف را می‌توان با یکدیگر پیوند داد تا هر نوع فایل شیء موجودی را تولید کرد. .PP گذشته از انعطاف‌پذیری، پیونددهندهٔ گنو در ارائهٔ اطلاعات خطایابی و تشخیصی بسیار کارآمدتر از سایر پیونددهنده‌ها است. بسیاری از پیونددهنده‌ها بلافاصله پس از مواجهه با یک خطا اجرا را متوقف می‌کنند؛ اما \fBld\fR تا جای ممکن به اجرا ادامه می‌دهد و به شما امکان می‌دهد خطاهای دیگر را نیز شناسایی کنید (یا در برخی موارد، با وجود خطا فایل خروجی را تولید کنید). .PP پیونددهندهٔ گنو \fBld\fR برای پوشش طیف گسترده‌ای از شرایط و داشتن بیشترین سازگاری ممکن با سایر پیونددهنده‌ها طراحی شده است. در نتیجه، شما گزینه‌های متعددی برای کنترل رفتار آن در اختیار دارید..SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" پیونددهنده از شمار فراوانی گزینه خط فرمان پشتیبانی می‌کند، اما در عمل تنها تعداد اندکی از آن‌ها در هر زمینهٔ خاصی به کار می‌روند. برای نمونه، یک کاربرد متداول \fBld\fR پیوند دادن فایل‌های شیء استاندارد یونیکس در یک سیستم یونیکس استاندارد و پشتیبانی‌شده است. در چنین سیستمی، برای پیوند دادن فایل \f(CW\*(C`hello.o\*(C'\fR: .PP .Vb 1 \& ld \-o /lib/crt0.o hello.o \-lc .Ve .PP این به \fBld\fR می‌گوید که فایلی به نام \fIoutput\fR را در نتیجهٔ پیوند دادن فایل \f(CW\*(C`/lib/crt0.o\*(C'\fR با \f(CW\*(C`hello.o\*(C'\fR و کتابخانهٔ \f(CW\*(C`libc.a\*(C'\fR که از دایرکتوری‌های استاندارد جستجو برداشته می‌شود، تولید کند. (توضیحات مربوط به گزینهٔ \fB\-l\fR در زیر را ببینید.) .PP برخی از گزینه‌های خط فرمان برای \fBld\fR می‌توانند در هر نقطه‌ای از خط فرمان مشخص شوند. با این حال، گزینه‌هایی که به فایل‌ها اشاره دارند، مانند \fB\-l\fR یا \fB\-T\fR، باعث می‌شوند که فایل در همان نقطه‌ای که گزینه در خط فرمان ظاهر می‌شود، نسبت به فایل‌های شیء و دیگر گزینه‌های فایل خوانده شود. تکرار گزینه‌های غیرفایلی با یک آرگومان دیگر یا هیچ اثر بیشتری نخواهد داشت، یا وقوع‌های قبلی (آن‌هایی که در خط فرمان در سمت چپ‌تر قرار دارند) آن گزینه را باطل و جایگزین می‌کند. گزینه‌هایی که می‌توان آن‌ها را بیش از یک‌بار به‌طور معناداری مشخص کرد، در توضیحات زیر ذکر شده‌اند. .PP آرگومان‌های غیرگزینه‌ای، فایل‌های شیء یا آرشیوهایی هستند که باید با یکدیگر پیوند داده شوند. آن‌ها می‌توانند پس از گزینه‌های خط فرمان بیایند، قبل از آن‌ها قرار گیرند، یا با آن‌ها ترکیب شوند، به جز اینکه یک آرگومان فایل شیء نباید بین یک گزینه و آرگومان آن قرار گیرد. .PP معمولاً پیونددهنده با حداقل یک فایل شیء فراخوانی می‌شود، اما شما می‌توانید شکل‌های دیگری از فایل‌های ورودی باینری را با استفاده از \fB\-l\fR، \fB\-R\fR، و زبان دستورات اسکریپت مشخص کنید. اگر \fIهیچ\fR فایل ورودی باینری مشخص نشده باشد، پیونددهنده هیچ خروجی تولید نمی‌کند و پیام \fBNo input files\fR را صادر می‌کند. .PP اگر پیونددهنده نتواند قالب یک فایل شیء را تشخیص دهد، فرض می‌کند که یک اسکریپت پیونددهنده است. اسکریپتی که به این روش مشخص شود، اسکریپت پیونددهندهٔ اصلی مورد استفاده برای پیوند (خواه اسکریپت پیش‌فرض پیونددهنده باشد و خواه اسکریپتی که با \fB\-T\fR مشخص شده) را گسترش داده و تقویت می‌کند. این ویژگی به پیونددهنده امکان می‌دهد تا با فایلی پیوند برقرار کند که به نظر یک شیء یا آرشیو می‌آید، اما در واقع صرفاً مقادیر برخی نمادها را تعریف می‌کند، یا از \&\f(CW\*(C`INPUT\*(C'\fR یا \f(CW\*(C`GROUP\*(C'\fR برای بارگذاری سایر اشیاء استفاده می‌کند. مشخص کردن یک اسکریپت به این روش صرفاً اسکریپت پیونددهندهٔ اصلی را گسترش می‌دهد، به طوری که دستورهای اضافی بعد از اسکریپت اصلی قرار می‌گیرند؛ برای جایگزینی کامل اسکریپت پیش‌فرض پیونددهنده از گزینهٔ \fB\-T\fR استفاده کنید، اما به تأثیر دستور \f(CW\*(C`INSERT\*(C'\fR توجه داشته باشید. .PP برای گزینه‌هایی که نام آن‌ها تک‌حرفی است، آرگومان‌های گزینه باید یا بدون فاصله بعد از حرف گزینه بیایند، یا به عنوان آرگومان‌های جداگانه بلافاصله پس از گزینه‌ای که به آن‌ها نیاز دارد ارائه شوند. .PP برای گزینه‌هایی که نام آن‌ها چندحرفی است، می‌تواند یک خط تیره یا دو خط تیره قبل از نام گزینه قرار گیرد؛ برای نمونه، \fB\-trace\-symbol\fR و \&\fB\-\-trace\-symbol\fR معادل یکدیگرند. توجه کنید\-\-\-یک استثنا برای این قاعده وجود دارد. گزینه‌های چندحرفی که با حرف کوچک \*(Aqo\*(Aq آغاز می‌شوند تنها می‌توانند با دو خط تیره شروع شوند. این کار برای کاهش سردرگمی با گزینهٔ \fB\-o\fR است. بنابراین برای نمونه \fB\-omagic\fR نام فایل خروجی را بر روی \fBmagic\fR تنظیم می‌کند در حالی که \fB\-\-omagic\fR پرچم NMAGIC را روی خروجی فعال می‌سازد. .PP آرگومان‌های گزینه‌های چندحرفی باید یا با علامت مساوی از نام گزینه جدا شوند، یا به صورت آرگومان‌های جداگانه بلافاصله پس از گزینه‌ای که به آن‌ها نیاز دارد ارائه شوند. برای نمونه، \&\fB\-\-trace\-symbol foo\fR و \fB\-\-trace\-symbol=foo\fR معادل هستند. مخفف‌های یکتا از نام‌های گزینه‌های چندحرفی پذیرفته می‌شوند. .PP توجه کنید\-\-\-اگر پیونددهنده به صورت غیرمستقیم و از طریق راه‌انداز کامپایلر (مانند \fBgcc\fR) فراخوانی می‌شود، تمام گزینه‌های خط فرمان پیونددهنده باید دارای پیشوند \fB\-Wl,\fR باشند (یا هر آنچه که برای راه‌انداز کامپایلر مربوطه مناسب است) مانند این: .PP .Vb 1 \& gcc \-Wl,\-\-start\-group foo.o bar.o \-Wl,\-\-end\-group .Ve .PP این نکته مهم است، زیرا در غیر این صورت برنامهٔ راه‌انداز کامپایلر ممکن است بدون هیچ هشداری گزینه‌های پیونددهنده را نادیده بگیرد که به یک پیوند ناموفق منجر می‌شود. همچنین هنگام انتقال گزینه‌هایی که نیازمند مقدار هستند از طریق راه‌انداز ممکن است ابهام پیش بیاید، زیرا استفاده از فاصله بین گزینه و آرگومان نقش جداکننده را ایفا می‌کند و باعث می‌شود که راه‌انداز تنها گزینه را به پیونددهنده و آرگومان را به کامپایلر منتقل کند. در این حالت، ساده‌ترین کار استفاده از حالت چسبیده برای هر دو نوع گزینهٔ تک‌حرفی و چندحرفی است، مانند: .PP .Vb 1 \& gcc foo.o bar.o \-Wl,\-eENTRY \-Wl,\-Map=a.map .Ve .PP در اینجا جدول سوئیچ‌های عمومی خط فرمان که توسط پیونددهندهٔ GNU پذیرفته می‌شوند آورده شده است: .IP \fB@\fR\fIfile\fR 4 .IX Item "@file" خواندن گزینه‌های خط فرمان از \fIfile\fR. گزینه‌های خوانده‌شده در محل گزینهٔ اصلی @\fIfile\fR جایگزین می‌شوند. اگر \fIfile\fR وجود نداشته باشد یا خوانده نشود، با گزینه به صورت تحت‌اللفظی رفتار خواهد شد و حذف نمی‌شود. .Sp گزینه‌ها در \fIfile\fR با نویسهٔ فاصله جدا می‌شوند. یک نویسهٔ فاصله را می‌توان با قرار دادن کل گزینه در نشانه‌های نقل‌قول تکی یا دوتایی درون یک گزینه گنجاند. هر نویسه‌ای (از جمله بک‌اسلش) را می‌توان با قراردادن یک پیشوند بک‌اسلش قبل از آن نویسه وارد کرد. خود \fIfile\fR ممکن است حاوی گزینه‌های @\fIfile\fR دیگری باشد؛ هر یک از این گزینه‌ها به صورت بازگشتی پردازش خواهند شد. .IP "\fB\-a\fR \fIkeyword\fR" 4 .IX Item "-a keyword" این گزینه برای سازگاری با HP/UX پشتیبانی می‌شود. آرگومان \fIkeyword\fR باید یکی از رشته‌های \fBarchive\fR، \fBshared\fR، یا \&\fBdefault\fR باشد. \fB\-aarchive\fR از نظر عملکرد معادل \&\fB\-Bstatic\fR است و دو کلیدواژهٔ دیگر از لحاظ عملکرد معادل \&\fB\-Bdynamic\fR هستند. از این گزینه می‌توان به هر تعداد دفعات استفاده کرد. .IP "\fB\-\-audit\fR \fIAUDITLIB\fR" 4 .IX Item "--audit AUDITLIB" افزودن \fIAUDITLIB\fR به مدخل \f(CW\*(C`DT_AUDIT\*(C'\fR در بخش پویا. وجود \fIAUDITLIB\fR بررسی نمی‌شود و از DT_SONAME مشخص‌شده در کتابخانه نیز استفاده نخواهد کرد. در صورت تعیین چندباره، \f(CW\*(C`DT_AUDIT\*(C'\fR حاوی فهرستی جداشده با دونقطه از رابط‌های حسابرسی جهت استفاده خواهد بود. اگر پیونددهنده هنگام جستجوی کتابخانه‌های مشترک، شیئی با مدخل حسابرسی پیدا کند، یک مدخل متناظر \f(CW\*(C`DT_DEPAUDIT\*(C'\fR را در فایل خروجی اضافه می‌کند. این گزینه تنها روی سکوهای ELF که از رابط rtld\-audit پشتیبانی می‌کنند معنا دارد. .IP "\fB\-b\fR \fIinput\-format\fR" 4 .IX Item "-b input-format" .PD 0 .IP \fB\-\-format=\fR\fIinput\-format\fR 4 .IX Item "--format=input-format" .PD ابزار \fBld\fR ممکن است برای پشتیبانی از بیش از یک نوع فایل شیء پیکربندی شده باشد. اگر \fBld\fR شما به این شکل پیکربندی شده است، می‌توانید از گزینهٔ \fB\-b\fR برای تعیین قالب باینری فایل‌های شیء ورودی که پس از این گزینه در خط فرمان می‌آیند استفاده کنید. حتی زمانی که \fBld\fR برای پشتیبانی از قالب‌های شیء جایگزین پیکربندی شده است، معمولاً نیازی به مشخص کردن آن ندارید، زیرا \fBld\fR باید طوری پیکربندی شده باشد که معمول‌ترین قالب در هر ماشین را به عنوان قالب ورودی پیش‌فرض در نظر بگیرد. \&\fIinput\-format\fR یک رشتهٔ متنی است، نام قالبی خاص که توسط کتابخانه‌های BFD پشتیبانی می‌شود. (می‌توانید قالب‌های باینری موجود را با \fBobjdump \-i\fR فهرست کنید.) .Sp اگر فایل‌هایی با یک قالب باینری نامعمول را پیوند می‌دهید، ممکن است بخواهید از این گزینه استفاده کنید. همچنین می‌توانید از \fB\-b\fR برای تغییر صریح قالب‌ها (هنگام پیوند دادن فایل‌های شیء با قالب‌های گوناگون) با قرار دادن \&\fB\-b\fR \fIinput\-format\fR پیش از هر گروه از فایل‌های شیء در یک قالب خاص بهره ببرید. .Sp قالب پیش‌فرض از متغیر محیطی \&\f(CW\*(C`GNUTARGET\*(C'\fR گرفته می‌شود. .Sp همچنین می‌توانید قالب ورودی را از طریق یک اسکریپت با استفاده از دستور \&\f(CW\*(C`TARGET\*(C'\fR تعریف کنید؛ .IP "\fB\-c\fR \fIMRI\-commandfile\fR" 4 .IX Item "-c MRI-commandfile" .PD 0 .IP \fB\-\-mri\-script=\fR\fIMRI\-commandfile\fR 4 .IX Item "--mri-script=MRI-commandfile" .PD به منظور سازگاری با پیونددهنده‌های تولیدشده توسط MRI، ابزار \fBld\fR فایل‌های اسکریپت نوشته‌شده به یک زبان دستور جایگزین و محدود را می‌پذیرد که در بخش «MRI Compatible Script Files» در مستندات GNU ld شرح داده شده است. فایل‌های اسکریپت MRI را با گزینهٔ \fB\-c\fR معرفی کنید؛ از گزینهٔ \&\fB\-T\fR برای اجرای اسکریپت‌های پیونددهنده‌ای که به زبان اسکریپت‌نویسی همه‌منظورهٔ \&\fBld\fR نوشته شده‌اند استفاده نمایید. اگر \fIMRI\-cmdfile\fR وجود نداشته باشد، \&\fBld\fR آن را در دایرکتوری‌های مشخص‌شده توسط گزینه‌های \fB\-L\fR جستجو می‌کند. .IP \fB\-d\fR 4 .IX Item "-d" .PD 0 .IP \fB\-dc\fR 4 .IX Item "-dc" .IP \fB\-dp\fR 4 .IX Item "-dp" .PD این سه گزینه با یکدیگر معادل هستند؛ شکل‌های چندگانه برای سازگاری با سایر پیونددهنده‌ها پشتیبانی می‌شوند. آن‌ها به نمادهای عمومی (common symbols) فضا اختصاص می‌دهند، حتی اگر یک فایل خروجی بازنشانی‌پذیر (با \fB\-r\fR) مشخص شده باشد. دستور اسکریپت \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR نیز دارای همین اثر است. .IP "\fB\-\-depaudit\fR \fIAUDITLIB\fR" 4 .IX Item "--depaudit AUDITLIB".PD 0 .IP "\fB\-P\fR \fIAUDITLIB\fR" 4 .IX Item "-P AUDITLIB" .PD مقدار \fIAUDITLIB\fR را به مدخل \f(CW\*(C`DT_DEPAUDIT\*(C'\fR در بخش پویا اضافه می‌کند. وجود \fIAUDITLIB\fR بررسی نمی‌شود و همچنین از DT_SONAME مشخص‌شده در کتابخانه استفاده نخواهد کرد. اگر چندین بار مشخص شود، \f(CW\*(C`DT_DEPAUDIT\*(C'\fR حاوی فهرستی از رابط‌های حسابرسی (audit) خواهد بود که با دونقطه (:) از هم جدا شده‌اند. این گزینه تنها در پلتفرم‌های ELF که از رابط rtld\-audit پشتیبانی می‌کنند معنی دارد. گزینهٔ \-P برای سازگاری با Solaris ارائه شده است. .IP \fB\-\-enable\-linker\-version\fR 4 .IX Item "--enable-linker-version" دستورالعمل اسکریپت پیوندساز \f(CW\*(C`LINKER_VERSION\*(C'\fR را فعال می‌کند که در \fBOutput Section Data\fR شرح داده شده است. اگر این دستورالعمل در یک اسکریپت پیوندساز استفاده شود و این گزینه فعال شده باشد، رشته‌ای حاوی نسخهٔ پیوندساز در نقطهٔ فعلی درج خواهد شد. .Sp توجه \- محل قرارگیری این گزینه در خط فرمان پیوندساز دارای اهمیت است. این گزینه تنها بر اسکریپت‌های پیوندسازی تأثیر می‌گذارد که پس از آن در خط فرمان بیایند، یا اسکریپت‌هایی که درون پیوندساز تعبیه شده‌اند. .IP \fB\-\-disable\-linker\-version\fR 4 .IX Item "--disable-linker-version" دستورالعمل اسکریپت پیوندساز \f(CW\*(C`LINKER_VERSION\*(C'\fR را غیرفعال می‌کند، به‌طوری که رشتهٔ نسخه را درج نمی‌کند. این حالت پیش‌فرض است. .IP \fB\-\-enable\-non\-contiguous\-regions\fR 4 .IX Item "--enable-non-contiguous-regions" این گزینه در صورتی که یک بخش ورودی در یک بخش خروجی منطبق جا نشود، از ایجاد خطا جلوگیری می‌کند. پیوندساز تلاش می‌کند بخش ورودی را به بخش‌های خروجی منطبق بعدی تخصیص دهد و تنها در صورتی خطا ایجاد می‌کند که هیچ بخش خروجی به اندازهٔ کافی بزرگ نباشد. این در مواردی مفید است که چندین ناحیهٔ حافظهٔ غیرپیوسته در دسترس باشند و بخش ورودی نیازمند ناحیهٔ خاصی نباشد. ترتیبی که بخش‌های ورودی ارزیابی می‌شوند تغییر نمی‌کند، برای مثال: .Sp .Vb 10 \& MEMORY { \& MEM1 (rwx) : ORIGIN = 0x1000, LENGTH = 0x14 \& MEM2 (rwx) : ORIGIN = 0x1000, LENGTH = 0x40 \& MEM3 (rwx) : ORIGIN = 0x2000, LENGTH = 0x40 \& } \& SECTIONS { \& mem1 : { *(.data.*); } > MEM1 \& mem2 : { *(.data.*); } > MEM2 \& mem3 : { *(.data.*); } > MEM3 \& } \& \& with input sections: \& .data.1: size 8 \& .data.2: size 0x10 \& .data.3: size 4 \& \& results in .data.1 affected to mem1, and .data.2 and .data.3 \& affected to mem2, even though .data.3 would fit in mem3. .Ve .Sp این گزینه با دستورهای INSERT ناسازگار است، زیرا نحوهٔ نگاشت بخش‌های ورودی به بخش‌های خروجی را تغییر می‌دهد. .IP \fB\-\-enable\-non\-contiguous\-regions\-warnings\fR 4 .IX Item "--enable-non-contiguous-regions-warnings" این گزینه هشدارهایی را فعال می‌کند هنگامی که \&\f(CW\*(C`\-\-enable\-non\-contiguous\-regions\*(C'\fR تطابق‌های احتمالاً غیرمنتظره‌ای را در نگاشت بخش‌ها مجاز می‌کند، که ممکن است به جای شکست به دلیل جا نشدن در هیچ ناحیهٔ خروجی، به دور انداختن بی‌صدای یک بخش منجر شود. .IP "\fB\-e\fR \fIentry\fR" 4 .IX Item "-e entry" .PD 0 .IP \fB\-\-entry=\fR\fIentry\fR 4 .IX Item "--entry=entry" .PD از \fIentry\fR به‌عنوان نماد صریح برای شروع اجرای برنامه، به جای نقطهٔ ورود پیش‌فرض استفاده می‌کند. اگر نمادی با نام \fIentry\fR وجود نداشته باشد، پیوندساز تلاش می‌کند \fIentry\fR را به‌عنوان یک عدد تجزیه کند و از آن به‌عنوان آدرس ورود استفاده نماید (این عدد در مبنای ۱۰ تفسیر می‌شود؛ می‌توانید از \fB0x\fR ابتدایی برای مبنای ۱۶ یا \fB0\fR ابتدایی برای مبنای ۸ استفاده کنید). برای i386 PE، نماد \fIentry\fR همچنین می‌تواند نام اصلی تابع باشد (بدون زیرخط ابتدایی و/یا \fR\f(CB@number\fR\fB\fR انتهای stdcall، در صورت کاربرد داشتن). .IP "\fB\-\-exclude\-libs\fR \fIlib\fR\fB,\fR\fIlib\fR\fB,...\fR" 4 .IX Item "--exclude-libs lib,lib,..." فهرستی از کتابخانه‌های آرشیو را مشخص می‌کند که نمادهای آن‌ها نباید به‌طور خودکار صادر (export) شوند. نام‌های کتابخانه‌ها می‌توانند با ویرگول یا دونقطه جدا شوند. مشخص کردن \&\f(CW\*(C`\-\-exclude\-libs ALL\*(C'\fR نمادهای موجود در تمام کتابخانه‌های آرشیو را از صدور خودکار مستثنی می‌کند. این گزینه فقط برای پورت‌های با هدف i386 PE و با هدف ELF در پیوندساز در دسترس است. برای i386 PE، نمادهایی که به‌طور صریح در یک فایل ‎.def فهرست شده‌اند، صرف‌نظر از این گزینه همچنان صادر می‌شوند. برای پورت‌های با هدف ELF، با نمادهای متأثر از این گزینه به‌عنوان پنهان (hidden) رفتار خواهد شد. .IP "\fB\-\-exclude\-modules\-for\-implib\fR \fImodule\fR\fB,\fR\fImodule\fR\fB,...\fR" 4 .IX Item "--exclude-modules-for-implib module,module,..." فهرستی از فایل‌های شیء یا اعضای آرشیو را مشخص می‌کند که نمادهای آن‌ها نباید به‌طور خودکار صادر شوند، اما باید به‌طور کامل در کتابخانهٔ وارداتی (import library) در حال تولید حین پیوند کپی شوند. نام پودمان‌ها ممکن است با ویرگول یا دونقطه از هم جدا شوند و باید دقیقاً با نام فایل‌هایی که \fBld\fR برای باز کردن فایل‌ها استفاده کرده منطبق باشند؛ برای اعضای آرشیو، این صرفاً نام عضو است، اما برای فایل‌های شیء، نام فهرست‌شده باید شامل هر مسیری باشد که برای تعیین فایل ورودی در خط فرمان پیوندساز استفاده شده و دقیقاً با آن مطابقت داشته باشد. این گزینه فقط برای پورت پیوندساز با هدف i386 PE در دسترس است. نمادهایی که به‌طور صریح در یک فایل ‎.def فهرست شده‌اند، صرف‌نظر از این گزینه همچنان صادر می‌شوند. .IP \fB\-E\fR 4 .IX Item "-E" .PD 0 .IP \fB\-\-export\-dynamic\fR 4 .IX Item "--export-dynamic" .IP \fB\-\-no\-export\-dynamic\fR 4 .IX Item "--no-export-dynamic" .PD هنگام ایجاد یک فایل اجرایی با پیوند پویا، استفاده از گزینهٔ \fB\-E\fR یا گزینهٔ \fB\-\-export\-dynamic\fR باعث می‌شود پیوندساز تمام نمادها را به جدول نمادهای پویا اضافه کند. جدول نمادهای پویا مجموعه‌ای از نمادها است که در زمان اجرا از طریق شیءهای پویا قابل مشاهده هستند. .Sp اگر از هیچ‌کدام از این گزینه‌ها استفاده نکنید (یا از گزینهٔ \&\fB\-\-no\-export\-dynamic\fR برای بازگرداندن رفتار پیش‌فرض استفاده کنید)، جدول نمادهای پویا معمولاً تنها شامل آن دسته از نمادهایی خواهد بود که توسط شیء پویایی که در پیوند ذکر شده، ارجاع داده شده باشند. .Sp اگر از \f(CW\*(C`dlopen\*(C'\fR برای بارگذاری یک شیء پویا استفاده می‌کنید که باید به نمادهای تعریف‌شده توسط برنامه (و نه شیء پویای دیگر) ارجاع دهد، احتمالاً در هنگام پیوند دادن خود برنامه باید از این گزینه استفاده کنید. .Sp همچنین می‌توانید در صورت پشتیبانی قالب خروجی، از فهرست پویا (dynamic list) برای کنترل اینکه چه نمادهایی باید به جدول نمادهای پویا اضافه شوند استفاده کنید. توضیحات مربوط به \fB\-\-dynamic\-list\fR را ببینید. .Sp توجه داشته باشید که این گزینه مختص پورت‌های با هدف ELF است. مقصدهای PE از قابلیتی مشابه برای صدور تمام نمادها از یک DLL یا EXE پشتیبانی می‌کنند؛ توضیحات مربوط به \fB\-\-export\-all\-symbols\fR را در زیر ببینید. .IP \fB\-\-export\-dynamic\-symbol=\fR\fIglob\fR 4 .IX Item "--export-dynamic-symbol=glob" هنگام ایجاد یک فایل اجرایی با پیوند پویا، نمادهای منطبق با \&\fIglob\fR به جدول نمادهای پویا اضافه خواهند شد. هنگام ایجاد یک کتابخانهٔ مشترک، ارجاعات به نمادهای منطبق با \fIglob\fR به تعاریف درون کتابخانهٔ مشترک مقید نخواهند شد. این گزینه هنگام ایجاد یک کتابخانهٔ مشترک در صورتی که \fB\-Bsymbolic\fR یا \&\fB\-\-dynamic\-list\fR مشخص نشده باشند، هیچ عملی انجام نمی‌دهد (no\-op). این گزینه تنها در پلتفرم‌های ELF که از کتابخانه‌های مشترک پشتیبانی می‌کنند معنی دارد. .IP \fB\-\-export\-dynamic\-symbol\-list=\fR\fIfile\fR 4 .IX Item "--export-dynamic-symbol-list=file" به ازای هر الگو در فایل، یک \fB\-\-export\-dynamic\-symbol\fR مشخص می‌کند. قالب فایل همانند گره نسخه (version node) بدون حوزه و نام گره است. برای اطلاعات بیشتر \fBVERSION\fR را ببینید. .IP \fB\-EB\fR 4 .IX Item "-EB" پیوند دادن شیءهای با ترتیب بایت بزرگ‌پایان (big\-endian). این گزینه بر قالب خروجی پیش‌فرض تأثیر می‌گذارد. .IP \fB\-EL\fR 4 .IX Item "-EL" پیوند دادن شیءهای با ترتیب بایت کوچک‌پایان (little\-endian). این گزینه بر قالب خروجی پیش‌فرض تأثیر می‌گذارد. .IP "\fB\-f\fR \fIname\fR" 4 .IX Item "-f name" .PD 0 .IP \fB\-\-auxiliary=\fR\fIname\fR 4 .IX Item "--auxiliary=name" .PD هنگام ایجاد یک شیء مشترک ELF، فیلد درونی DT_AUXILIARY را به نام مشخص‌شده تنظیم می‌کند. این کار به پیوندساز پویا می‌گوید که جدول نماد شیء مشترک باید به‌عنوان یک پالایهٔ کمکی (auxiliary filter) بر روی جدول نماد شیء مشترک \fIname\fR استفاده شود. .Sp اگر بعداً برنامه‌ای را در برابر این شیء پالایه پیوند دهید، هنگام اجرای برنامه، پیوندساز پویا فیلد DT_AUXILIARY را خواهد دید. اگر پیوندساز پویا نمادی را از شیء پالایه حل‌وفصل کند، ابتدا بررسی می‌کند که آیا تعریفی در شیء مشترک \&\fIname\fR وجود دارد یا خیر. اگر وجود داشته باشد، به جای تعریف موجود در شیء پالایه استفاده خواهد شد. لزومی به وجود شیء مشترک \fIname\fR نیست. بدین ترتیب شیء مشترک \fIname\fR می‌تواند برای ارائه پیاده‌سازی جایگزینی از برخی توابع، شاید برای اشکال‌زدایی یا کارایی ویژهٔ ماشین، به کار رود. .Sp این گزینه می‌تواند بیش از یک بار مشخص شود. ورودی‌های DT_AUXILIARY به ترتیبی که در خط فرمان ظاهر می‌شوند ایجاد خواهند شد. .IP "\fB\-F\fR \fIname\fR" 4 .IX Item "-F name" .PD 0 .IP \fB\-\-filter=\fR\fIname\fR 4 .IX Item "--filter=name" .PD هنگام ایجاد یک شیء مشترک ELF، فیلد درونی DT_FILTER را به نام مشخص‌شده تنظیم می‌کند. این کار به پیوندساز پویا می‌گوید که جدول نماد شیء مشترکِ در حال ایجاد، باید به‌عنوان یک پالایه (filter) بر روی جدول نماد شیء مشترک \fIname\fR استفاده شود. .Sp اگر بعداً برنامه‌ای را در برابر این شیء پالایه پیوند دهید، هنگام اجرای برنامه، پیوندساز پویا فیلد DT_FILTER را خواهد دید. پیوندساز پویا نمادها را طبق معمول بر اساس جدول نماد شیء پالایه حل‌وفصل می‌کند، اما در عمل به تعاریف یافت‌شده در شیء مشترک \fIname\fR پیوند خواهد خورد. بدین ترتیب می‌توان از شیء پالایه برای انتخاب زیرمجموعه‌ای از نمادهای ارائه‌شده توسط شیء \&\fIname\fR استفاده کرد. .Sp برخی از پیوندسازهای قدیمی‌تر از گزینهٔ \fB\-F\fR در سراسر زنجیره ابزار کامپایل برای تعیین قالب فایل شیء برای هر دو فایل شیء ورودی و خروجی استفاده می‌کردند. پیوندساز GNU از سازوکارهای دیگری برای این منظور استفاده می‌کند: گزینه‌های \&\fB\-b\fR، \fB\-\-format\fR، \fB\-\-oformat\fR، دستور \&\f(CW\*(C`TARGET\*(C'\fR در اسکریپت‌های پیوندساز، و متغیر محیطی \f(CW\*(C`GNUTARGET\*(C'\fR. پیوندساز GNU در صورتی که مشغول ایجاد شیء مشترک ELF نباشد، گزینهٔ \fB\-F\fR را نادیده خواهد گرفت..IP \fB\-fini=\fR\fIname\fR 4 .IX Item "-fini=name" هنگام ایجاد یک فایل اجرایی یا شیء اشتراکی ELF، با تنظیم DT_FINI به نشانی این تابع، هنگام تخلیه شدن فایل اجرایی یا شیء اشتراکی، NAME را فراخوانی می‌کند. به‌طور پیش‌فرض، پیونددهنده از \f(CW\*(C`_fini\*(C'\fR به‌عنوان تابع مورد فراخوانی استفاده می‌کند. .IP \fB\-g\fR 4 .IX Item "-g" نادیده گرفته می‌شود. برای سازگاری با سایر ابزارها فراهم شده است. .IP "\fB\-G\fR \fIvalue\fR" 4 .IX Item "-G value" .PD 0 .IP \fB\-\-gpsize=\fR\fIvalue\fR 4 .IX Item "--gpsize=value" .PD بیشینه اندازه اشیائی را که قرار است با استفاده از ثبات GP بهینه‌سازی شوند روی \&\fIsize\fR تنظیم می‌کند. این مورد تنها برای قالب‌های فایل شیء نظیر MIPS ELF که از قرار دادن اشیاء بزرگ و کوچک در بخش‌های مجزا پشتیبانی می‌کنند معنادار است. برای سایر قالب‌های فایل شیء نادیده گرفته می‌شود. .IP "\fB\-h\fR \fIname\fR" 4 .IX Item "-h name" .PD 0 .IP \fB\-soname=\fR\fIname\fR 4 .IX Item "-soname=name" .PD هنگام ایجاد یک شیء اشتراکی ELF، فیلد درونی DT_SONAME را روی نام مشخص‌شده تنظیم می‌کند. هنگامی که یک فایل اجرایی با یک شیء اشتراکی دارای فیلد DT_SONAME پیوند داده می‌شود، در زمان اجرای فایل اجرایی، پیونددهنده پویا تلاش خواهد کرد به جای استفاده از نام فایل ارائه‌شده به پیونددهنده، شیء اشتراکی مشخص‌شده توسط فیلد DT_SONAME را بارگذاری کند. .IP \fB\-i\fR 4 .IX Item "-i" یک پیوند افزایشی انجام می‌دهد (همانند گزینه \fB\-r\fR). .IP \fB\-init=\fR\fIname\fR 4 .IX Item "-init=name" هنگام ایجاد یک فایل اجرایی یا شیء اشتراکی ELF، با تنظیم DT_INIT به نشانی تابع، هنگام بارگذاری فایل اجرایی یا شیء اشتراکی، NAME را فراخوانی می‌کند. به‌طور پیش‌فرض، پیونددهنده از \f(CW\*(C`_init\*(C'\fR به‌عنوان تابع مورد فراخوانی استفاده می‌کند. .IP "\fB\-l\fR \fInamespec\fR" 4 .IX Item "-l namespec" .PD 0 .IP \fB\-\-library=\fR\fInamespec\fR 4 .IX Item "--library=namespec" .PD فایل آرشیو یا فایل شیء مشخص‌شده با \fInamespec\fR را به فهرست فایل‌های پیوند اضافه می‌کند. از این گزینه می‌توان به هر تعداد بار استفاده کرد. اگر \fInamespec\fR به صورت \fI:filename\fR باشد، \fBld\fR مسیر کتابخانه را برای فایلی به نام \fIfilename\fR جستجو می‌کند، در غیر این صورت مسیر کتابخانه را برای فایلی با نام \fIlibnamespec.a\fR جستجو خواهد کرد. .Sp در سیستم‌هایی که از کتابخانه‌های اشتراکی پشتیبانی می‌کنند، ممکن است \fBld\fR برای فایل‌هایی به جز \fIlibnamespec.a\fR نیز جستجو کند. به‌ویژه در سیستم‌های ELF و SunOS، دستور \fBld\fR پیش از جستجوی کتابخانه‌ای به نام \&\fIlibnamespec.a\fR، دایرکتوری را برای کتابخانه‌ای با نام \fIlibnamespec.so\fR جستجو خواهد کرد. (طبق عرف، پسوند \f(CW\*(C`.so\*(C'\fR نشان‌دهنده یک کتابخانه اشتراکی است.) توجه داشته باشید که این رفتار در مورد \fI:filename\fR صدق نمی‌کند، که همواره فایلی با نام \&\fIfilename\fR را مشخص می‌سازد. .Sp پیونددهنده یک آرشیو را تنها یک بار، در همان مکانی که در خط فرمان مشخص شده است، جستجو می‌کند. اگر آرشیو نمادی را تعریف کند که در شیئی پیش از آرشیو در خط فرمان تعریف‌نشده باشد، پیونددهنده فایل(های) مربوطه را از آرشیو دربرمی‌گیرد. با این حال، یک نماد تعریف‌نشده در شیئی که بعداً در خط فرمان ظاهر می‌شود، باعث نخواهد شد پیونددهنده دوباره آرشیو را جستجو کند. .Sp برای روشی جهت وادار کردن پیونددهنده به جستجوی مکرر آرشیوها، گزینه \fB\-(\fR را ببینید. .Sp می‌توانید همان آرشیو را چندین بار در خط فرمان درج کنید. .Sp این شیوه جستجوی آرشیو برای پیونددهنده‌های Unix استاندارد است. با این حال، اگر از \fBld\fR روی AIX استفاده می‌کنید، توجه داشته باشید که با رفتار پیونددهنده AIX تفاوت دارد. .IP "\fB\-L\fR \fIsearchdir\fR" 4 .IX Item "-L searchdir" .PD 0 .IP \fB\-\-library\-path=\fR\fIsearchdir\fR 4 .IX Item "--library-path=searchdir" .PD مسیر \fIsearchdir\fR را به فهرست مسیرهایی اضافه می‌کند که \fBld\fR برای یافتن کتابخانه‌های آرشیو و اسکریپت‌های کنترلی \fBld\fR در آن‌ها جستجو می‌کند. می‌توانید از این گزینه به هر تعداد بار استفاده کنید. دایرکتوری‌ها به ترتیبی که در خط فرمان مشخص شده‌اند جستجو می‌شوند. دایرکتوری‌های مشخص‌شده در خط فرمان پیش از دایرکتوری‌های پیش‌فرض جستجو می‌شوند. تمامی گزینه‌های \&\fB\-L\fR بدون توجه به ترتیبی که گزینه‌ها ظاهر می‌شوند، بر تمامی گزینه‌های \fB\-l\fR اعمال می‌شوند. گزینه‌های \fB\-L\fR بر نحوه جستجوی \fBld\fR برای اسکریپت پیونددهنده تأثیری ندارند، مگر اینکه گزینه \fB\-T\fR مشخص شده باشد. .Sp اگر \fIsearchdir\fR با \f(CW\*(C`=\*(C'\fR یا \f(CW$SYSROOT\fR آغاز شود، این پیشوند با \fIsysroot prefix\fR جایگزین خواهد شد که توسط گزینه \&\fB\-\-sysroot\fR کنترل می‌شود، یا هنگام پیکربندی پیونددهنده تعیین شده است. .Sp مجموعه پیش‌فرض مسیرهای جستجوشده (بدون مشخص شدن با \&\fB\-L\fR) به حالت شبیه‌سازی مورد استفاده \fBld\fR و در برخی موارد به نحوه پیکربندی آن بستگی دارد. .Sp مسیرها را همچنین می‌توان در یک اسکریپت پیوند با دستور \&\f(CW\*(C`SEARCH_DIR\*(C'\fR مشخص کرد. دایرکتوری‌هایی که از این طریق مشخص می‌شوند، در همان نقطه‌ای که اسکریپت پیونددهنده در خط فرمان ظاهر می‌شود جستجو می‌شوند. .IP "\fB\-m\fR \fIemulation\fR" 4 .IX Item "-m emulation" پیونددهنده \fIemulation\fR را شبیه‌سازی می‌کند. می‌توانید شبیه‌سازی‌های موجود را با گزینه‌های \fB\-\-verbose\fR یا \fB\-V\fR فهرست کنید. .Sp اگر از گزینه \fB\-m\fR استفاده نشود، در صورت تعریف بودن متغیر محیطی \&\f(CW\*(C`LDEMULATION\*(C'\fR، شبیه‌سازی از آن گرفته می‌شود. .Sp در غیر این صورت، شبیه‌سازی پیش‌فرض به نحوه پیکربندی پیونددهنده بستگی دارد. .IP \fB\-\-remap\-inputs=\fR\f(BIpattern\fR\fB=\fR\f(BIfilename\fR 4 .IX Item "--remap-inputs=pattern=filename" .PD 0 .IP \fB\-\-remap\-inputs\-file=\fR\f(BIfile\fR 4 .IX Item "--remap-inputs-file=file" .PD این گزینه‌ها امکان تغییر دادن نام فایل‌های ورودی را پیش از تلاش پیونددهنده برای باز کردن آن‌ها فراهم می‌کنند. گزینه \&\fB\-\-remap\-inputs=foo.o=bar.o\fR باعث می‌شود هر تلاشی برای بارگذاری فایلی با نام \fIfoo.o\fR در عوض برای بارگذاری فایلی با نام \&\fIbar.o\fR تلاش کند. الگوهای جانشین (wildcard) در نام فایل نخست مجاز هستند، بنابراین \fB\-\-remap\-inputs=foo*.o=bar.o\fR هر فایل ورودی منطبق بر \fIfoo*.o\fR را به \fIbar.o\fR تغییر نام می‌دهد. .Sp شکل دیگری از این گزینه با \&\fB\-\-remap\-inputs\-file=filename\fR اجازه می‌دهد نگاشت‌های مجدد از یک فایل خوانده شوند. هر خط در فایل می‌تواند حاوی یک نگاشت مجدد منفرد باشد. خطوط خالی نادیده گرفته می‌شوند. هر چیزی از یک نویسه هش (\fB#\fR) تا انتهای خط یک توضیح تلقی شده و نادیده گرفته می‌شود. الگوی نگاشت می‌تواند با فاصله خالی یا یک نویسه مساوی (\fB=\fR) از نام فایل جدا شود. .Sp این گزینه‌ها را می‌توان چندین بار مشخص کرد. محتوای آن‌ها انباشته می‌شود. نگاشت‌های مجدد به ترتیبی که در خط فرمان قرار گرفته‌اند پردازش می‌شوند، و اگر از یک فایل باشند، به ترتیبی که در فایل آمده‌اند پردازش خواهند شد. در صورت یافتن تطابق، هیچ بررسی دیگری برای آن نام فایل انجام نخواهد شد. .Sp اگر نام فایل جایگزین \fI/dev/null\fR یا صرفاً \fINUL\fR باشد، نگاشت مجدد در عمل موجب نادیده گرفته شدن فایل ورودی می‌شود. این می‌تواند روشی مناسب برای آزمودن حذف فایل‌های ورودی در یک محیط ساخت پیچیده باشد. .Sp توجه داشته باشید که این گزینه وابسته به موقعیت است و فقط بر نام فایل‌هایی تأثیر می‌گذارد که پس از آن در خط فرمان می‌آیند. بنابراین: .Sp .Vb 1 \& ld foo.o \-\-remap\-inputs=foo.o=bar.o .Ve .Sp هیچ تأثیری نخواهد داشت، در حالی که: .Sp .Vb 1 \& ld \-\-remap\-inputs=foo.o=bar.o foo.o .Ve .Sp نام فایل ورودی \fIfoo.o\fR را به \fIbar.o\fR تغییر خواهد داد. .Sp توجه \- این گزینه‌ها همچنین بر فایل‌هایی که توسط گزاره‌های \fIINPUT\fR در اسکریپت‌های پیونددهنده ارجاع داده شده‌اند تأثیر می‌گذارند. اما از آنجا که اسکریپت‌های پیونددهنده پس از خواندن کل خط فرمان پردازش می‌شوند، موقعیت گزینه‌های نگاشت مجدد در خط فرمان اهمیتی ندارد. .Sp اگر گزینه \fBverbose\fR فعال باشد، هر نگاشت منطبقی گزارش داده خواهد شد، هرچند باز هم گزینه \fBverbose\fR باید \fIقبل\fR از ظاهر شدن نام فایل‌های نگاشت‌مجددشده در خط فرمان فعال شده باشد. .Sp اگر گزینه‌های \fB\-Map\fR یا \fB\-\-print\-map\fR فعال باشند، فهرست نگاشت مجدد در خروجی نگاشت (map output) گنجانده خواهد شد. .IP \fB\-M\fR 4 .IX Item "-M" .PD 0 .IP \fB\-\-print\-map\fR 4 .IX Item "--print-map" .PD یک نگاشت پیوند (link map) را در خروجی استاندارد چاپ می‌کند. یک نگاشت پیوند، اطلاعاتی درباره پیوند شامل موارد زیر فراهم می‌کند: .RS 4.IP \(bu 4 مکان نگاشت فایل‌های شیء در حافظه. .IP \(bu 4 نحوه تخصیص نمادهای مشترک (common symbols). .IP \(bu 4 تمامی اعضای آرشیو که در پیوند گنجانده شده‌اند، همراه با ذکر نمادی که باعث وارد شدن آن عضو آرشیو شده است. .IP \(bu 4 مقادیر تخصیص‌یافته به نمادها. .Sp نکته \- نمادهایی که مقدار آن‌ها توسط عبارتی شامل ارجاع به مقدار قبلی همان نماد محاسبه می‌شود، ممکن است نتیجه درستی در نقشه‌ی پیوند (link map) نمایش ندهند. دلیل این امر آن است که پیونددهنده نتایج میانی را دور ریخته و تنها مقدار نهایی یک عبارت را نگه می‌دارد. در چنین شرایطی، پیونددهنده مقدار نهایی را درون قلاب‌ها (کروشه‌ها) نمایش می‌دهد. بنابراین برای مثال یک اسکریپت پیونددهنده شامل: .Sp .Vb 3 \& foo = 1 \& foo = foo * 4 \& foo = foo + 8 .Ve .Sp در صورت استفاده از گزینه \fB\-M\fR، خروجی زیر را در نقشه‌ی پیوند تولید خواهد کرد: .Sp .Vb 3 \& 0x00000001 foo = 0x1 \& [0x0000000c] foo = (foo * 0x4) \& [0x0000000c] foo = (foo + 0x8) .Ve .Sp برای اطلاعات بیشتر درباره عبارات در اسکریپت‌های پیونددهنده، \fBExpressions\fR را ببینید. .IP \(bu 4 نحوه ادغام ویژگی‌های GNU. .Sp هنگامی که پیونددهنده بخش‌های ورودی .note.gnu.property را در یک بخش خروجی \&.note.gnu.property ادغام می‌کند، برخی از ویژگی‌ها حذف یا به‌روزرسانی می‌شوند. این اقدامات در نقشه‌ی پیوند گزارش می‌شوند. برای مثال: .Sp .Vb 1 \& Removed property 0xc0000002 to merge foo.o (0x1) and bar.o (not found) .Ve .Sp این نشان می‌دهد که ویژگی 0xc0000002 در هنگام ادغام ویژگی‌ها در \fIfoo.o\fR (که مقدار ویژگی 0xc0000002 آن 0x1 است) و \fIbar.o\fR (که فاقد ویژگی 0xc0000002 است) از خروجی حذف شده است. .Sp .Vb 1 \& Updated property 0xc0010001 (0x1) to merge foo.o (0x1) and bar.o (0x1) .Ve .Sp این نشان می‌دهد که مقدار ویژگی 0xc0010001 در هنگام ادغام ویژگی‌ها در \fIfoo.o\fR (که مقدار ویژگی 0xc0010001 آن 0x1 است) و \fIbar.o\fR (که مقدار ویژگی 0xc0010001 آن 0x1 است)، در خروجی به 0x1 به‌روزرسانی شده است. .IP \(bu 4 در برخی از مقصدهای ELF، فهرستی از اصلاحات (fixups) درج‌شده توسط \fB\-\-relax\fR .Sp .Vb 1 \& foo.o: Adjusting branch at 0x00000008 towards "far" in section .text .Ve .Sp این نشان می‌دهد که انشعاب در نشانی 0x00000008 در foo.o به سمت نماد "far" در بخش .text، با یک ترامپولین (trampoline) جایگزین شده است. .RE .RS 4 .RE .IP \fB\-\-print\-map\-discarded\fR 4 .IX Item "--print-map-discarded" .PD 0 .IP \fB\-\-no\-print\-map\-discarded\fR 4 .IX Item "--no-print-map-discarded" .PD چاپ (یا عدم چاپ) فهرست بخش‌های کنار گذاشته‌شده و جمع‌آوری‌شده به‌وسیله‌ی بازیافت حافظه در نقشه‌ی پیوند. به‌طور پیش‌فرض فعال است. .IP \fB\-\-print\-map\-locals\fR 4 .IX Item "--print-map-locals" .PD 0 .IP \fB\-\-no\-print\-map\-locals\fR 4 .IX Item "--no-print-map-locals" .PD چاپ (یا عدم چاپ) نمادهای محلی در نقشه‌ی پیوند. نمادهای محلی عبارت \fB(local)\fR را پیش از نام خود خواهند داشت و پس از تمام نمادهای سراسری در یک بخش معین فهرست می‌شوند. نمادهای محلی موقت (معمولاً آن‌هایی که با \fB.L\fR آغاز می‌شوند) در خروجی گنجانده نخواهند شد. به‌طور پیش‌فرض غیرفعال است. .IP \fB\-n\fR 4 .IX Item "-n" .PD 0 .IP \fB\-\-nmagic\fR 4 .IX Item "--nmagic" .PD غیرفعال کردن تراز صفحه‌ای (page alignment) بخش‌ها، و غیرفعال کردن پیوند با کتابخانه‌های اشتراکی. اگر قالب خروجی از اعداد جادویی سبک یونیکس پشتیبانی کند، خروجی را با عنوان \f(CW\*(C`NMAGIC\*(C'\fR نشانه‌گذاری می‌کند. .IP \fB\-N\fR 4 .IX Item "-N" .PD 0 .IP \fB\-\-omagic\fR 4 .IX Item "--omagic" .PD تنظیم بخش‌های text و data به صورت خواندنی و نوشتنی. همچنین، سگمنت data را از نظر صفحه‌ای تراز نمی‌کند و پیوند با کتابخانه‌های اشتراکی را غیرفعال می‌سازد. اگر قالب خروجی از اعداد جادویی سبک یونیکس پشتیبانی کند، خروجی را با عنوان \f(CW\*(C`OMAGIC\*(C'\fR نشانه‌گذاری می‌کند. نکته: با این‌که یک بخش text قابل‌نوشتن برای مقصدهای PE\-COFF مجاز است، اما با مشخصات قالبی که توسط مایکروسافت منتشر شده مطابقت ندارد. .IP \fB\-\-no\-omagic\fR 4 .IX Item "--no-omagic" این گزینه اکثر اثرات گزینه \fB\-N\fR را خنثی می‌کند. این گزینه بخش text را فقط‌خواندنی کرده و سگمنت data را مجبور به تراز صفحه‌ای می‌کند. نکته \- این گزینه پیوند با کتابخانه‌های اشتراکی را فعال نمی‌کند؛ برای این منظور از \fB\-Bdynamic\fR استفاده کنید. .IP "\fB\-o\fR \fIoutput\fR" 4 .IX Item "-o output" .PD 0 .IP \fB\-\-output=\fR\fIoutput\fR 4 .IX Item "--output=output" .PD استفاده از \fIoutput\fR به عنوان نام برنامه‌ی تولیدشده توسط \fBld\fR؛ در صورتی که این گزینه مشخص نشود، نام \fIa.out\fR به‌طور پیش‌فرض استفاده می‌شود. دستور اسکریپت \f(CW\*(C`OUTPUT\*(C'\fR نیز می‌تواند نام فایل خروجی را تعیین کند. .Sp نکته \- پیونددهنده پیش از آغاز نوشتن در فایل خروجی، آن را حذف خواهد کرد. این کار حتی در صورتی که مشخص شود فرآیند پیوند به دلیل خطاها کامل نمی‌شود نیز انجام خواهد شد. .Sp نکته \- پیونددهنده بررسی می‌کند تا نام فایل خروجی با هیچ‌یک از فایل‌های ورودی یکسان نباشد، اما این تمام ماجراست. به طور ویژه اگر فایل خروجی یک فایل منبع یا فایلی مهم را بازنویسی (overwrite) کند، هشداری نخواهد داد. بنابراین در سامانه‌های ساخت توصیه می‌شود که از گزینه \fB\-o\fR به عنوان آخرین گزینه در خط فرمان پیونددهنده استفاده شود. به عنوان مثال بررسی کنید: .Sp .Vb 2 \& ld \-o $(EXE) $(OBJS) \& ld $(OBJS) \-o $(EXE) .Ve .Sp اگر متغیر \fBEXE\fR به هر دلیلی تعریف نشده باشد، نگارش اول دستور پیونددهنده می‌تواند منجر به حذف یکی از فایل‌های شیء شود (نخستین فایل در فهرست \fBOBJS\fR)، در حالی که نگارش دوم دستور پیونددهنده یک پیام خطا تولید کرده و چیزی را حذف نخواهد کرد. .IP \fB\-\-dependency\-file=\fR\fIdepfile\fR 4 .IX Item "--dependency-file=depfile" نوشتن یک \fIفایل وابستگی\fR در \fIdepfile\fR. این فایل حاوی قاعده‌ای مناسب برای \f(CW\*(C`make\*(C'\fR است که فایل خروجی و تمامی فایل‌های ورودی خوانده‌شده برای تولید آن را توصیف می‌کند. این خروجی مشابه خروجی کامپایلر با \fB\-M \-MP\fR است. توجه داشته باشید که هیچ گزینه‌ای مانند \fB\-MM\fR در کامپایلر برای مستثنی کردن «فایل‌های سیستمی» وجود ندارد (چرا که این مفهوم برخلاف «سرفایل‌های سیستمی» در کامپایلر، در پیونددهنده تعریف دقیقی ندارد). از این رو، خروجی حاصل از \&\fB\-\-dependency\-file\fR همیشه مختص به وضعیت دقیق نصبی است که در آن تولید شده، و نباید بدون ویرایش دقیق در makefileهای توزیع‌شده کپی شود. .IP "\fB\-O\fR \fIlevel\fR" 4 .IX Item "-O level" اگر \fIlevel\fR یک مقدار عددی بزرگ‌تر از صفر باشد، \fBld\fR خروجی را بهینه‌سازی می‌کند. این کار ممکن است زمان به مراتب بیشتری ببرد و بنابراین احتمالاً تنها باید برای باینری نهایی فعال گردد. در حال حاضر این گزینه فقط بر تولید کتابخانه‌های اشتراکی ELF تأثیر می‌گذارد. نگارش‌های آینده‌ی پیونددهنده ممکن است استفاده بیشتری از این گزینه ببرند. همچنین در حال حاضر تفاوتی در رفتار پیونددهنده برای مقادیر ناصفر مختلف این گزینه وجود ندارد. این مورد نیز ممکن است در نگارش‌های آینده تغییر یابد. .IP "\fB\-plugin\fR \fIname\fR" 4 .IX Item "-plugin name" به‌کارگیری یک افزونه در فرآیند پیوند. پارامتر \fIname\fR نام فایل مطلق افزونه است. معمولاً این پارامتر هنگام استفاده از بهینه‌سازی زمان پیوند (LTO)، به‌طور خودکار توسط کامپایلر اضافه می‌شود، اما کاربران نیز می‌توانند در صورت تمایل افزونه‌های خود را اضافه کنند. .Sp توجه داشته باشید که مکان افزونه‌های ارائه‌شده از سمت کامپایلر با محلی که برنامه‌های \fBar\fR، \fBnm\fR و \&\fBranlib\fR برای یافتن افزونه‌هایشان جستجو می‌کنند متفاوت است. برای این‌که آن دستورها بتوانند از یک افزونه‌ی مبتنی بر کامپایلر استفاده کنند، ابتدا باید آن را در دایرکتوری \fI${libdir}/bfd\-plugins\fR کپی کرد. تمامی افزونه‌های پیونددهنده‌ی مبتنی بر gcc با نگارش‌های پیشین سازگار هستند (backward compatible)، بنابراین تنها کپی کردن جدیدترین نسخه کافی است..IP \fB\-\-push\-state\fR 4 .IX Item "--push-state" گزینهٔ \fB\-\-push\-state\fR امکان ذخیرهٔ وضعیت فعلی پرچم‌هایی را که نحوهٔ رفتار با فایل‌های ورودی را کنترل می‌کنند فراهم می‌سازد، به‌طوری که بتوان همهٔ آن‌ها را با گزینهٔ متناظر \fB\-\-pop\-state\fR بازیابی کرد. .Sp گزینه‌های پوشش‌داده‌شده عبارتند از: \fB\-Bdynamic\fR، \fB\-Bstatic\fR، \&\fB\-dn\fR، \fB\-dy\fR، \fB\-call_shared\fR، \fB\-non_shared\fR، \&\fB\-static\fR، \fB\-N\fR، \fB\-n\fR، \fB\-\-whole\-archive\fR، \&\fB\-\-no\-whole\-archive\fR، \fB\-r\fR، \fB\-Ur\fR، \&\fB\-\-copy\-dt\-needed\-entries\fR، \fB\-\-no\-copy\-dt\-needed\-entries\fR، \&\fB\-\-as\-needed\fR، \fB\-\-no\-as\-needed\fR و \fB\-a\fR. .Sp یکی از اهداف این گزینه، مشخصات \fIpkg\-config\fR است. هنگامی که همراه با گزینهٔ \fB\-\-libs\fR استفاده می‌شود، تمام کتابخانه‌های احتمالاً مورد نیاز فهرست می‌شوند و سپس ممکن است در تمام مواقع پیوند داده شوند. بهتر است چیزی شبیه به موارد زیر برگردانده شود: .Sp .Vb 1 \& \-Wl,\-\-push\-state,\-\-as\-needed \-libone \-libtwo \-Wl,\-\-pop\-state .Ve .IP \fB\-\-pop\-state\fR 4 .IX Item "--pop-state" اثر \-\-push\-state را خنثی کرده و مقادیر قبلی پرچم‌های کنترل‌کنندهٔ رفتار با فایل‌های ورودی را بازیابی می‌کند. .IP \fB\-q\fR 4 .IX Item "-q" .PD 0 .IP \fB\-\-emit\-relocs\fR 4 .IX Item "--emit-relocs" .PD بخش‌ها و محتویات بازنشانی (relocation) را در فایل‌های اجرایی کاملاً پیوندخورده باقی می‌گذارد. ابزارهای تحلیل و بهینه‌سازی پس از پیوند ممکن است برای اعمال تغییرات صحیح روی فایل‌های اجرایی به این اطلاعات نیاز داشته باشند. این کار منجر به بزرگ‌تر شدن اندازهٔ فایل‌های اجرایی می‌شود. .Sp این گزینه در حال حاضر تنها روی سکوهای ELF پشتیبانی می‌شود. .IP \fB\-\-force\-dynamic\fR 4 .IX Item "--force-dynamic" فایل خروجی را ملزم به داشتن بخش‌های پویا (dynamic sections) می‌کند. این گزینه مختص اهداف VxWorks است. .IP \fB\-r\fR 4 .IX Item "-r" .PD 0 .IP \fB\-\-relocatable\fR 4 .IX Item "--relocatable" .PD تولید خروجی بازنشانی‌پذیر (relocatable)\-\-\-یعنی ایجاد یک فایل خروجی که خود می‌تواند متقابلاً به‌عنوان ورودی برای \fBld\fR به کار رود. این عمل معمولاً \fIپیوند جزئی\fR (partial linking) نامیده می‌شود. به‌عنوان یک اثر جانبی، در محیط‌هایی که از شماره‌های جادویی استاندارد یونیکس پشتیبانی می‌کنند، این گزینه همچنین شمارهٔ جادویی فایل خروجی را روی \&\f(CW\*(C`OMAGIC\*(C'\fR تنظیم می‌کند. اگر این گزینه مشخص نشود، یک فایل مطلق (absolute) تولید می‌شود. هنگام پیوند برنامه‌های ++C، این گزینه ارجاعات به سازنده‌ها (constructors) را حل \fIنخواهد کرد\fR؛ برای انجام این کار، از \fB\-Ur\fR استفاده کنید. .Sp هنگامی که قالب یک فایل ورودی با فایل خروجی یکسان نباشد، پیوند جزئی تنها در صورتی پشتیبانی می‌شود که آن فایل ورودی حاوی هیچ بازنشانی‌ای نباشد. قالب‌های خروجی مختلف می‌توانند محدودیت‌های بیشتری داشته باشند؛ به عنوان مثال برخی قالب‌های مبتنی بر \&\f(CW\*(C`a.out\*(C'\fR اصلاً از پیوند جزئی با فایل‌های ورودی در قالب‌های دیگر پشتیبانی نمی‌کنند. .Sp هنگامی که خروجیِ بازنشانی‌پذیر حاوی هر دو نوع محتویاتِ نیازمند بهینه‌سازی زمان پیوند (LTO) و محتویات بی‌نیاز از LTO باشد، یک بخش .gnu_object_only برای نگهداری یک فایل شیء بازنشانی‌پذیر ایجاد خواهد شد، گویی \fB\-r\fR روی تمام ورودی‌های بازنشانی‌پذیری که نیازمند LTO نیستند اعمال شده است. هنگام پردازش یک ورودی بازنشانی‌پذیر دارای بخش .gnu_object_only، پیونددهنده بخش .gnu_object_only را به عنوان یک ورودی جداگانه استخراج خواهد کرد. .Sp توجه داشته باشید از آنجا که \fB\-r\fR برخی از بخش‌های فایل‌های ورودی مختلف را با یکدیگر گروه‌بندی می‌کند، ممکن است تأثیر منفی بر اندازهٔ کد و محلی‌بودن (locality) آن در فایل اجرایی نهایی یا کتابخانهٔ اشتراکی بگذارد. .Sp این گزینه همان کارکرد \fB\-i\fR را دارد. .IP "\fB\-R\fR \fIfilename\fR" 4 .IX Item "-R filename" .PD 0 .IP \fB\-\-just\-symbols=\fR\fIfilename\fR 4 .IX Item "--just-symbols=filename" .PD نام‌های نمادها و آدرس‌های آن‌ها را از \fIfilename\fR می‌خواند، اما آن را بازنشانی نکرده و در خروجی قرار نمی‌دهد. این به فایل خروجی شما اجازه می‌دهد تا به‌صورت نمادین به مکان‌های مطلقی از حافظه که در سایر برنامه‌ها تعریف شده‌اند ارجاع دهد. می‌توانید از این گزینه بیش از یک بار استفاده کنید. .Sp به‌منظور سازگاری با سایر پیونددهنده‌های ELF، اگر پس از گزینهٔ \fB\-R\fR به‌جای نام فایل، یک نام دایرکتوری بیاید، مانند گزینهٔ \fB\-rpath\fR با آن رفتار می‌شود. .IP \fB\-\-rosegment\fR 4 .IX Item "--rosegment" .PD 0 .IP \fB\-\-no\-rosegment\fR 4 .IX Item "--no-rosegment" .PD تلاش می‌کند تا اطمینان حاصل شود که تنها یک قطعهٔ (segment) فقط‌خواندنی و غیرکد ایجاد می‌شود. فقط زمانی کاربرد دارد که همراه با گزینهٔ \fB\-z separate\-code\fR استفاده شود. باینری‌های حاصل باید کوچک‌تر از حالتی باشند که \fB\-z separate\-code\fR به‌تنهایی استفاده می‌شود. بدون این گزینه، یا اگر \fB\-\-no\-rosegment\fR مشخص شده باشد، گزینهٔ \fB\-z separate\-code\fR دو قطعهٔ فقط‌خواندنی ایجاد خواهد کرد، یکی قبل از قطعهٔ کد و دیگری بعد از آن. .Sp نام این گزینه‌ها گمراه‌کننده است، اما به‌منظور سازگاری پیونددهنده با پیونددهنده‌های LLD و GOLD انتخاب شده‌اند. .Sp این گزینه‌ها فقط توسط اهداف ELF پشتیبانی می‌شوند. .IP \fB\-s\fR 4 .IX Item "-s" .PD 0 .IP \fB\-\-strip\-all\fR 4 .IX Item "--strip-all" .PD تمام اطلاعات نمادها را از فایل خروجی حذف می‌کند. .IP \fB\-S\fR 4 .IX Item "-S" .PD 0 .IP \fB\-\-strip\-debug\fR 4 .IX Item "--strip-debug" .PD اطلاعات نمادهای اشکال‌زدا (اما نه تمام نمادها) را از فایل خروجی حذف می‌کند. .IP \fB\-\-strip\-discarded\fR 4 .IX Item "--strip-discarded" .PD 0 .IP \fB\-\-no\-strip\-discarded\fR 4 .IX Item "--no-strip-discarded" .PD نمادهای سراسری تعریف‌شده در بخش‌های دور انداخته‌شده را حذف می‌کند (یا حذف نمی‌کند). به‌طور پیش‌فرض فعال است. .IP \fB\-plugin\-save\-temps\fR 4 .IX Item "-plugin-save-temps" فایل‌های واسط «موقت» پلاگین را به‌طور دائم ذخیره می‌کند. .IP \fB\-t\fR 4 .IX Item "-t" .PD 0 .IP \fB\-\-trace\fR 4 .IX Item "--trace" .PD نام فایل‌های ورودی را هم‌زمان با پردازش آن‌ها توسط \fBld\fR چاپ می‌کند. اگر \fB\-t\fR دو بار داده شود، اعضای درون آرشیوها نیز چاپ می‌شوند. خروجی \fB\-t\fR برای ایجاد فهرستی از تمام فایل‌های شیء و اسکریپت‌های درگیر در پیوند، برای مثال هنگام بسته‌بندی فایل‌ها جهت گزارش اشکال پیونددهنده، مفید است. .IP "\fB\-T\fR \fIscriptfile\fR" 4 .IX Item "-T scriptfile" .PD 0 .IP \fB\-\-script=\fR\fIscriptfile\fR 4 .IX Item "--script=scriptfile" .PD از \fIscriptfile\fR به‌عنوان اسکریپت پیونددهنده استفاده می‌کند. این اسکریپت جایگزین اسکریپت پیش‌فرض پیونددهندهٔ \fBld\fR می‌شود (به‌جای اینکه به آن بیفزاید)، مگر اینکه اسکریپت حاوی \&\f(CW\*(C`INSERT\*(C'\fR باشد؛ بنابراین \fIcommandfile\fR باید هر آنچه را که برای توصیف فایل خروجی لازم است مشخص کند. .Sp اگر \fIscriptfile\fR در دایرکتوری فعلی وجود نداشته باشد، \&\f(CW\*(C`ld\*(C'\fR آن را در دایرکتوری‌های مشخص‌شده توسط گزینه‌های پیشین \fB\-L\fR جستجو می‌کند. .Sp گزینه‌های خط فرمان که پیش از گزینهٔ \fB\-T\fR می‌آیند می‌توانند بر اسکریپت تأثیر بگذارند، اما گزینه‌های خط فرمان که پس از آن می‌آیند اثری نخواهند داشت. .Sp چندین گزینهٔ \fB\-T\fR اگر در حال افزودن به اسکریپت فعلی باشند تجمیع خواهند شد، در غیر این صورت آخرین گزینهٔ غیرتکمیلی \fB\-T\fR استفاده خواهد شد. .Sp روش‌های دیگری نیز برای تعیین اسکریپت‌های پیونددهنده وجود دارد. ببینید .IP "\fB\-dT\fR \fIscriptfile\fR" 4 .IX Item "-dT scriptfile" .PD 0 .IP \fB\-\-default\-script=\fR\fIscriptfile\fR 4 .IX Item "--default-script=scriptfile" .PD از \fIscriptfile\fR به‌عنوان اسکریپت پیش‌فرض پیونددهنده استفاده می‌کند. .Sp این گزینه مشابه گزینهٔ \fB\-\-script\fR است، با این تفاوت که پردازش اسکریپت تا پس از پردازش سایر بخش‌های خط فرمان به تعویق می‌افتد. این امر به گزینه‌هایی که پس از گزینهٔ \fB\-\-default\-script\fR در خط فرمان قرار گرفته‌اند اجازه می‌دهد تا بر رفتار اسکریپت پیونددهنده تأثیر بگذارند؛ موضوعی که می‌تواند در مواقعی که خط فرمان پیونددهنده به‌طور مستقیم توسط کاربر قابل کنترل نیست (برای مثال به این دلیل که خط فرمان توسط ابزار دیگری مانند \fBgcc\fR ساخته می‌شود) حائز اهمیت باشد..IP "\fB\-u\fR \fIsymbol\fR" 4 .IX Item "-u symbol" .PD 0 .IP \fB\-\-undefined=\fR\fIsymbol\fR 4 .IX Item "--undefined=symbol" .PD درج اجباری \fIsymbol\fR در فایل خروجی به عنوان یک نماد تعریف‌نشده (undefined). برای مثال، انجام این کار ممکن است پیوند دادن ماژول‌های اضافی از کتابخانه‌های استاندارد را فعال کند. \fB\-u\fR می‌تواند با آرگومان‌های مختلف تکرار شود تا نمادهای تعریف‌نشدهٔ بیشتری وارد شوند. این گزینه معادل دستور اسکریپت پیونددهندهٔ \f(CW\*(C`EXTERN\*(C'\fR است. .Sp اگر از این گزینه برای وادار کردن ماژول‌های اضافی جهت کشیده شدن به فرآیند پیوند استفاده می‌شود، و اگر تعریف‌نشده باقی ماندن نماد یک خطا محسوب می‌شود، باید به جای آن از گزینهٔ \fB\-\-require\-defined\fR استفاده شود. .IP \fB\-\-require\-defined=\fR\fIsymbol\fR 4 .IX Item "--require-defined=symbol" الزام می‌کند که \fIsymbol\fR در فایل خروجی تعریف شده باشد. این گزینه مانند گزینهٔ \fB\-\-undefined\fR عمل می‌کند، با این تفاوت که اگر \fIsymbol\fR در فایل خروجی تعریف نشده باشد، پیونددهنده خطا صادر کرده و خارج می‌شود. همین اثر را می‌توان در یک اسکریپت پیونددهنده با استفادهٔ هم‌زمان از \&\f(CW\*(C`EXTERN\*(C'\fR، \f(CW\*(C`ASSERT\*(C'\fR و \f(CW\*(C`DEFINED\*(C'\fR به دست آورد. این گزینه می‌تواند چندین بار برای الزام نمادهای بیشتر استفاده شود. .IP \fB\-Ur\fR 4 .IX Item "-Ur" برای برنامه‌هایی که از سازنده‌ها (constructors) یا نابودکننده‌ها (destructors) استفاده نمی‌کنند، یا برای سیستم‌های مبتنی بر ELF، این گزینه معادل \fB\-r\fR است: خروجی با قابلیت جابه‌جایی (relocatable) تولید می‌کند\-\-\-یعنی، یک فایل خروجی که به نوبهٔ خود می‌تواند به عنوان ورودی برای \fBld\fR عمل کند. با این حال برای سایر فایل‌های باینری، گزینهٔ \fB\-Ur\fR مشابه \fB\-r\fR است اما مراجع به سازنده‌ها و نابودکننده‌ها را نیز حل‌وفصل می‌کند. .Sp برای آن دسته از سیستم‌هایی که \fB\-r\fR و \fB\-Ur\fR در آن‌ها رفتار متفاوتی دارند، استفاده از \fB\-Ur\fR روی فایل‌هایی که خودشان با \fB\-Ur\fR پیوند یافته‌اند کار نمی‌کند؛ هنگامی که جدول سازنده‌ها ساخته شد، نمی‌توان چیزی به آن افزود. از \fB\-Ur\fR تنها برای آخرین پیوند جزئی، و از \fB\-r\fR برای بقیه استفاده کنید. .IP \fB\-\-orphan\-handling=\fR\fIMODE\fR 4 .IX Item "--orphan-handling=MODE" نحوهٔ مدیریت بخش‌های یتیم (orphan sections) را کنترل می‌کند. بخش یتیم بخشی است که صراحتاً در اسکریپت پیونددهنده نام برده نشده است. .Sp \&\fIMODE\fR می‌تواند هر یک از مقادیر زیر را داشته باشد: .RS 4 .ie n .IP """place""" 4 .el .IP \f(CWplace\fR 4 .IX Item "place" بخش‌های یتیم با پیروی از راهبرد شرح داده شده در \fBOrphan Sections\fR درون یک بخش خروجی مناسب قرار می‌گیرند. گزینهٔ \&\fB\-\-unique\fR نیز بر نحوهٔ قرارگیری بخش‌ها تأثیر می‌گذارد. .ie n .IP """discard""" 4 .el .IP \f(CWdiscard\fR 4 .IX Item "discard" همهٔ بخش‌های یتیم با قرار گرفتن در بخش \&\fB/DISCARD/\fR دور ریخته می‌شوند. .ie n .IP """warn""" 4 .el .IP \f(CWwarn\fR 4 .IX Item "warn" پیونددهنده بخش یتیم را مانند \f(CW\*(C`place\*(C'\fR قرار می‌دهد و همچنین یک هشدار صادر می‌کند. .ie n .IP """error""" 4 .el .IP \f(CWerror\fR 4 .IX Item "error" در صورت یافتن هرگونه بخش یتیم، پیونددهنده با یک خطا خارج می‌شود. .RE .RS 4 .Sp اگر \fB\-\-orphan\-handling\fR مشخص نشود، مقدار پیش‌فرض \f(CW\*(C`place\*(C'\fR است. .RE .IP \fB\-\-unique[=\fR\fISECTION\fR\fB]\fR 4 .IX Item "--unique[=SECTION]" برای هر بخش ورودی منطبق با \&\fISECTION\fR، یا در صورت نبود آرگومان اختیاری عامه‌نویس (wildcard) \fISECTION\fR، برای هر بخش ورودی یتیم، یک بخش خروجی مجزا ایجاد می‌کند. بخش یتیم بخشی است که صراحتاً در یک اسکریپت پیونددهنده ذکر نشده است. می‌توانید از این گزینه چندین بار در خط فرمان استفاده کنید؛ این گزینه از ادغام معمول بخش‌های ورودی هم‌نام جلوگیری کرده و بر تخصیص‌های بخش خروجی در اسکریپت پیونددهنده برتری می‌یابد. .IP \fB\-v\fR 4 .IX Item "-v" .PD 0 .IP \fB\-\-version\fR 4 .IX Item "--version" .IP \fB\-V\fR 4 .IX Item "-V" .PD نمایش شمارهٔ نسخهٔ \fBld\fR. گزینهٔ \fB\-V\fR همچنین شبیه‌سازی‌های (emulations) پشتیبانی‌شده را فهرست می‌کند. همچنین توضیحات \&\fB\-\-enable\-linker\-version\fR را در \fBOptions,,Command\-line Options\fR ببینید که می‌تواند برای درج رشتهٔ نسخهٔ پیونددهنده در یک باینری استفاده شود. .IP \fB\-x\fR 4 .IX Item "-x" .PD 0 .IP \fB\-\-discard\-all\fR 4 .IX Item "--discard-all" .PD حذف تمام نمادهای محلی. .IP \fB\-X\fR 4 .IX Item "-X" .PD 0 .IP \fB\-\-discard\-locals\fR 4 .IX Item "--discard-locals" .PD حذف تمام نمادهای محلی موقت. (این نمادها با پیشوندهای برچسب محلی مختص سیستم شروع می‌شوند، معمولاً \fB.L\fR برای سیستم‌های ELF یا \fBL\fR برای سیستم‌های سنتی a.out.) .IP "\fB\-y\fR \fIsymbol\fR" 4 .IX Item "-y symbol" .PD 0 .IP \fB\-\-trace\-symbol=\fR\fIsymbol\fR 4 .IX Item "--trace-symbol=symbol" .PD چاپ نام هر فایل پیوندشده که در آن \fIsymbol\fR ظاهر می‌شود. این گزینه می‌تواند به هر تعداد بار استفاده شود. در بسیاری از سیستم‌ها افزودن یک زیرخط (underscore) به ابتدای آن الزامی است. .Sp این گزینه زمانی مفید است که شما یک نماد تعریف‌نشده در پیوند خود دارید اما نمی‌دانید ارجاع به آن از کجا آمده است. .IP "\fB\-Y\fR \fIpath\fR" 4 .IX Item "-Y path" افزودن \fIpath\fR به مسیر پیش‌فرض جستجوی کتابخانه. این گزینه برای سازگاری با Solaris وجود دارد. .IP "\fB\-z\fR \fIkeyword\fR" 4 .IX Item "-z keyword" کلیدواژه‌های شناخته‌شده عبارتند از: .RS 4 .IP \fBcall\-nop=prefix\-addr\fR 4 .IX Item "call-nop=prefix-addr" .PD 0 .IP \fBcall\-nop=suffix\-nop\fR 4 .IX Item "call-nop=suffix-nop" .IP \fBcall\-nop=prefix\-\fR\fIbyte\fR 4 .IX Item "call-nop=prefix-byte" .IP \fBcall\-nop=suffix\-\fR\fIbyte\fR 4 .IX Item "call-nop=suffix-byte" .PD تعیین لایهٔ پرکنندهٔ (padding) یک‌بایتی \f(CW\*(C`NOP\*(C'\fR هنگام تبدیل فراخوانی غیرمستقیم به یک تابع محلی تعریف‌شده مانند foo از طریق شیار (slot) GOT آن. \&\fBcall\-nop=prefix\-addr\fR مقدار \f(CW\*(C`0x67 call foo\*(C'\fR را تولید می‌کند. \&\fBcall\-nop=suffix\-nop\fR مقدار \f(CW\*(C`call foo 0x90\*(C'\fR را تولید می‌کند. \&\fBcall\-nop=prefix\-\fR\fIbyte\fR مقدار \f(CW\*(C`\fR\f(CIbyte\fR\f(CW call foo\*(C'\fR را تولید می‌کند. \&\fBcall\-nop=suffix\-\fR\fIbyte\fR مقدار \f(CW\*(C`call foo \fR\f(CIbyte\fR\f(CW\*(C'\fR را تولید می‌کند. برای i386 و x86_64 پشتیبانی می‌شود. .IP \fBcet\-report=none\fR 4 .IX Item "cet-report=none" .PD 0 .IP \fBcet\-report=warning\fR 4 .IX Item "cet-report=warning" .IP \fBcet\-report=error\fR 4 .IX Item "cet-report=error" .PD نحوهٔ گزارش ویژگی‌های ناموجود GNU_PROPERTY_X86_FEATURE_1_IBT و GNU_PROPERTY_X86_FEATURE_1_SHSTK را در بخش ورودی .note.gnu.property مشخص می‌کند. مقدار \fBcet\-report=none\fR، که پیش‌فرض است، باعث می‌شود پیونددهنده ویژگی‌های ناموجود در فایل‌های ورودی را گزارش نکند. \&\fBcet\-report=warning\fR باعث می‌شود پیونددهنده برای ویژگی‌های ناموجود در فایل‌های ورودی هشدار صادر کند. \fBcet\-report=error\fR باعث می‌شود پیونددهنده برای ویژگی‌های ناموجود در فایل‌های ورودی خطا صادر کند. توجه داشته باشید که \fBibt\fR گزارش ویژگی ناموجود GNU_PROPERTY_X86_FEATURE_1_IBT را غیرفعال می‌کند و \fBshstk\fR گزارش ویژگی ناموجود GNU_PROPERTY_X86_FEATURE_1_SHSTK را غیرفعال خواهد کرد. برای Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBcombreloc\fR 4 .IX Item "combreloc" .PD 0 .IP \fBnocombreloc\fR 4 .IX Item "nocombreloc" .PD ترکیب چندین بخش بازنشانی (relocation) پویا و مرتب‌سازی به منظور بهبود کش‌کردن جستجوی نمادهای پویا. در صورت استفاده از \fBnocombreloc\fR این کار انجام نمی‌شود. .IP \fBcommon\fR 4 .IX Item "common" .PD 0 .IP \fBnocommon\fR 4 .IX Item "nocommon" .PD تولید نمادهای عمومی (common symbols) با نوع STT_COMMON در طول یک پیوند با قابلیت جابه‌جایی (relocatable link). در صورت استفاده از \fBnocommon\fR از نوع STT_OBJECT استفاده می‌شود. .IP \fBcommon\-page\-size=\fR\fIvalue\fR 4 .IX Item "common-page-size=value" اندازهٔ صفحه‌ای را که بیشترین کاربرد را دارد روی \fIvalue\fR تنظیم می‌کند. در صورتی که سیستم از صفحاتی با این اندازه استفاده کند، چیدمان تصویر حافظه برای به حداقل رساندن صفحات حافظه بهینه‌سازی خواهد شد..IP \fBdefs\fR 4 .IX Item "defs" ارجاع‌های حل‌نشدهٔ نماد از فایل‌های شیء عادی را گزارش می‌دهد. این کار حتی در صورتی که پیونددهنده در حال ایجاد یک کتابخانهٔ اشتراکی غیرنمادین باشد نیز انجام می‌شود. این گزینه معکوس \fB\-z undefs\fR است. .IP \fBdynamic\-undefined\-weak\fR 4 .IX Item "dynamic-undefined-weak" .PD 0 .IP \fBnodynamic\-undefined\-weak\fR 4 .IX Item "nodynamic-undefined-weak" .PD هنگام ساخت یک شیء پویا، نمادهای ضعیف تعریف‌نشده را در صورتی که از یک فایل شیء عادی ارجاع داده شده باشند و به دلیل نمایانیِ نماد یا نسخه‌بندی محلی نشده باشند، به صورت پویا درمی‌آورد. با انتخاب \&\fBnodynamic\-undefined\-weak\fR آن‌ها را پویا نمی‌کند. اگر هیچ‌یک از گزینه‌ها مشخص نشود، ممکن است پیش‌فرض یک هدف اِعمال هر یک از این گزینه‌ها باشد، یا گزینش دیگری از نمادهای ضعیف تعریف‌نشده را پویا کند. همهٔ هدف‌ها از این گزینه‌ها پشتیبانی نمی‌کنند. .IP \fBexecstack\fR 4 .IX Item "execstack" شیء را به عنوان نیازمند پشتهٔ قابل اجرا نشانه‌گذاری می‌کند. .IP \fBglobal\fR 4 .IX Item "global" این گزینه تنها هنگام ساخت یک شیء اشتراکی معنا دارد. این کار نمادهای تعریف‌شده توسط این شیء اشتراکی را برای حل نماد کتابخانه‌هایی که بعداً بارگذاری می‌شوند در دسترس قرار می‌دهد. .IP \fBglobalaudit\fR 4 .IX Item "globalaudit" این گزینه تنها هنگام ساخت یک فایل اجرایی پویا معنا دارد. این گزینه با تنظیم بیت \f(CW\*(C`DF_1_GLOBAUDIT\*(C'\fR در برچسب پویای \f(CW\*(C`DT_FLAGS_1\*(C'\fR، فایل اجرایی را به عنوان نیازمند حسابرسی سراسری نشانه‌گذاری می‌کند. حسابرسی سراسری مستلزم آن است که هر کتابخانهٔ حسابرسی تعریف‌شده از طریق گزینه‌های خط فرمان \fB\-\-depaudit\fR یا \fB\-P\fR برای تمام اشیاء پویای بارگذاری‌شده توسط برنامه اجرا شود. .IP \fBibtplt\fR 4 .IX Item "ibtplt" مدخل‌های PLT فعال‌شده با قابلیت Intel Indirect Branch Tracking (IBT) را تولید می‌کند. برای Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBibt\fR 4 .IX Item "ibt" ویژگی GNU_PROPERTY_X86_FEATURE_1_IBT را در بخش .note.gnu.property برای نشان دادن سازگاری با IBT ایجاد می‌کند. این گزینه همچنین متضمن \fBibtplt\fR است. برای Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBindirect\-extern\-access\fR 4 .IX Item "indirect-extern-access" .PD 0 .IP \fBnoindirect\-extern\-access\fR 4 .IX Item "noindirect-extern-access" .PD ویژگی GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS را در بخش \&.note.gnu.property ایجاد می‌کند تا نشان دهد فایل شیء به اشاره‌گرهای تابع استاندارد نیاز دارد و نمی‌تواند همراه با بازنشانی کپی استفاده شود. این گزینه همچنین متضمن \fBnoextern\-protected\-data\fR و \&\fBnocopyreloc\fR است. برای i386 و x86\-64 پشتیبانی می‌شود. .Sp گزینهٔ \&\fBnoindirect\-extern\-access\fR ویژگی GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS را از بخش .note.gnu.property حذف می‌کند. .IP \fBinitfirst\fR 4 .IX Item "initfirst" این گزینه تنها هنگام ساخت یک شیء اشتراکی معنا دارد. این گزینه شیء را طوری نشانه‌گذاری می‌کند که مقداردهی اولیهٔ زمان اجرای آن، پیش از مقداردهی اولیهٔ زمان اجرای هر شیء دیگری که هم‌زمان به فرایند آورده شده است رخ دهد. به همین ترتیب، نهایی‌سازی زمان اجرای این شیء پس از نهایی‌سازی زمان اجرای هر شیء دیگری رخ خواهد داد. .IP \fBinterpose\fR 4 .IX Item "interpose" مشخص می‌کند که بارگذار پویا باید ترتیب جستجوی نماد خود را طوری تغییر دهد که نمادهای موجود در این کتابخانهٔ اشتراکی، جایگزین نمادهای تمام کتابخانه‌های اشتراکی دیگری شوند که به این صورت نشانه‌گذاری نشده‌اند. .IP \fBunique\fR 4 .IX Item "unique" .PD 0 .IP \fBnounique\fR 4 .IX Item "nounique" .PD هنگام ایجاد یک کتابخانهٔ اشتراکی یا سایر اشیاء ELF با قابلیت بارگذاری پویا، آن را طوری نشانه‌گذاری می‌کند که (به طور پیش‌فرض) تنها یک بار و فقط در فضای نام اصلی (هنگام استفاده از \f(CW\*(C`dlmopen\*(C'\fR) بارگذاری شود. این گزینه اساساً برای نشانه‌گذاری کتابخانه‌های بنیادینی مانند libc، libpthread و غیره استفاده می‌شود که معمولاً تا زمانی که تنها نمونهٔ موجود از خود نباشند به درستی کار نمی‌کنند. این رفتار می‌تواند توسط فراخوانندهٔ \f(CW\*(C`dlmopen\*(C'\fR لغو شود و در مورد برخی سازوکارهای بارگذاری (مانند کتابخانه‌های حسابرسی) اعمال نمی‌شود. .IP \fBlam\-u48\fR 4 .IX Item "lam-u48" ویژگی GNU_PROPERTY_X86_FEATURE_1_LAM_U48 را در بخش .note.gnu.property ایجاد می‌کند تا سازگاری با Intel LAM_U48 را نشان دهد. برای Linux/x86_64 پشتیبانی می‌شود. .IP \fBlam\-u57\fR 4 .IX Item "lam-u57" ویژگی GNU_PROPERTY_X86_FEATURE_1_LAM_U57 را در بخش .note.gnu.property ایجاد می‌کند تا سازگاری با Intel LAM_U57 را نشان دهد. برای Linux/x86_64 پشتیبانی می‌شود. .IP \fBlam\-u48\-report=none\fR 4 .IX Item "lam-u48-report=none" .PD 0 .IP \fBlam\-u48\-report=warning\fR 4 .IX Item "lam-u48-report=warning" .IP \fBlam\-u48\-report=error\fR 4 .IX Item "lam-u48-report=error" .PD نحوهٔ گزارش‌دهی ویژگی مفقود GNU_PROPERTY_X86_FEATURE_1_LAM_U48 در بخش ورودی .note.gnu.property را مشخص می‌کند. گزینهٔ \&\fBlam\-u48\-report=none\fR که پیش‌فرض است، باعث می‌شود پیونددهنده ویژگی‌های مفقود در فایل‌های ورودی را گزارش نکند. گزینهٔ \&\fBlam\-u48\-report=warning\fR باعث می‌شود پیونددهنده برای ویژگی‌های مفقود در فایل‌های ورودی هشدار صادر کند. \fBlam\-u48\-report=error\fR باعث می‌شود پیونددهنده برای ویژگی‌های مفقود در فایل‌های ورودی خطا صادر کند. برای Linux/x86_64 پشتیبانی می‌شود. .IP \fBlam\-u57\-report=none\fR 4 .IX Item "lam-u57-report=none" .PD 0 .IP \fBlam\-u57\-report=warning\fR 4 .IX Item "lam-u57-report=warning" .IP \fBlam\-u57\-report=error\fR 4 .IX Item "lam-u57-report=error" .PD نحوهٔ گزارش‌دهی ویژگی مفقود GNU_PROPERTY_X86_FEATURE_1_LAM_U57 در بخش ورودی .note.gnu.property را مشخص می‌کند. گزینهٔ \&\fBlam\-u57\-report=none\fR که پیش‌فرض است، باعث می‌شود پیونددهنده ویژگی‌های مفقود در فایل‌های ورودی را گزارش نکند. گزینهٔ \&\fBlam\-u57\-report=warning\fR باعث می‌شود پیونددهنده برای ویژگی‌های مفقود در فایل‌های ورودی هشدار صادر کند. \fBlam\-u57\-report=error\fR باعث می‌شود پیونددهنده برای ویژگی‌های مفقود در فایل‌های ورودی خطا صادر کند. برای Linux/x86_64 پشتیبانی می‌شود. .IP \fBlam\-report=none\fR 4 .IX Item "lam-report=none" .PD 0 .IP \fBlam\-report=warning\fR 4 .IX Item "lam-report=warning" .IP \fBlam\-report=error\fR 4 .IX Item "lam-report=error" .PD نحوهٔ گزارش‌دهی ویژگی‌های مفقود GNU_PROPERTY_X86_FEATURE_1_LAM_U48 و GNU_PROPERTY_X86_FEATURE_1_LAM_U57 در بخش ورودی .note.gnu.property را مشخص می‌کند. \fBlam\-report=none\fR که پیش‌فرض است، باعث می‌شود پیونددهنده ویژگی‌های مفقود در فایل‌های ورودی را گزارش نکند. گزینهٔ \&\fBlam\-report=warning\fR باعث می‌شود پیونددهنده برای ویژگی‌های مفقود در فایل‌های ورودی هشدار صادر کند. \fBlam\-report=error\fR باعث می‌شود پیونددهنده برای ویژگی‌های مفقود در فایل‌های ورودی خطا صادر کند. برای Linux/x86_64 پشتیبانی می‌شود. .IP \fBlazy\fR 4 .IX Item "lazy" هنگام تولید یک فایل اجرایی یا کتابخانهٔ اشتراکی، آن را طوری نشانه‌گذاری می‌کند که به پیونددهندهٔ پویا اعلام کند حل فراخوانی توابع را به جای زمان بارگذاری، به لحظهٔ فراخوانی تابع (مقیدسازی تنبل) موکول کند. مقیدسازی تنبل حالت پیش‌فرض است. .IP \fBloadfltr\fR 4 .IX Item "loadfltr" مشخص می‌کند که فیلترهای شیء بی‌درنگ در زمان اجرا پردازش شوند. .IP \fBmax\-page\-size=\fR\fIvalue\fR 4 .IX Item "max-page-size=value" حداکثر اندازهٔ صفحهٔ حافظهٔ پشتیبانی‌شده را بر روی \fIvalue\fR تنظیم می‌کند. .IP \fBmark\-plt\fR 4 .IX Item "mark-plt" .PD 0 .IP \fBnomark\-plt\fR 4 .IX Item "nomark-plt" .PD مدخل‌های PLT را با برچسب‌های پویای DT_X86_64_PLT، DT_X86_64_PLTSZ و DT_X86_64_PLTENT علامت‌گذاری می‌کند. از آنجا که این گزینه مقداری غیرصفر را در فیلد r_addend بازنشانی‌های R_X86_64_JUMP_SLOT ذخیره می‌کند، فایل‌های اجرایی و کتابخانه‌های اشتراکی حاصل با پیونددهنده‌های پویایی که فیلد r_addend مربوط به بازنشانی‌های R_X86_64_JUMP_SLOT را نادیده نمی‌گیرند (مانند نسخه‌های قدیمی‌تر glibc بدون تغییر مربوط به نادیده گرفتن r_addend در بازنشانی‌های R_X86_64_GLOB_DAT و R_X86_64_JUMP_SLOT) ناسازگار خواهند بود. برای x86_64 پشتیبانی می‌شود. .IP \fBmuldefs\fR 4 .IX Item "muldefs" تعریف‌های چندگانه را مجاز می‌داند. .IP \fBnocopyreloc\fR 4 .IX Item "nocopyreloc" متغیرهای .dynbss ایجادشده توسط پیونددهنده را که به جای متغیرهای تعریف‌شده در کتابخانه‌های اشتراکی استفاده می‌شوند غیرفعال می‌کند. ممکن است منجر به بازنشانی‌های پویای متن شود. .IP \fBnodefaultlib\fR 4 .IX Item "nodefaultlib" مشخص می‌کند که جستجوی بارگذار پویا برای وابستگی‌های این شیء باید هرگونه مسیر پیش‌فرض جستجوی کتابخانه را نادیده بگیرد. .IP \fBnodelete\fR 4 .IX Item "nodelete" مشخص می‌کند که شیء نباید در زمان اجرا تخلیه شود..IP \fBnodlopen\fR 4 .IX Item "nodlopen" مشخص می‌کند که این شیء برای \f(CW\*(C`dlopen\*(C'\fR در دسترس نیست. .IP \fBnodump\fR 4 .IX Item "nodump" مشخص می‌کند که از این شیء نمی‌توان توسط \f(CW\*(C`dldump\*(C'\fR روگرفت (dump) تهیه کرد. .IP \fBnoexecstack\fR 4 .IX Item "noexecstack" شیء را به‌گونه‌ای علامت‌گذاری می‌کند که نیازی به پشتهٔ (stack) قابل اجرا نداشته باشد. .IP \fBnoextern\-protected\-data\fR 4 .IX Item "noextern-protected-data" هنگام ساخت یک کتابخانهٔ اشتراکی، با نمادهای داده‌ای حفاظت‌شده (protected) به‌عنوان نمادهای خارجی رفتار نمی‌کند. این گزینه پیش‌فرض پسانهٔ پیونددهنده را لغو می‌کند. می‌توان از آن برای رفع مشکل بازنشانی‌های نادرست تولیدشده توسط کامپایلر روی نمادهای داده‌ای حفاظت‌شده استفاده کرد. به‌روزرسانی‌های انجام‌شده روی نمادهای داده‌ای حفاظت‌شده توسط ماژول‌های دیگر، در کتابخانهٔ اشتراکی حاصل قابل مشاهده نخواهند بود. در i386 و x86\-64 پشتیبانی می‌شود. .IP \fBnoreloc\-overflow\fR 4 .IX Item "noreloc-overflow" بررسی سرریز بازنشانی (relocation overflow) را غیرفعال می‌کند. اگر در زمان اجرا هیچ سرریز بازنشانی پویایی رخ ندهد، می‌توان از این گزینه برای غیرفعال کردن بررسی سرریز بازنشانی استفاده کرد. در x86_64 پشتیبانی می‌شود. .IP \fBmemory\-seal\fR 4 .IX Item "memory-seal" .PD 0 .IP \fBnomemory\-seal\fR 4 .IX Item "nomemory-seal" .PD به فایل اجرایی یا کتابخانهٔ اشتراکی دستور می‌دهد که تمام بخش‌های (segments) \f(CW\*(C`PT_LOAD\*(C'\fR باید مهروموم (seal) شوند تا از دستکاری‌های بعدی (مانند تغییر پرچم‌های حفاظت، اندازهٔ سگمنت، یا حذف نگاشت) جلوگیری شود. این یک مقاوم‌سازی امنیتی است که به پشتیبانی سیستم نیاز دارد. این گزینه \f(CW\*(C`GNU_PROPERTY_MEMORY_SEAL\*(C'\fR را در بخش \f(CW\*(C`.note.gnu.property\*(C'\fR ایجاد می‌کند. .IP \fBnow\fR 4 .IX Item "now" هنگام تولید یک فایل اجرایی یا کتابخانهٔ اشتراکی، آن را نشانه‌گذاری می‌کند تا پیونددهندهٔ پویا ملزم شود تمام نمادها را در هنگام شروع برنامه یا هنگام بارگذاری کتابخانهٔ اشتراکی توسط \f(CW\*(C`dlopen\*(C'\fR حل (resolve) کند، به‌جای اینکه حل فراخوانی توابع را به زمان اولین فراخوانی آن‌ها موکول کند. .IP \fBorigin\fR 4 .IX Item "origin" مشخص می‌کند که شیء نیازمند پردازش \fR\f(CB$ORIGIN\fR\fB\fR در مسیرها است. .IP \fBpack\-relative\-relocs\fR 4 .IX Item "pack-relative-relocs" .PD 0 .IP \fBnopack\-relative\-relocs\fR 4 .IX Item "nopack-relative-relocs" .PD تولید بازنشانی‌های نسبی فشرده در فایل‌های اجرایی مستقل از موقعیت (PIE) و کتابخانه‌های اشتراکی. این گزینه مدخل‌های \f(CW\*(C`DT_RELR\*(C'\fR، \f(CW\*(C`DT_RELRSZ\*(C'\fR و \&\f(CW\*(C`DT_RELRENT\*(C'\fR را به بخش پویا (dynamic section) اضافه می‌کند. این گزینه هنگام ساخت فایل اجرایی وابسته به موقعیت و خروجی با قابلیت بازنشانی، نادیده گرفته می‌شود. \&\fBnopack\-relative\-relocs\fR حالت پیش‌فرض است که بازنشانی نسبی فشرده را غیرفعال می‌کند. در صورت پیوند با GNU C Library، یک وابستگی نگارش نماد GLIBC_ABI_DT_RELR به کتابخانهٔ اشتراکی C به خروجی افزوده می‌شود. در i386 و x86\-64 پشتیبانی می‌شود. .IP \fBrelro\fR 4 .IX Item "relro" .PD 0 .IP \fBnorelro\fR 4 .IX Item "norelro" .PD یک سرآیند سگمنت ELF به نام \f(CW\*(C`PT_GNU_RELRO\*(C'\fR در شیء ایجاد می‌کند. این مورد بخشی از حافظه را مشخص می‌کند که در صورت پشتیبانی، باید پس از انجام بازنشانی به‌صورت فقط‌خواندنی درآید. تعیین \fBcommon\-page\-size\fR کوچک‌تر از اندازهٔ صفحهٔ سیستم باعث بی‌اثر شدن این حفاظت می‌شود. در صورت استفاده از \fBnorelro\fR، سگمنت ELF از نوع \f(CW\*(C`PT_GNU_RELRO\*(C'\fR ایجاد نمی‌شود. .IP \fBreport\-relative\-reloc\fR 4 .IX Item "report-relative-reloc" بازنشانی‌های نسبی پویای تولیدشده توسط پیونددهنده را گزارش می‌دهد. در Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBsectionheader\fR 4 .IX Item "sectionheader" .PD 0 .IP \fBnosectionheader\fR 4 .IX Item "nosectionheader" .PD تولید سرآیند بخش‌ها (section header). در صورت استفاده از \&\fBnosectionheader\fR سرآیند بخش‌ها تولید نمی‌شود. گزینهٔ \fBsectionheader\fR حالت پیش‌فرض است. .IP \fBseparate\-code\fR 4 .IX Item "separate-code" .PD 0 .IP \fBnoseparate\-code\fR 4 .IX Item "noseparate-code" .PD یک سرآیند سگمنت کدِ مجزای \f(CW\*(C`PT_LOAD\*(C'\fR در شیء ایجاد می‌کند. این گزینه سگمنتی از حافظه را مشخص می‌کند که فقط باید شامل دستورالعمل‌ها (کد) باشد و باید در صفحاتی کاملاً مجزا از هرگونه دادهٔ دیگر قرار گیرد. در صورت استفاده از \fBnoseparate\-code\fR سگمنت کدِ مجزای \f(CW\*(C`PT_LOAD\*(C'\fR ایجاد نمی‌شود. .IP \fBshstk\fR 4 .IX Item "shstk" شناسهٔ GNU_PROPERTY_X86_FEATURE_1_SHSTK را در بخش .note.gnu.property تولید می‌کند تا سازگاری با Intel Shadow Stack را نشان دهد. در Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBstack\-size=\fR\fIvalue\fR 4 .IX Item "stack-size=value" تعیین اندازهٔ پشته برای یک سگمنت ELF از نوع \f(CW\*(C`PT_GNU_STACK\*(C'\fR. تعیین مقدار صفر، هرگونه ایجاد پیش‌فرض سگمنت \&\f(CW\*(C`PT_GNU_STACK\*(C'\fR با اندازهٔ غیرصفر را لغو می‌کند. .IP \fBstart\-stop\-gc\fR 4 .IX Item "start-stop-gc" .PD 0 .IP \fBnostart\-stop\-gc\fR 4 .IX Item "nostart-stop-gc" .PD هنگامی که \fB\-\-gc\-sections\fR فعال باشد، ارجاع از یک بخش نگه‌داشته‌شده به \f(CW\*(C`_\|_start_SECNAME\*(C'\fR یا \f(CW\*(C`_\|_stop_SECNAME\*(C'\fR باعث می‌شود تمام بخش‌های ورودی با نام \f(CW\*(C`SECNAME\*(C'\fR نیز حفظ شوند، مشروط بر اینکه \f(CW\*(C`SECNAME\*(C'\fR به‌عنوان یک شناسهٔ زبان C قابل نمایش باشد و هر یک از \&\f(CW\*(C`_\|_start_SECNAME\*(C'\fR یا \f(CW\*(C`_\|_stop_SECNAME\*(C'\fR توسط پیونددهنده سنتز (ایجاد) شده باشند. گزینهٔ \fB\-z start\-stop\-gc\fR این اثر را غیرفعال می‌کند و اجازه می‌دهد بخش‌ها به‌گونه‌ای توسط فرایند بازیافت حافظه (garbage collection) جمع‌آوری شوند که گویی نمادهای سنتزشدهٔ خاص تعریف نشده‌اند. گزینهٔ \fB\-z start\-stop\-gc\fR هیچ تأثیری بر تعریف \f(CW\*(C`_\|_start_SECNAME\*(C'\fR یا \f(CW\*(C`_\|_stop_SECNAME\*(C'\fR در یک فایل شیء یا اسکریپت پیونددهنده ندارد. چنین تعریفی مانع از ایجاد نمادهای سنتزشدهٔ \f(CW\*(C`_\|_start_SECNAME\*(C'\fR یا \&\f(CW\*(C`_\|_stop_SECNAME\*(C'\fR توسط پیونددهنده می‌شود و در نتیجه، مانع از اعمال رفتار ویژه در بازیافت حافظه برای آن ارجاع‌ها خواهد شد. .IP \fBstart\-stop\-visibility=\fR\fIvalue\fR 4 .IX Item "start-stop-visibility=value" میزان پدیداری (visibility) نماد ELF را برای نمادهای سنتزشدهٔ \&\f(CW\*(C`_\|_start_SECNAME\*(C'\fR و \f(CW\*(C`_\|_stop_SECNAME\*(C'\fR مشخص می‌کند. مقدار \fIvalue\fR باید دقیقاً یکی از مقادیر \fBdefault\fR، \&\fBinternal\fR، \fBhidden\fR یا \fBprotected\fR باشد. اگر هیچ گزینهٔ \fB\-z start\-stop\-visibility\fR ارائه نشود، برای سازگاری با روال گذشته، مقدار \fBprotected\fR استفاده می‌شود. با این حال، قویاً توصیه می‌شود که در برنامه‌ها و کتابخانه‌های اشتراکی جدید از \fB\-z start\-stop\-visibility=hidden\fR استفاده شود تا این نمادها بین اشیای اشتراکی صادر (export) نشوند، چرا که این موضوع معمولاً مد نظر نیست. .IP \fBtext\fR 4 .IX Item "text" .PD 0 .IP \fBnotext\fR 4 .IX Item "notext" .IP \fBtextoff\fR 4 .IX Item "textoff" .PD اگر DT_TEXTREL تنظیم شده باشد (یعنی اگر شیء اشتراکی یا مستقل از موقعیت دارای بازنشانی‌های پویا در بخش‌های فقط‌خواندنی باشد)، یک خطا گزارش می‌دهد. در صورت استفاده از \fBnotext\fR یا \fBtextoff\fR خطایی گزارش نمی‌شود. .IP \fBundefs\fR 4 .IX Item "undefs" ارجاع‌های حل‌نشده به نمادها از فایل‌های شیء عادی را، چه هنگام ایجاد یک فایل اجرایی و چه هنگام ایجاد یک کتابخانهٔ اشتراکی، گزارش نمی‌کند. این گزینه معکوس \fB\-z defs\fR است. .IP \fBunique\-symbol\fR 4 .IX Item "unique-symbol" .PD 0 .IP \fBnounique\-symbol\fR 4 .IX Item "nounique-symbol" .PD از تکرار نام‌های نمادهای محلی در جدول رشته‌ای نمادها جلوگیری می‌کند. در صورت استفاده از \fBunique\-symbol\fR، عبارت ".\f(CW\*(C`number\*(C'\fR" به نام‌های تکراری نمادهای محلی ضمیمه می‌شود. گزینهٔ \fBnounique\-symbol\fR حالت پیش‌فرض است. .IP \fBx86\-64\-baseline\fR 4 .IX Item "x86-64-baseline" .PD 0 .IP \fBx86\-64\-v2\fR 4 .IX Item "x86-64-v2" .IP \fBx86\-64\-v3\fR 4 .IX Item "x86-64-v3" .IP \fBx86\-64\-v4\fR 4 .IX Item "x86-64-v4" .PD سطح ISA مورد نیاز x86\-64 را در بخش .note.gnu.property مشخص می‌کند. \&\fBx86\-64\-baseline\fR مقدار \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_BASELINE\*(C'\fR را تولید می‌کند. \&\fBx86\-64\-v2\fR مقدار \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_V2\*(C'\fR را تولید می‌کند. \&\fBx86\-64\-v3\fR مقدار \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_V3\*(C'\fR را تولید می‌کند. \&\fBx86\-64\-v4\fR مقدار \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_V4\*(C'\fR را تولید می‌کند. در Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBisa\-level\-report=none\fR 4 .IX Item "isa-level-report=none" .PD 0 .IP \fBisa\-level\-report=all\fR 4 .IX Item "isa-level-report=all" .IP \fBisa\-level\-report=needed\fR 4 .IX Item "isa-level-report=needed" .IP \fBisa\-level\-report=used\fR 4 .IX Item "isa-level-report=used" .PD نحوهٔ گزارش سطوح ISA مربوط به x86\-64 را در فایل‌های ورودی بازنشانی‌پذیر مشخص می‌کند. \&\fBisa\-level\-report=none\fR که حالت پیش‌فرض است، باعث می‌شود پیونددهنده سطوح ISA مربوط به x86\-64 را در فایل‌های ورودی گزارش نکند. \&\fBisa\-level\-report=all\fR باعث می‌شود پیونددهنده سطوح ISA مورد نیاز و استفاده‌شدهٔ x86\-64 را در فایل‌های ورودی گزارش کند. \&\fBisa\-level\-report=needed\fR باعث می‌شود پیونددهنده سطوح ISA مورد نیاز x86\-64 را در فایل‌های ورودی گزارش کند. \&\fBisa\-level\-report=used\fR باعث می‌شود پیونددهنده سطوح ISA استفاده‌شدهٔ x86\-64 را در فایل‌های ورودی گزارش کند. در Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .RE .RS 4 .Sp سایر کلمات کلیدی به‌منظور سازگاری با Solaris نادیده گرفته می‌شوند. .RE.IP \fB\-\-gnu\-tls\-tag\fR 4 .IX Item "--gnu-tls-tag" .PD 0 .IP \fB\-\-no\-gnu\-tls\-tag\fR 4 .IX Item "--no-gnu-tls-tag" .PD در صورت پیوند با glibc، چنانچه فایل‌های شیءِ بازآرایی‌پذیر (relocatable) ورودی تابع \f(CW\*(C`_\|_\|_tls_get_addr\*(C'\fR را فراخوانی کنند، وابستگی برچسب نسخهٔ \f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fR را به برنامه‌ها و کتابخانه‌های اشتراکی خروجی اضافه می‌کند. خروجی در زمان اجرا با نسخه‌ای از glibc که برچسب نسخهٔ \&\f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fR را تعریف نکرده باشد، در بارگذاری و اجرا با شکست مواجه خواهد شد. مگر اینکه پیونددهنده در زمان ساخت با گزینهٔ پیکربندی \&\fB\-\-disable\-gnu\-tls\-tag\fR غیرفعال شده باشد، هنگامی که هیچ گزینه‌ای مشخص نشود، پیونددهنده چنانچه ورودی‌ها فراخوانی \&\f(CW\*(C`_\|_\|_tls_get_addr\*(C'\fR داشته باشند و libc.so برچسب نسخهٔ \&\f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fR را تعریف کند، وابستگی برچسب نسخهٔ \&\f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fR را اضافه خواهد کرد. این ویژگی در Linux/i386 پشتیبانی می‌شود. .IP \fB\-\-gnu2\-tls\-tag\fR 4 .IX Item "--gnu2-tls-tag" .PD 0 .IP \fB\-\-no\-gnu2\-tls\-tag\fR 4 .IX Item "--no-gnu2-tls-tag" .PD در صورت پیوند با glibc، چنانچه فایل‌های شیءِ بازآرایی‌پذیر ورودی دارای بازآرایی (relocation) \f(CW\*(C`R_386_TLS_DESC_CALL\*(C'\fR یا \&\f(CW\*(C`R_X86_64_TLSDESC_CALL\*(C'\fR باشند، وابستگی برچسب نسخهٔ \f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fR را به برنامه‌ها و کتابخانه‌های اشتراکی خروجی اضافه می‌کند. خروجی در زمان اجرا با نسخه‌ای از glibc که برچسب نسخهٔ \&\f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fR را تعریف نکرده باشد، در بارگذاری و اجرا با شکست مواجه خواهد شد. مگر اینکه پیونددهنده در زمان ساخت با گزینهٔ پیکربندی \&\fB\-\-disable\-gnu2\-tls\-tag\fR غیرفعال شده باشد، هنگامی که هیچ گزینه‌ای مشخص نشود، پیونددهنده چنانچه ورودی‌ها بازآرایی \&\f(CW\*(C`R_386_TLS_DESC_CALL\*(C'\fR یا \f(CW\*(C`R_X86_64_TLSDESC_CALL\*(C'\fR داشته باشند و libc.so برچسب نسخهٔ \f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fR را تعریف کند، وابستگی برچسب نسخهٔ \&\f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fR را اضافه خواهد کرد. این ویژگی در Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP "\fB\-(\fR \fIarchives\fR \fB\-)\fR" 4 .IX Item "-( archives -)" .PD 0 .IP "\fB\-\-start\-group\fR \fIarchives\fR \fB\-\-end\-group\fR" 4 .IX Item "--start-group archives --end-group" .PD آرگومان \fIarchives\fR باید فهرستی از فایل‌های آرشیو باشد. این موارد می‌توانند نام‌های صریح فایل یا گزینه‌های \fB\-l\fR باشند. .Sp آرشیوهای مشخص‌شده به‌طور مکرر جستجو می‌شوند تا زمانی که هیچ ارجاع تعریف‌نشدهٔ جدیدی ایجاد نشود. به‌طور معمول، یک آرشیو تنها یک بار و به ترتیبی که در خط فرمان مشخص شده جستجو می‌شود. اگر نمادی در آن آرشیو برای حل یک نماد تعریف‌نشده که توسط شیئی در یک آرشیوِ پس از آن در خط فرمان به آن ارجاع داده شده نیاز باشد، پیونددهنده قادر به حل آن ارجاع نخواهد بود. با گروه‌بندی آرشیوها، همهٔ آن‌ها تا رفع تمامی ارجاعات ممکن، به‌طور مکرر جستجو خواهند شد. .Sp استفاده از این گزینه هزینهٔ کارایی قابل‌توجهی دارد. بهتر است تنها زمانی استفاده شود که ارجاعات دَوَرانی اجتناب‌ناپذیری میان دو یا چند آرشیو وجود داشته باشد. .IP \fB\-\-accept\-unknown\-input\-arch\fR 4 .IX Item "--accept-unknown-input-arch" .PD 0 .IP \fB\-\-no\-accept\-unknown\-input\-arch\fR 4 .IX Item "--no-accept-unknown-input-arch" .PD به پیونددهنده اعلام می‌کند فایل‌های ورودی را که معماری آن‌ها قابل تشخیص نیست بپذیرد. فرض بر این است که کاربر می‌داند چه می‌کند و عمداً قصد پیوند این فایل‌های ورودی ناشناخته را دارد. این رفتار تا پیش از نگارش 2.14، رفتار پیش‌فرض پیونددهنده بود. رفتار پیش‌فرض از نگارش 2.14 به بعد رد کردن چنین فایل‌های ورودی است؛ بنابراین گزینهٔ \fB\-\-accept\-unknown\-input\-arch\fR برای بازگرداندن رفتار پیشین اضافه شده است. .IP \fB\-\-as\-needed\fR 4 .IX Item "--as-needed" .PD 0 .IP \fB\-\-no\-as\-needed\fR 4 .IX Item "--no-as-needed" .PD این گزینه بر برچسب‌های DT_NEEDED در ELF برای کتابخانه‌های پویایی که پس از گزینهٔ \fB\-\-as\-needed\fR در خط فرمان آورده شده‌اند، اثر می‌گذارد. به‌طور معمول پیونددهنده صرف‌نظر از اینکه کتابخانه واقعاً مورد نیاز باشد یا خیر، برای هر کتابخانهٔ پویایی که در خط فرمان ذکر شده باشد، یک برچسب DT_NEEDED اضافه می‌کند. گزینهٔ \fB\-\-as\-needed\fR باعث می‌شود برچسب DT_NEEDED تنها برای کتابخانه‌ای صادر شود که \fIدر آن نقطه از پیوند\fR یک ارجاع نماد تعریف‌نشدهٔ غیرضعیف (non-weak) را از یک فایل شیء معمولی برطرف کند؛ یا اگر کتابخانه در فهرست‌های DT_NEEDED سایر کتابخانه‌های مورد نیاز یافت نشود، یک ارجاع نماد تعریف‌نشدهٔ غیرضعیف را از کتابخانهٔ پویای مورد نیاز دیگری برطرف سازد. فایل‌های شیء یا کتابخانه‌هایی که در خط فرمان \fIبعد\fR از کتابخانهٔ مذکور می‌آیند، تأثیری در مورد نیاز تلقی شدن آن کتابخانه ندارند. این قاعده شبیه به قواعد استخراج فایل‌های شیء از آرشیوها است. گزینهٔ \fB\-\-no\-as\-needed\fR رفتار پیش‌فرض را بازمی‌گرداند. .Sp نکته: در سیستم‌های مبتنی بر Linux گزینهٔ \fB\-\-as\-needed\fR همچنین بر رفتار گزینه‌های \fB\-\-rpath\fR و \&\fB\-\-rpath\-link\fR اثر می‌گذارد. برای جزئیات بیشتر به توضیحات \&\fB\-\-rpath\-link\fR مراجعه کنید. .IP \fB\-\-add\-needed\fR 4 .IX Item "--add-needed" .PD 0 .IP \fB\-\-no\-add\-needed\fR 4 .IX Item "--no-add-needed" .PD این دو گزینه به دلیل شباهت نام‌هایشان با گزینه‌های \fB\-\-as\-needed\fR و \fB\-\-no\-as\-needed\fR منسوخ شده‌اند. آن‌ها با گزینه‌های \fB\-\-copy\-dt\-needed\-entries\fR و \fB\-\-no\-copy\-dt\-needed\-entries\fR جایگزین شده‌اند. .IP "\fB\-assert\fR \fIkeyword\fR" 4 .IX Item "-assert keyword" این گزینه برای سازگاری با SunOS نادیده گرفته می‌شود. .IP \fB\-Bdynamic\fR 4 .IX Item "-Bdynamic" .PD 0 .IP \fB\-dy\fR 4 .IX Item "-dy" .IP \fB\-call_shared\fR 4 .IX Item "-call_shared" .PD پیوند با کتابخانه‌های پویا. این گزینه تنها در بسترهایی معنادار است که از کتابخانه‌های اشتراکی پشتیبانی می‌کنند. این گزینه به‌طور معمول در چنین بسترهایی پیش‌فرض است. گونه‌های مختلف این گزینه برای سازگاری با سیستم‌های گوناگون در نظر گرفته شده‌اند. می‌توانید این گزینه را چندین بار در خط فرمان به کار ببرید: این گزینه بر جستجوی کتابخانه برای گزینه‌های \&\fB\-l\fR پس از خود اثر می‌گذارد. .IP \fB\-Bgroup\fR 4 .IX Item "-Bgroup" تنظیم پرچم \f(CW\*(C`DF_1_GROUP\*(C'\fR در مدخل \f(CW\*(C`DT_FLAGS_1\*(C'\fR در بخش پویا (dynamic section). این امر باعث می‌شود پیونددهندهٔ زمان اجرا جستجوها در این شیء و وابستگی‌های آن را تنها درون گروه انجام دهد. گزینهٔ \&\fB\-\-unresolved\-symbols=report\-all\fR به‌طور ضمنی اعمال می‌شود. این گزینه تنها در بسترهای ELF با پشتیبانی از کتابخانه‌های اشتراکی معنادار است. .IP \fB\-Bstatic\fR 4 .IX Item "-Bstatic" .PD 0 .IP \fB\-dn\fR 4 .IX Item "-dn" .IP \fB\-non_shared\fR 4 .IX Item "-non_shared" .IP \fB\-static\fR 4 .IX Item "-static" .PD عدم پیوند با کتابخانه‌های اشتراکی. این گزینه تنها در بسترهایی معنادار است که از کتابخانه‌های اشتراکی پشتیبانی می‌کنند. گونه‌های مختلف این گزینه برای سازگاری با سیستم‌های گوناگون است. می‌توانید از این گزینه چندین بار در خط فرمان استفاده کنید: این گزینه بر جستجوی کتابخانه برای گزینه‌های \fB\-l\fR پس از خود اثر می‌گذارد. این گزینه همچنین به‌طور ضمنی \fB\-\-unresolved\-symbols=report\-all\fR را فعال می‌کند. این گزینه را می‌توان همراه با \fB\-shared\fR استفاده کرد. انجام این کار به این معناست که یک کتابخانهٔ اشتراکی ایجاد می‌شود، اما تمام ارجاعات خارجی کتابخانه باید با گنجاندن مدخل‌هایی از کتابخانه‌های ایستا حل شوند. .IP \fB\-Bsymbolic\fR 4 .IX Item "-Bsymbolic" هنگام ایجاد یک کتابخانهٔ اشتراکی، ارجاعات به نمادهای سراسری را در صورت وجود به تعریف درون همان کتابخانهٔ اشتراکی پیوند می‌دهد (bind). به‌طور معمول، این امکان برای برنامه‌ای که با یک کتابخانهٔ اشتراکی پیوند یافته وجود دارد که تعریف درون کتابخانهٔ اشتراکی را بازتعریف (override) کند. این گزینه تنها در بسترهای ELF با پشتیبانی از کتابخانه‌های اشتراکی معنادار است. .IP \fB\-Bsymbolic\-functions\fR 4 .IX Item "-Bsymbolic-functions" هنگام ایجاد یک کتابخانهٔ اشتراکی، ارجاعات به نمادهای توابع سراسری را در صورت وجود به تعریف درون همان کتابخانهٔ اشتراکی پیوند می‌دهد. این گزینه تنها در بسترهای ELF با پشتیبانی از کتابخانه‌های اشتراکی معنادار است. .IP \fB\-Bno\-symbolic\fR 4 .IX Item "-Bno-symbolic" این گزینه می‌تواند گزینه‌های \fB\-Bsymbolic\fR و \&\fB\-Bsymbolic\-functions\fR مشخص‌شدهٔ قبلی را لغو کند. .IP \fB\-\-dynamic\-list=\fR\fIdynamic\-list\-file\fR 4 .IX Item "--dynamic-list=dynamic-list-file" نام یک فایل فهرست پویا را به پیونددهنده اعلام می‌کند. این گزینه معمولاً هنگام ایجاد کتابخانه‌های اشتراکی برای تعیین فهرستی از نمادهای سراسری که ارجاعات آن‌ها نباید به تعریف درون کتابخانهٔ اشتراکی پیوند داده شود، یا هنگام ساخت فایل‌های اجرایی پیوندیافتهٔ پویا برای تعیین فهرستی از نمادها که باید به جدول نمادهای فایل اجرایی اضافه شوند، کاربرد دارد. این گزینه تنها در بسترهای ELF با پشتیبانی از کتابخانه‌های اشتراکی معنادار است. .Sp قالب فهرست پویا همانند گره نسخه (version node) بدون حوزه (scope) و نام گره است. برای اطلاعات بیشتر \fBVERSION\fR را ببینید. .IP \fB\-\-dynamic\-list\-data\fR 4 .IX Item "--dynamic-list-data" گنجاندن تمام نمادهای داده‌ای سراسری در فهرست پویا. .IP \fB\-\-dynamic\-list\-cpp\-new\fR 4 .IX Item "--dynamic-list-cpp-new" ارائهٔ فهرست پویای توکار برای عملگرهای new و delete در ++C. این گزینه عمدتاً برای ساخت libstdc++ به صورت اشتراکی مفید است..IP \fB\-\-dynamic\-list\-cpp\-typeinfo\fR 4 .IX Item "--dynamic-list-cpp-typeinfo" فهرست پویای توکار را برای شناسایی نوع زمان اجرای ++C (یا همان RTTI) فراهم می‌کند. .IP \fB\-\-check\-sections\fR 4 .IX Item "--check-sections" .PD 0 .IP \fB\-\-no\-check\-sections\fR 4 .IX Item "--no-check-sections" .PD از پیونددهنده می‌خواهد پس از تخصیص آدرس‌های بخش‌ها، آن‌ها را برای بررسی هم‌پوشانی بررسی \fIنکند\fR. به طور معمول پیونددهنده این بررسی را انجام می‌دهد و در صورت یافتن هرگونه هم‌پوشانی، پیام‌های خطای مناسبی تولید می‌کند. پیونددهنده از بخش‌های موجود در هم‌پوشان‌ها (overlays) آگاه است و آن‌ها را لحاظ می‌کند. رفتار پیش‌فرض را می‌توان با استفاده از سوئیچ خط فرمان \fB\-\-check\-sections\fR بازگرداند. هم‌پوشانی بخش‌ها معمولاً برای پیوندهای با قابلیت بازآرایی بررسی نمی‌شود. در این حالت می‌توانید با استفاده از گزینهٔ \fB\-\-check\-sections\fR بررسی را اجباری کنید. .IP \fB\-\-copy\-dt\-needed\-entries\fR 4 .IX Item "--copy-dt-needed-entries" .PD 0 .IP \fB\-\-no\-copy\-dt\-needed\-entries\fR 4 .IX Item "--no-copy-dt-needed-entries" .PD این گزینه بر نحوهٔ برخورد با کتابخانه‌های پویایی که برچسب‌های DT_NEEDED \fIدرون\fR کتابخانه‌های پویای ELF ذکرشده در خط فرمان به آن‌ها ارجاع می‌دهند، تأثیر می‌گذارد. به طور معمول پیونددهنده برای هر کتابخانه‌ای که در یک برچسب DT_NEEDED در یک کتابخانهٔ پویای ورودی ذکر شده است، برچسب DT_NEEDED به باینری خروجی اضافه نمی‌کند. با این حال با تعیین \fB\-\-copy\-dt\-needed\-entries\fR در خط فرمان، مدخل‌های DT_NEEDED مربوط به هر کتابخانهٔ پویایی که پس از آن بیاید اضافه خواهد شد. رفتار پیش‌فرض را می‌توان با \fB\-\-no\-copy\-dt\-needed\-entries\fR بازیابی کرد. .Sp این گزینه همچنین بر حل نمادها در کتابخانه‌های پویا تأثیر دارد. با \fB\-\-copy\-dt\-needed\-entries\fR، کتابخانه‌های پویای ذکرشده در خط فرمان، با دنبال کردن برچسب‌های DT_NEEDED خود به سوی سایر کتابخانه‌ها، به صورت بازگشتی جستجو می‌شوند تا نمادهای مورد نیاز باینری خروجی را حل کنند. با این حال در حالت پیش‌فرض، جستجوی کتابخانه‌های پویایی که در ادامه می‌آیند، در همان کتابخانهٔ پویا متوقف خواهد شد و برای حل نمادها هیچ پیوند DT_NEEDED پیمایش نمی‌شود. .IP \fB\-\-cref\fR 4 .IX Item "--cref" یک جدول ارجاع متقابل (cross reference) خروجی می‌دهد. اگر فایل نگاشت پیونددهنده (map file) در حال تولید باشد، جدول ارجاع متقابل در آن فایل چاپ می‌شود؛ در غیر این صورت، در خروجی استاندارد چاپ خواهد شد. .Sp قالب جدول عمداً ساده است تا در صورت نیاز به آسانی توسط یک اسکریپت پردازش شود. نمادها به صورت مرتب‌شده بر اساس نام چاپ می‌شوند. برای هر نماد، فهرستی از نام‌های فایل ارائه می‌شود. اگر نماد تعریف شده باشد، اولین فایل ذکرشده محل تعریف است. اگر نماد به عنوان یک مقدار مشترک (common) تعریف شده باشد، هر فایلی که این اتفاق در آن رخ داده در ادامه می‌آید. در نهایت، هر فایلی که به نماد ارجاع داده باشد فهرست می‌شود. .IP \fB\-\-ctf\-variables\fR 4 .IX Item "--ctf-variables" .PD 0 .IP \fB\-\-no\-ctf\-variables\fR 4 .IX Item "--no-ctf-variables" .PD قالب اطلاعات اشکال‌زدایی CTF از بخشی پشتیبانی می‌کند که نام‌ها و انواع متغیرهای یافت‌شده در برنامه را که در هیچ جدول نمادی ظاهر نمی‌شوند، کدگذاری می‌کند. این متغیرها به وضوح بر اساس آدرس توسط اشکال‌زداهای سنتی قابل جستجو نیستند، بنابراین فضای استفاده‌شده برای انواع و نام‌های آن‌ها معمولاً هدر می‌رود: انواع معمولاً کوچک هستند اما نام‌ها اغلب این‌گونه نیستند. \&\fB\-\-ctf\-variables\fR باعث تولید چنین بخشی می‌شود. رفتار پیش‌فرض را می‌توان با \fB\-\-no\-ctf\-variables\fR بازیابی کرد. .IP \fB\-\-ctf\-share\-types=\fR\fImethod\fR 4 .IX Item "--ctf-share-types=method" روش مورد استفاده برای اشتراک‌گذاری انواع میان واحدهای ترجمه در CTF را تنظیم می‌کند. .RS 4 .IP \fBshare\-unconflicted\fR 4 .IX Item "share-unconflicted" تمام انواعی را که تعاریف مبهم ندارند در فرهنگ‌لغت مشترک قرار می‌دهد تا اشکال‌زداها بتوانند به آسانی به آن‌ها دسترسی داشته باشند، حتی اگر تنها در یک واحد ترجمه ظاهر شده باشند. این مقدار پیش‌فرض است. .IP \fBshare\-duplicated\fR 4 .IX Item "share-duplicated" تنها انواعی را که در چندین واحد ترجمه تکرار شده‌اند در فرهنگ‌لغت مشترک قرار می‌دهد: انواعی که فقط یک تعریف دارند به فرهنگ‌لغت‌های اختصاصی هر واحد ترجمه می‌روند. انواعی با تعاریف مبهم در چندین واحد ترجمه نیز همیشه وارد فرهنگ‌لغت‌های اختصاصی واحد ترجمه می‌شوند. این کار معمولاً اندازهٔ CTF را بزرگ‌تر می‌کند، اما ممکن است حجم CTF را در فرهنگ‌لغت مشترک کاهش دهد. برای پروژه‌های بسیار بزرگ، این کار ممکن است سرعت باز کردن CTF را افزایش دهد و در زمان اجرا در مصرف حافظه توسط مصرف‌کنندهٔ CTF صرفه‌جویی کند. .RE .RS 4 .RE .IP \fB\-\-no\-define\-common\fR 4 .IX Item "--no-define-common" این گزینه مانع از تخصیص آدرس‌ها به نمادهای مشترک (common symbols) می‌شود. دستور اسکریپت \f(CW\*(C`INHIBIT_COMMON_ALLOCATION\*(C'\fR نیز همین اثر را دارد. .Sp گزینهٔ \fB\-\-no\-define\-common\fR اجازه می‌دهد تصمیم برای تخصیص آدرس به نمادهای مشترک از انتخاب نوع فایل خروجی تفکیک شود؛ در غیر این صورت یک نوع خروجی بدون قابلیت بازآرایی (non-relocatable) تخصیص آدرس به نمادهای مشترک را اجباری می‌کند. استفاده از \fB\-\-no\-define\-common\fR باعث می‌شود نمادهای مشترکی که از یک کتابخانهٔ مشترک به آن‌ها ارجاع شده است، تنها در برنامهٔ اصلی آدرس‌دهی شوند. این امر فضای تکراری بلااستفاده را در کتابخانهٔ مشترک حذف کرده و همچنین از هرگونه سردرگمی احتمالی در حل به نسخهٔ تکراریِ اشتباه هنگام وجود ماژول‌های پویای متعدد با مسیرهای جستجوی خاص جلوگیری می‌کند. .IP \fB\-\-force\-group\-allocation\fR 4 .IX Item "--force-group-allocation" این گزینه پیونددهنده را وادار می‌کند تا اعضای گروه بخش (section group) را مانند بخش‌های ورودی عادی قرار دهد و گروه‌های بخش را حذف کند. این رفتار پیش‌فرض برای یک پیوند نهایی است اما می‌توان از این گزینه برای تغییر رفتار پیوند با قابلیت بازآرایی (\fB\-r\fR) استفاده کرد. دستور اسکریپت \f(CW\*(C`FORCE_GROUP_ALLOCATION\*(C'\fR اثری مشابه دارد. .IP \fB\-\-defsym=\fR\fIsymbol\fR\fB=\fR\fIexpression\fR 4 .IX Item "--defsym=symbol=expression" یک نماد سراسری (global symbol) در فایل خروجی ایجاد می‌کند که حاوی آدرس مطلقی است که توسط \fIexpression\fR تعیین شده است. می‌توانید به تعداد نیاز از این گزینه برای تعریف نمادهای متعدد در خط فرمان استفاده کنید. شکل محدودی از محاسبات ریاضی برای \fIexpression\fR در این زمینه پشتیبانی می‌شود: می‌توانید یک مقدار ثابت هگزادسیمال یا نام یک نماد موجود را وارد کنید، یا از \f(CW\*(C`+\*(C'\fR و \f(CW\*(C`\-\*(C'\fR برای جمع یا تفریق ثوابت هگزادسیمال یا نمادها بهره ببرید. اگر به عبارات پیچیده‌تری نیاز دارید، استفاده از زبان دستورات پیونددهنده از طریق اسکریپت را در نظر بگیرید. \&\fIنکته:\fR نباید هیچ فاصله‌ای بین \fIsymbol\fR، علامت مساوی («\fB=\fR») و \fIexpression\fR وجود داشته باشد. .Sp پیونددهنده آرگومان‌های \fB\-\-defsym\fR و \fB\-T\fR را به ترتیب پردازش می‌کند؛ قرار دادن \fB\-\-defsym\fR قبل از \fB\-T\fR نماد را پیش از پردازش اسکریپت پیونددهنده از \fB\-T\fR تعریف می‌کند، در حالی که قرار دادن \fB\-\-defsym\fR بعد از \fB\-T\fR نماد را پس از پردازش اسکریپت پیونددهنده تعریف خواهد کرد. این تفاوت برای عباراتی در اسکریپت پیونددهنده که از نمادهای \fB\-\-defsym\fR استفاده می‌کنند پیامدهایی دارد؛ انتخاب ترتیب صحیح به هدف مورد نظر شما بستگی دارد. .IP \fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR 4 .IX Item "--demangle[=style]" .PD 0 .IP \fB\-\-no\-demangle\fR 4 .IX Item "--no-demangle" .PD این گزینه‌ها تعیین می‌کنند که آیا نام نمادها در پیام‌های خطا و سایر خروجی‌ها ناهموارزدایی (demangle) شوند یا خیر. هنگامی که به پیونددهنده دستور ناهموارزدایی داده می‌شود، تلاش می‌کند نام نمادها را به شکلی خوانا نمایش دهد: اگر در قالب فایل شیء از زیرخط‌های ابتدایی استفاده شده باشد آن‌ها را حذف می‌کند و نام‌های درهم‌ریختهٔ (mangled) نمادهای ++C را به نام‌های قابل خواندن برای کاربر تبدیل می‌نماید. کامپایلرهای مختلف شیوه‌های درهم‌ریزی متفاوتی دارند. آرگومان اختیاری شیوه می‌تواند برای انتخاب شیوهٔ ناهموارزدایی متناسب با کامپایلر شما استفاده شود. پیونددهنده به طور پیش‌فرض ناهموارزدایی را انجام می‌دهد مگر اینکه متغیر محیطی \fBCOLLECT_NO_DEMANGLE\fR تنظیم شده باشد. این گزینه‌ها می‌توانند برای بازنویسی رفتار پیش‌فرض به کار روند. .IP \fB\-I\fR\fIfile\fR 4 .IX Item "-Ifile" .PD 0 .IP \fB\-\-dynamic\-linker=\fR\fIfile\fR 4 .IX Item "--dynamic-linker=file" .PD نام پیونددهندهٔ پویا را تعیین می‌کند. این گزینه تنها هنگام تولید فایل‌های اجرایی ELF با پیوند پویا کاربرد دارد. پیونددهندهٔ پویای پیش‌فرض معمولاً صحیح است؛ از این گزینه استفاده نکنید مگر اینکه بدانید دقیقاً چه کاری انجام می‌دهید. .IP \fB\-\-no\-dynamic\-linker\fR 4 .IX Item "--no-dynamic-linker" هنگام تولید یک فایل اجرایی، درخواست پیونددهندهٔ پویا برای استفاده در زمان بارگذاری را نادیده می‌گیرد. این گزینه تنها برای فایل‌های اجرایی ELF که شامل بازآرایی‌های پویا هستند کاربرد دارد، و معمولاً نیازمند کد نقطهٔ ورودی (entry point) است که قادر به پردازش این بازآرایی‌ها باشد. .IP \fB\-\-embedded\-relocs\fR 4 .IX Item "--embedded-relocs" این گزینه مشابه گزینهٔ \fB\-\-emit\-relocs\fR است، با این تفاوت که بازآرایی‌ها در بخشی خاصِ هدف ذخیره می‌شوند. این گزینه تنها توسط هدف‌های \fBBFIN\fR، \fBCR16\fR و \fIM68K\fR پشتیبانی می‌شود. .IP \fB\-\-disable\-multiple\-abs\-defs\fR 4 .IX Item "--disable-multiple-abs-defs" تعاریف چندگانه برای نمادهای موجود در فایل فراخوانی‌شده توسط \-R یا \-\-just\-symbols را مجاز نمی‌داند. .IP \fB\-\-fatal\-warnings\fR 4 .IX Item "--fatal-warnings" .PD 0 .IP \fB\-\-no\-fatal\-warnings\fR 4 .IX Item "--no-fatal-warnings" .PD تمام هشدارها را به عنوان خطا در نظر می‌گیرد. رفتار پیش‌فرض را می‌توان با گزینهٔ \fB\-\-no\-fatal\-warnings\fR بازگرداند..IP \fB\-w\fR 4 .IX Item "-w" .PD 0 .IP \fB\-\-no\-warnings\fR 4 .IX Item "--no-warnings" .PD هیچ پیام هشدار یا خطایی را نمایش نمی‌دهد. این گزینه در صورت فعال بودن \&\fB\-\-fatal\-warnings\fR، اثر آن را لغو می‌کند. این گزینه زمانی می‌تواند به کار رود که مشخص است فایل باینری خروجی کار نخواهد کرد، اما همچنان نیاز به ایجاد آن وجود دارد. .IP \fB\-\-force\-exe\-suffix\fR 4 .IX Item "--force-exe-suffix" اطمینان حاصل می‌کند که فایل خروجی دارای پسوند .exe باشد. .Sp اگر یک فایل خروجی با پیوند کامل که با موفقیت ساخته شده است، پسوند \&\f(CW\*(C`.exe\*(C'\fR یا \f(CW\*(C`.dll\*(C'\fR نداشته باشد، این گزینه پیونددهنده را وادار می‌کند تا فایل خروجی را در فایلی با همان نام و پسوند \f(CW\*(C`.exe\*(C'\fR رونوشت کند. این گزینه هنگام استفاده از makefileهای دست‌نخوردهٔ Unix در یک میزبان Microsoft Windows مفید است، چرا که برخی نسخه‌های Windows یک ایمیج را اجرا نمی‌کنند مگر اینکه به پسوند \f(CW\*(C`.exe\*(C'\fR ختم شود. .IP \fB\-\-gc\-sections\fR 4 .IX Item "--gc-sections" .PD 0 .IP \fB\-\-no\-gc\-sections\fR 4 .IX Item "--no-gc-sections" .PD جمع‌آوری زبالهٔ بخش‌های ورودی استفاده‌نشده را فعال می‌کند. این گزینه روی مقصدهایی که از آن پشتیبانی نمی‌کنند نادیده گرفته می‌شود. رفتار پیش‌فرض (عدم انجام این جمع‌آوری زباله) را می‌توان با تعیین \&\fB\-\-no\-gc\-sections\fR در خط فرمان بازگرداند. توجه داشته باشید که جمع‌آوری زباله برای مقصدهای با قالب COFF و PE پشتیبانی می‌شود، اما پیاده‌سازی آن در حال حاضر آزمایشی در نظر گرفته می‌شود. .Sp گزینهٔ \&\fB\-\-gc\-sections\fR با بررسی نمادها و بازنشانی‌ها تصمیم می‌گیرد که کدام بخش‌های ورودی استفاده شده‌اند. بخشی که حاوی نماد ورود (entry symbol) است و تمام بخش‌های حاوی نمادهایی که در خط فرمان تعریف نشده‌اند نگه‌داشته خواهند شد، و همین‌طور بخش‌هایی که حاوی نمادهای ارجاع‌شده توسط اشیاء پویا هستند. توجه داشته باشید که هنگام ساخت کتابخانه‌های مشترک، پیونددهنده باید فرض کند که به هر نماد قابل‌مشاهده‌ای ارجاع داده شده است. پس از تعیین این مجموعهٔ اولیه از بخش‌ها، پیونددهنده به‌طور بازگشتی هر بخشی را که توسط بازنشانی‌های آن‌ها ارجاع داده شده باشد به‌عنوان استفاده‌شده نشانه‌گذاری می‌کند. گزینه‌های \fB\-\-entry\fR، \fB\-\-undefined\fR، و \&\fB\-\-gc\-keep\-exported\fR را ببینید. .Sp این گزینه می‌تواند هنگام انجام یک پیوند جزئی (فعال‌شده با گزینهٔ \&\fB\-r\fR) نیز تنظیم شود. در این حالت، ریشهٔ نمادهای نگه‌داشته‌شده باید صراحتاً توسط یکی از گزینه‌های \fB\-\-entry\fR، \&\fB\-\-undefined\fR، یا \fB\-\-gc\-keep\-exported\fR، و یا با دستور \f(CW\*(C`ENTRY\*(C'\fR در اسکریپت پیونددهنده مشخص شود. .Sp به‌عنوان یک افزونهٔ GNU، بخش‌های ورودی ELF که با پرچم \&\f(CW\*(C`SHF_GNU_RETAIN\*(C'\fR علامت‌گذاری شده باشند مشمول جمع‌آوری زباله نخواهند شد. .IP \fB\-\-print\-gc\-sections\fR 4 .IX Item "--print-gc-sections" .PD 0 .IP \fB\-\-no\-print\-gc\-sections\fR 4 .IX Item "--no-print-gc-sections" .PD فهرست تمام بخش‌های حذف‌شده توسط جمع‌آوری زباله را ارائه می‌دهد. این فهرست در stderr چاپ می‌شود. این گزینه تنها در صورتی مؤثر است که جمع‌آوری زباله از طریق گزینهٔ \fB\-\-gc\-sections\fR فعال شده باشد. رفتار پیش‌فرض (فهرست نکردن بخش‌های حذف‌شده) را می‌توان با تعیین \fB\-\-no\-print\-gc\-sections\fR در خط فرمان بازگرداند. .IP \fB\-\-gc\-keep\-exported\fR 4 .IX Item "--gc-keep-exported" هنگامی که \fB\-\-gc\-sections\fR فعال باشد، این گزینه از جمع‌آوری زبالهٔ بخش‌های ورودی استفاده‌نشده‌ای که حاوی نمادهای سراسری با پدیداری پیش‌فرض یا محافظت‌شده هستند جلوگیری می‌کند. این گزینه برای فایل‌های اجرایی کاربرد دارد که در غیر این صورت، بخش‌های ارجاع‌داده‌نشده صرف‌نظر از پدیداری خارجی نمادهای موجود، جمع‌آوری زباله می‌شدند. توجه داشته باشید که این گزینه هنگام پیوند اشیاء مشترک (shared objects) هیچ تأثیری ندارد، زیرا این رفتار از پیش رفتار پیش‌فرض آن‌ها است. این گزینه فقط برای مقصدهای با قالب ELF پشتیبانی می‌شود. .IP \fB\-\-print\-output\-format\fR 4 .IX Item "--print-output-format" نام قالب خروجی پیش‌فرض را چاپ می‌کند (که ممکن است تحت تأثیر دیگر گزینه‌های خط فرمان قرار گرفته باشد). این همان رشته‌ای است که در دستور اسکریپت پیونددهندهٔ \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR ظاهر می‌شود. .IP \fB\-\-print\-memory\-usage\fR 4 .IX Item "--print-memory-usage" اندازهٔ مصرف‌شده، اندازهٔ کل، و میزان استفادهٔ ناحیه‌های حافظهٔ ایجادشده با دستور \fBMEMORY\fR را چاپ می‌کند. این گزینه در مقصدهای تعبیه‌شده برای داشتن یک دید سریع از مقدار حافظهٔ آزاد مفید است. قالب خروجی دارای یک سطر عنوان و یک خط به ازای هر ناحیه است. این خروجی هم برای انسان خوانا است و هم به‌راحتی توسط ابزارها قابل تجزیه است. نمونه‌ای از خروجی به شکل زیر است: .Sp .Vb 3 \& Memory region Used Size Region Size %age Used \& ROM: 256 KB 1 MB 25.00% \& RAM: 32 B 2 GB 0.00% .Ve .Sp نکته: اگر می‌خواهید از میزان مصرف حافظه توسط خودِ پیونددهنده مطلع شوید، گزینهٔ \fB\-\-stats\fR این کار را انجام می‌دهد. .IP \fB\-\-help\fR 4 .IX Item "--help" خلاصه‌ای از گزینه‌های خط فرمان را در خروجی استاندارد چاپ کرده و خارج می‌شود. .IP \fB\-\-target\-help\fR 4 .IX Item "--target-help" خلاصه‌ای از تمام گزینه‌های ویژهٔ مقصد را در خروجی استاندارد چاپ کرده و خارج می‌شود. .IP \fB\-Map=\fR\fImapfile\fR 4 .IX Item "-Map=mapfile" یک نگاشت پیوند (link map) را در فایل \fImapfile\fR چاپ می‌کند. توضیحات گزینهٔ \&\fB\-M\fR در بالا را ببینید. اگر \fImapfile\fR صرفاً نویسهٔ \&\f(CW\*(C`\-\*(C'\fR باشد، نگاشت در stdout نوشته خواهد شد. .Sp مشخص کردن یک دایرکتوری به عنوان \fImapfile\fR باعث می‌شود نگاشت پیونددهنده به صورت یک فایل در داخل آن دایرکتوری نوشته شود. معمولاً نام فایل در داخل دایرکتوری به صورت نام پایهٔ (basename) فایل \fIoutput\fR به همراه پسوند افزودهٔ \f(CW\*(C`.map\*(C'\fR محاسبه می‌شود. با این حال، اگر نویسهٔ ویژهٔ \&\f(CW\*(C`%\*(C'\fR استفاده شود، این نویسه با مسیر کامل فایل خروجی جایگزین خواهد شد. علاوه بر این، اگر نویسه‌ای بعد از نماد \&\fI%\fR بیاید، دیگر \f(CW\*(C`.map\*(C'\fR اضافه نخواهد شد. .Sp .Vb 10 \& \-o foo.exe \-Map=bar [Creates ./bar] \& \-o ../dir/foo.exe \-Map=bar [Creates ./bar] \& \-o foo.exe \-Map=../dir [Creates ../dir/foo.exe.map] \& \-o ../dir2/foo.exe \-Map=../dir [Creates ../dir/foo.exe.map] \& \-o foo.exe \-Map=% [Creates ./foo.exe.map] \& \-o ../dir/foo.exe \-Map=% [Creates ../dir/foo.exe.map] \& \-o foo.exe \-Map=%.bar [Creates ./foo.exe.bar] \& \-o ../dir/foo.exe \-Map=%.bar [Creates ../dir/foo.exe.bar] \& \-o ../dir2/foo.exe \-Map=../dir/% [Creates ../dir/../dir2/foo.exe.map] \& \-o ../dir2/foo.exe \-Map=../dir/%.bar [Creates ../dir/../dir2/foo.exe.bar] .Ve .Sp مشخص کردن بیش از یک نویسهٔ \f(CW\*(C`%\*(C'\fR خطا است. .Sp اگر فایل نگاشت از قبل وجود داشته باشد، با این عملیات بازنویسی خواهد شد. .IP \fB\-\-no\-keep\-memory\fR 4 .IX Item "--no-keep-memory" \&\fBld\fR به طور معمول با ذخیرهٔ جدول نمادهای فایل‌های ورودی در حافظهٔ موقت، سرعت را بر میزان مصرف حافظه اولویت می‌دهد. این گزینه به \fBld\fR اعلام می‌کند که در عوض، با خواندن دوبارهٔ جدول‌های نماد در صورت نیاز، مصرف حافظه را بهینه‌سازی کند. این امر ممکن است زمانی که \fBld\fR هنگام پیوند یک فایل اجرایی بزرگ با کمبود فضای حافظه مواجه می‌شود، لازم باشد. .IP \fB\-\-no\-undefined\fR 4 .IX Item "--no-undefined" .PD 0 .IP "\fB\-z defs\fR" 4 .IX Item "-z defs" .PD ارجاع‌های حل‌نشده به نمادها را از فایل‌های شیء معمولی گزارش می‌کند. این کار حتی اگر پیونددهنده در حال ایجاد یک کتابخانه مشترک غیرنمادین (non-symbolic) باشد نیز انجام می‌شود. سوئیچ \fB\-\-[no\-]allow\-shlib\-undefined\fR رفتار گزارش ارجاع‌های حل‌نشدهٔ موجود در کتابخانه‌های مشترکِ در حال پیوند را کنترل می‌کند. .Sp اثرات این گزینه را می‌توان با استفاده از \f(CW\*(C`\-z undefs\*(C'\fR خنثی کرد. .IP \fB\-\-allow\-multiple\-definition\fR 4 .IX Item "--allow-multiple-definition" .PD 0 .IP "\fB\-z muldefs\fR" 4 .IX Item "-z muldefs" .PD به طور معمول زمانی که یک نماد چندین بار تعریف شده باشد، پیونددهنده یک خطای مهلک گزارش می‌کند. این گزینه‌ها تعریف‌های چندگانه را مجاز می‌شمارند و از اولین تعریف استفاده خواهد شد. .IP \fB\-\-allow\-shlib\-undefined\fR 4 .IX Item "--allow-shlib-undefined" .PD 0 .IP \fB\-\-no\-allow\-shlib\-undefined\fR 4 .IX Item "--no-allow-shlib-undefined" .PD نمادهای تعریف‌نشده در کتابخانه‌های مشترک را مجاز یا غیرمجاز می‌کند. این سوئیچ شبیه به \fB\-\-no\-undefined\fR است، با این تفاوت که رفتار مربوط به زمانی را مشخص می‌کند که نمادهای تعریف‌نشده در یک کتابخانه مشترک هستند، نه یک فایل شیء معمولی. این گزینه بر نحوهٔ رسیدگی به نمادهای تعریف‌نشده در فایل‌های شیء معمولی اثری ندارد. .Sp رفتار پیش‌فرض این است که اگر پیونددهنده برای ساخت یک فایل اجرایی به کار رود، برای هر نماد تعریف‌نشده که در کتابخانه‌های مشترک به آن ارجاع شده خطا گزارش کند، اما اگر پیونددهنده برای ایجاد یک کتابخانه مشترک به کار رود، آن‌ها را مجاز بداند. .Sp دلایل مجاز دانستن ارجاع به نمادهای تعریف‌نشده در کتابخانه‌های مشترک مشخص‌شده در زمان پیوند عبارتند از اینکه: .RS 4.IP \(bu 4 ممکن است یک کتابخانه اشتراکی مشخص‌شده در زمان پیوند با کتابخانه‌ای که در زمان بارگذاری موجود است یکسان نباشد، بنابراین نماد ممکن است در واقع در زمان بارگذاری قابل حل باشد. .IP \(bu 4 برخی سیستم‌عامل‌ها مانند BeOS و HPPA وجود دارند که در آن‌ها نمادهای تعریف‌نشده در کتابخانه‌های اشتراکی امری عادی است. .Sp به عنوان مثال، هسته BeOS کتابخانه‌های اشتراکی را در زمان بارگذاری پچ می‌کند تا هر تابعی را که برای معماری فعلی مناسب‌تر است انتخاب کند. این کار، برای نمونه، جهت انتخاب پویای یک تابع مناسب memset استفاده می‌شود. .RE .RS 4 .RE .IP \fB\-\-error\-handling\-script=\fR\fIscriptname\fR 4 .IX Item "--error-handling-script=scriptname" اگر این گزینه مشخص شود، هرگاه خطایی رخ دهد، پیونددهنده \&\fIscriptname\fR را فراخوانی می‌کند. با این حال در حال حاضر تنها دو نوع خطا پشتیبانی می‌شوند: نمادهای مفقود و کتابخانه‌های مفقود. دو آرگومان به اسکریپت ارسال خواهد شد: کلیدواژه "undefined\-symbol" یا \`missing\-lib" و \fIname\fR نماد تعریف‌نشده یا کتابخانه مفقود. هدف این است که اسکریپت پیشنهادهایی را در خصوص اینکه نماد یا کتابخانه ممکن است کجا یافت شود به کاربر ارائه دهد. پس از پایان اجرای اسکریپت، پیام خطای معمول پیونددهنده نمایش داده خواهد شد. .Sp در دسترس بودن این گزینه توسط یک سوییچ در زمان پیکربندی کنترل می‌شود، بنابراین ممکن است در پیاده‌سازی‌های خاصی موجود نباشد. .IP \fB\-\-no\-undefined\-version\fR 4 .IX Item "--no-undefined-version" به‌طور معمول وقتی نمادی دارای نسخه تعریف‌نشده باشد، پیونددهنده آن را نادیده می‌گیرد. این گزینه نمادهای دارای نسخه تعریف‌نشده را مجاز نمی‌داند و در عوض یک خطای مهلک صادر خواهد شد. .IP \fB\-\-default\-symver\fR 4 .IX Item "--default-symver" ایجاد و استفاده از یک نسخه پیش‌فرض نماد (soname) برای نمادهای صادرشده بدون نسخه. .IP \fB\-\-default\-imported\-symver\fR 4 .IX Item "--default-imported-symver" ایجاد و استفاده از یک نسخه پیش‌فرض نماد (soname) برای نمادهای واردشده بدون نسخه. .IP \fB\-\-no\-warn\-mismatch\fR 4 .IX Item "--no-warn-mismatch" به‌طور معمول اگر سعی کنید فایل‌های ورودی را که به دلیلی ناهماهنگ هستند—شاید به این دلیل که برای پردازنده‌های متفاوت یا برای اندیان‌های متفاوتی کامپایل شده‌اند—به هم پیوند دهید، \fBld\fR یک خطا صادر می‌کند. این گزینه به \fBld\fR می‌گوید که باید در سکوت چنین خطاهای احتمالی را مجاز بداند. این گزینه باید تنها با احتیاط و در مواردی استفاده شود که تدابیر ویژه‌ای اتخاذ کرده‌اید که اطمینان می‌دهد خطاهای پیونددهنده نابجا هستند. .IP \fB\-\-no\-warn\-search\-mismatch\fR 4 .IX Item "--no-warn-search-mismatch" به‌طور معمول اگر \fBld\fR در حین جستجوی کتابخانه، یک کتابخانه ناسازگار بیابد اخطار می‌دهد. این گزینه اخطار را بی‌صدا می‌کند. .IP \fB\-\-no\-whole\-archive\fR 4 .IX Item "--no-whole-archive" غیرفعال کردن اثر گزینه \fB\-\-whole\-archive\fR برای فایل‌های آرشیو بعدی. .IP \fB\-\-noinhibit\-exec\fR 4 .IX Item "--noinhibit-exec" نگه‌داشتن فایل خروجی اجرایی تا زمانی که هنوز قابل استفاده است. به‌طور معمول، اگر پیونددهنده در طول فرآیند پیوند با خطایی مواجه شود، فایل خروجی تولید نمی‌کند؛ با صدور هرگونه خطایی بدون نوشتن فایل خروجی خارج می‌شود. .IP \fB\-nostdlib\fR 4 .IX Item "-nostdlib" تنها دایرکتوری‌های کتابخانه‌ای را جستجو می‌کند که صریحاً در خط فرمان مشخص شده‌اند. دایرکتوری‌های کتابخانه مشخص‌شده در اسکریپت‌های پیونددهنده (از جمله اسکریپت‌های پیونددهنده‌ای که در خط فرمان مشخص شده‌اند) نادیده گرفته می‌شوند. .IP \fB\-\-oformat=\fR\fIoutput\-format\fR 4 .IX Item "--oformat=output-format" ممکن است \&\fBld\fR برای پشتیبانی از بیش از یک نوع فایل شیء پیکربندی شده باشد. اگر \fBld\fR شما به این شکل پیکربندی شده باشد، می‌توانید از گزینه \&\fB\-\-oformat\fR برای تعیین قالب باینری فایل شیء خروجی استفاده کنید. حتی زمانی که \fBld\fR برای پشتیبانی از قالب‌های شیء جایگزین پیکربندی شده باشد، معمولاً نیازی به مشخص کردن آن ندارید، زیرا \fBld\fR باید طوری پیکربندی شده باشد که به عنوان قالب خروجی پیش‌فرض، معمول‌ترین قالب روی هر ماشین را تولید کند. \fIoutput\-format\fR یک رشته متنی است؛ نام قالبی خاص که توسط کتابخانه‌های BFD پشتیبانی می‌شود. (می‌توانید قالب‌های باینری موجود را با \fBobjdump \-i\fR فهرست کنید.) دستور اسکریپت \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR نیز می‌تواند قالب خروجی را مشخص کند، اما این گزینه اولویت بالاتری نسبت به آن دارد. .IP "\fB\-\-out\-implib\fR \fIfile\fR" 4 .IX Item "--out-implib file" ایجاد یک کتابخانه واردات در \fIfile\fR متناظر با فایل اجرایی که پیونددهنده در حال تولید آن است (مانند یک DLL یا برنامه ELF). این کتابخانه واردات (که برای DLLها باید \f(CW\*(C`*.dll.a\*(C'\fR یا \f(CW\*(C`*.a\*(C'\fR نامیده شود) ممکن است برای پیوند دادن کلاینت‌ها با فایل اجرایی تولیدشده استفاده شود؛ این رفتار امکان صرف‌نظر کردن از مرحله مجزای ایجاد کتابخانه واردات (مانند \f(CW\*(C`dlltool\*(C'\fR برای DLLها) را فراهم می‌سازد. این گزینه تنها برای پورت‌های پیونددهنده‌ای که هدف آن‌ها i386 PE و ELF است در دسترس می‌باشد. .IP \fB\-pie\fR 4 .IX Item "-pie" .PD 0 .IP \fB\-\-pic\-executable\fR 4 .IX Item "--pic-executable" .PD ایجاد یک فایل اجرایی مستقل از موقعیت. این قابلیت در حال حاضر تنها روی بسترهای ELF پشتیبانی می‌شود. فایل‌های اجرایی مستقل از موقعیت توسط پیونددهنده پویا به نشانی مجازی که سیستم‌عامل برای آن‌ها انتخاب می‌کند، بازنشانی می‌شوند که می‌تواند بین دفعات مختلف اجرا متفاوت باشد. آن‌ها در سربرگ فایل ELF با ET_DYN علامت‌گذاری می‌شوند، اما از جهات متعددی با کتابخانه‌های اشتراکی تفاوت دارند. به‌ویژه، نمادهای تعریف‌شده در یک PIE به‌طور پیش‌فرض برخلاف کتابخانه‌های اشتراکی نمی‌توانند توسط شیء دیگری رونویسی شوند. .IP \fB\-no\-pie\fR 4 .IX Item "-no-pie" ایجاد یک فایل اجرایی وابسته به موقعیت. این حالت پیش‌فرض است. .IP \fB\-qmagic\fR 4 .IX Item "-qmagic" این گزینه برای سازگاری با Linux نادیده گرفته می‌شود. .IP \fB\-Qy\fR 4 .IX Item "-Qy" این گزینه برای سازگاری با SVR4 نادیده گرفته می‌شود. .IP \fB\-\-relax\fR 4 .IX Item "--relax" .PD 0 .IP \fB\-\-no\-relax\fR 4 .IX Item "--no-relax" .PD گزینه‌ای با اثرات وابسته به ماشین. این گزینه فقط روی چند مقصد پشتیبانی می‌شود. .Sp در برخی بسترها، گزینه \fB\-\-relax\fR بهینه‌سازی‌های سراسری و مختص مقصدی را انجام می‌دهد که با حل کردن آدرس‌دهی‌ها در برنامه توسط پیونددهنده ممکن می‌شوند؛ مانند ساده‌سازی حالت‌های آدرس‌دهی، ایجاد دستورالعمل‌های جدید، انتخاب نسخه‌های کوتاه‌تر از دستورالعمل‌های فعلی، و ادغام مقادیر ثابت. .Sp در برخی بسترها، این بهینه‌سازی‌های سراسری در زمان پیوند ممکن است خطایابی نمادین فایل اجرایی حاصل را غیرممکن سازند. مشخص شده است که این مورد برای خانواده پردازنده‌های Matsushita MN10200 و MN10300 رخ می‌دهد. .Sp در بسترهایی که این ویژگی پشتیبانی می‌شود، گزینه \&\fB\-\-no\-relax\fR آن را غیرفعال خواهد کرد. .Sp در بسترهایی که این ویژگی پشتیبانی نمی‌شود، هر دو گزینه \fB\-\-relax\fR و \fB\-\-no\-relax\fR پذیرفته می‌شوند، اما نادیده گرفته خواهند شد. .IP \fB\-\-retain\-symbols\-file=\fR\fIfilename\fR 4 .IX Item "--retain-symbols-file=filename" \fIفقط\fR نگه‌داشتن نمادهای فهرست‌شده در فایل \fIfilename\fR و کنار گذاشتن سایر نمادها. \fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. این گزینه به‌ویژه در محیط‌هایی (مانند VxWorks) که یک جدول نمادهای سراسری بزرگ به‌تدریج انباشته می‌شود، برای صرفه‌جویی در حافظه زمان اجرا مفید است. .Sp گزینه \&\fB\-\-retain\-symbols\-file\fR نمادهای تعریف‌نشده یا نمادهای مورد نیاز برای بازنشانی‌ها را کنار \fIنمی‌گذارد\fR. .Sp شما تنها می‌توانید یک بار \fB\-\-retain\-symbols\-file\fR را در خط فرمان مشخص کنید. این گزینه بر \fB\-s\fR و \fB\-S\fR اولویت دارد و آن‌ها را لغو می‌کند. .IP \fB\-rpath=\fR\fIdir\fR 4 .IX Item "-rpath=dir" افزودن یک دایرکتوری به مسیر جستجوی کتابخانه در زمان اجرا. این گزینه هنگام پیوند دادن یک فایل اجرایی ELF با اشیاء اشتراکی استفاده می‌شود. تمام آرگومان‌های \fB\-rpath\fR به یکدیگر الحاق شده و به پیونددهنده زمان اجرا ارسال می‌شوند که از آن‌ها برای مکان‌یابی اشیاء اشتراکی در زمان اجرا استفاده می‌کند. .Sp گزینه \fB\-rpath\fR همچنین هنگام مکان‌یابی اشیاء اشتراکی که مورد نیاز اشیاء اشتراکی صریحاً گنجانده‌شده در پیوند هستند، به کار می‌رود؛ توضیحات مربوط به گزینه \fB\-rpath\-link\fR را ببینید. جستجوی \fB\-rpath\fR به این روش تنها توسط پیونددهنده‌های بومی و پیونددهنده‌های متقاطع که با گزینه \fB\-\-with\-sysroot\fR پیکربندی شده‌اند پشتیبانی می‌شود. .Sp اگر هنگام پیوند یک فایل اجرایی ELF از \fB\-rpath\fR استفاده نشود، در صورت تعریف بودن متغیر محیطی \f(CW\*(C`LD_RUN_PATH\*(C'\fR، محتویات آن به کار گرفته خواهد شد. .Sp گزینه \fB\-rpath\fR می‌تواند روی SunOS نیز استفاده شود. به‌طور پیش‌فرض، در SunOS، پیونددهنده یک مسیر جستجوی زمان اجرا را از تمام گزینه‌های \&\fB\-L\fR داده‌شده به آن تشکیل می‌دهد. اگر گزینه \fB\-rpath\fR استفاده شود، مسیر جستجوی زمان اجرا منحصراً با استفاده از گزینه‌های \fB\-rpath\fR و بدون توجه به گزینه‌های \fB\-L\fR تشکیل خواهد شد. این ویژگی می‌تواند هنگام استفاده از gcc مفید باشد، چرا که گزینه‌های \fB\-L\fR زیادی را می‌افزاید که ممکن است روی سیستم‌های فایل متصل‌شده از طریق NFS قرار داشته باشند. .Sp برای سازگاری با سایر پیونددهنده‌های ELF، اگر پس از گزینه \fB\-R\fR یک نام دایرکتوری بیاید نه یک نام فایل، با آن مانند گزینه \fB\-rpath\fR رفتار می‌شود..IP \fB\-rpath\-link=\fR\fIdir\fR 4 .IX Item "-rpath-link=dir" هنگام استفاده از ELF یا SunOS، ممکن است یک کتابخانه اشتراکی به کتابخانه دیگری نیاز داشته باشد. این اتفاق زمانی رخ می‌دهد که یک پیوند \f(CW\*(C`ld \-shared\*(C'\fR شامل یک کتابخانه اشتراکی به عنوان یکی از فایل‌های ورودی باشد. .Sp هنگامی که پیونددهنده در زمان انجام یک پیوند غیر اشتراکی و غیر قابل بازمکانیابی (non\-relocatable) با چنین وابستگی مواجه می‌شود، در صورتی که کتابخانه اشتراکی مورد نیاز به صورت صریح گنجانده نشده باشد، به طور خودکار سعی می‌کند آن را پیدا کرده و در پیوند بگنجاند. در چنین حالتی، چندین دایرکتوری به شرح زیر جستجو می‌شوند. گزینه \fB\-rpath\-link\fR نخستین مجموعه از دایرکتوری‌ها را برای جستجو مشخص می‌کند. این گزینه می‌تواند دنباله‌ای از نام‌های دایرکتوری را چه با ارائه فهرستی از نام‌ها که با دو نقطه از هم جدا شده‌اند، یا با تکرار چندین باره این گزینه، مشخص کند. .Sp نشانه‌های \fR\f(CI$ORIGIN\fR\fI\fR و \fI\fR\f(CI$LIB\fR\fI\fR می‌توانند در این دایرکتوری‌های جستجو ظاهر شوند. این نشانه‌ها با مسیر کامل به دایرکتوری حاوی برنامه یا شیء اشتراکی در مورد \fI\fR\f(CI$ORIGIN\fR\fI\fR، و با \fBlib\fR \- برای باینری‌های ۳۲ بیتی \- یا \fBlib64\fR \- برای باینری‌های ۶۴ بیتی \- در مورد \fI\fR\f(CI$LIB\fR\fI\fR جایگزین خواهند شد. .Sp فرم جایگزین این نشانه‌ها \- \fI${ORIGIN}\fR و \&\fI${LIB}\fR \- نیز می‌تواند استفاده شود. نشانه \fR\f(CI$PLATFORM\fR\fI\fR پشتیبانی نمی‌شود. .Sp گزینه \fB\-\-rpath\-link\fR باید با احتیاط استفاده شود، چرا که مسیر جستجویی را که ممکن است به صورت سخت در یک کتابخانه اشتراکی کامپایل شده باشد بازنویسی می‌کند. در چنین حالتی این امکان وجود دارد که ناخواسته از مسیر جستجوی متفاوتی نسبت به آنچه پیونددهنده زمان اجرا استفاده می‌کرد، استفاده شود. .Sp هنگامی که کتابخانه‌های اشتراکی اضافی مورد نیاز باشند، پیونددهنده دایرکتوری‌ها را به ترتیبی که در زیر آمده است برای یافتن آن‌ها جستجو می‌کند. با این حال توجه داشته باشید که این موضوع فقط برای کتابخانه‌های اضافیِ مورد نیاز جهت برآورده کردن وابستگی‌های کتابخانه‌های اشتراکی از پیش گنجانده شده صدق می‌کند. این مورد شامل کتابخانه‌هایی که از طریق گزینه خط فرمان \fB\-l\fR گنجانده شده‌اند \fIنمی‌شود\fR. جستجو برای کتابخانه‌های \fB\-l\fR تنها در دایرکتوری‌های مشخص‌شده توسط گزینه \fB\-L\fR انجام می‌شود. .RS 4 .IP 1. 4 هر دایرکتوری مشخص‌شده با گزینه‌های \fB\-rpath\-link\fR. .IP 2. 4 هر دایرکتوری مشخص‌شده با گزینه‌های \fB\-rpath\fR. تفاوت میان \fB\-rpath\fR و \fB\-rpath\-link\fR در این است که دایرکتوری‌های مشخص‌شده با گزینه‌های \fB\-rpath\fR در فایل اجرایی گنجانده شده و در زمان اجرا استفاده می‌شوند، در حالی که گزینه \fB\-rpath\-link\fR تنها در زمان پیوند مؤثر است. جستجوی \fB\-rpath\fR به این روش تنها توسط پیونددهنده‌های بومی (native) و پیونددهنده‌های متقاطع (cross linkers) که با گزینه \fB\-\-with\-sysroot\fR پیکربندی شده‌اند پشتیبانی می‌شود. .IP 3. 4 در یک سیستم ELF، برای پیونددهنده‌های بومی، در صورتی که از گزینه‌های \fB\-rpath\fR و \&\fB\-rpath\-link\fR استفاده نشده باشد، محتویات متغیر محیطی \f(CW\*(C`LD_RUN_PATH\*(C'\fR جستجو می‌شود. .IP 4. 4 در SunOS، اگر از گزینه \fB\-rpath\fR استفاده نشده باشد، هر دایرکتوری مشخص‌شده با استفاده از گزینه‌های \fB\-L\fR جستجو می‌شود. .IP 5. 4 برای یک پیونددهنده بومی، محتویات متغیر محیطی \f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR جستجو می‌شود. .IP 6. 4 برای یک پیونددهنده بومی ELF، دایرکتوری‌های موجود در \f(CW\*(C`DT_RUNPATH\*(C'\fR یا \&\f(CW\*(C`DT_RPATH\*(C'\fR یک کتابخانه اشتراکی برای یافتن کتابخانه‌های اشتراکی مورد نیاز آن جستجو می‌شوند. در صورت وجود مدخل‌های \f(CW\*(C`DT_RUNPATH\*(C'\fR، مدخل‌های \f(CW\*(C`DT_RPATH\*(C'\fR نادیده گرفته می‌شوند. .IP 7. 4 برای یک پیونددهنده در سیستم Linux، در صورت وجود فایل \fI/etc/ld.so.conf\fR، فهرست دایرکتوری‌های یافت‌شده در آن فایل. نکته: در صورتی که مقدار \f(CW\*(C`sysroot\*(C'\fR تعریف شده باشد، مسیر این فایل با آن پیشوند می‌گیرد، و سپس اگر پیونددهنده با گزینه \fB\-\-prefix=\fR پیکربندی شده باشد، هر رشته \f(CW\*(C`prefix\*(C'\fR نیز پیشوند آن خواهد شد. .IP 8. 4 برای یک پیونددهنده بومی در سیستم FreeBSD، هر دایرکتوری مشخص‌شده توسط ماکروی \f(CW\*(C`_PATH_ELF_HINTS\*(C'\fR که در فایل سرایند \fIelf\-hints.h\fR تعریف شده است. .IP 9. 4 هر دایرکتوری مشخص‌شده با یک دستور \f(CW\*(C`SEARCH_DIR\*(C'\fR در اسکریپت پیونددهنده داده‌شده در خط فرمان، شامل اسکریپت‌های مشخص‌شده توسط \fB\-T\fR (اما نه \fB\-dT\fR). .IP 10. 4 دایرکتوری‌های پیش‌فرض، معمولاً \fI/lib\fR و \fI/usr/lib\fR. .IP 11. 4 هر دایرکتوری مشخص‌شده توسط یک افزونه LDPT_SET_EXTRA_LIBRARY_PATH. .IP 12. 4 هر دایرکتوری مشخص‌شده توسط یک دستور \f(CW\*(C`SEARCH_DIR\*(C'\fR در یک اسکریپت پیونددهنده پیش‌فرض. .RE .RS 4 .Sp با این حال، در سیستم‌های مبتنی بر Linux یک نکته مهم دیگر وجود دارد: اگر گزینه \fB\-\-as\-needed\fR فعال باشد \fIو\fR یک کتابخانه اشتراکی پیدا شود که در حالت عادی جستجو را برآورده می‌کند \fIو\fR این کتابخانه فاقد برچسب DT_NEEDED برای \fIlibc.so\fR باشد \fIو\fR در ادامه مجموعه دایرکتوری‌های جستجو کتابخانه اشتراکی دیگری وجود داشته باشد که آن هم جستجو را برآورده سازد \fIو\fR این کتابخانه دوم دارای برچسب DT_NEEDED برای \&\fIlibc.so\fR باشد، \fIآنگاه\fR کتابخانه دوم به جای کتابخانه اول انتخاب خواهد شد. .Sp اگر کتابخانه اشتراکی مورد نیاز یافت نشود، پیونددهنده یک هشدار صادر کرده و به پیوند ادامه می‌دهد. .RE .IP \fB\-\-section\-ordering\-file=\fR\fIscript\fR 4 .IX Item "--section-ordering-file=script" این گزینه برای گسترش اسکریپت پیونددهنده فعلی با نگاشت‌های اضافی از بخش‌های ورودی به بخش‌های خروجی استفاده می‌شود. این فایل باید از همان نحو برای \f(CW\*(C`SECTIONS\*(C'\fR که در اسکریپت‌های پیونددهنده معمولی استفاده می‌شود استفاده کند، اما نباید کاری به جز قرار دادن بخش‌های ورودی در بخش‌های خروجی انجام دهد. \f(CW@pxref\fR{SECTIONS} .Sp محدودیت دوم در مورد اسکریپت ترتیب‌بندی بخش این است که تنها می‌تواند به بخش‌های خروجی ارجاع دهد که از قبل توسط هر اسکریپت پیونددهنده‌ای که در حال حاضر استفاده می‌شود، تعریف شده باشند (یعنی اسکریپت پیونددهنده پیش‌فرض یا اسکریپتی که در خط فرمان مشخص شده است). با این حال، مزیت اسکریپت ترتیب‌بندی بخش این است که بخش‌های ورودی به ابتدای بخش‌های خروجی نگاشت می‌شوند، تا بتوانند ترتیب قرارگیری بخش‌ها را در بخش خروجی تضمین کنند. به عنوان مثال، تصور کنید که اسکریپت پیونددهنده پیش‌فرض به این شکل باشد: .Sp .Vb 4 \& SECTIONS { \& .text : { *(.text.hot) ; *(.text .text.*) } \& .data : { *(.data.big) ; *(.data .data.*) } \& } .Ve .Sp سپس اگر یک فایل ترتیب‌بندی بخش مانند این استفاده شود: .Sp .Vb 2 \& .text : { *(.text.first) ; *(.text.z*) } \& .data : { foo.o(.data.first) ; *(.data.small) } .Ve .Sp این معادل یک اسکریپت پیونددهنده به این صورت خواهد بود: .Sp .Vb 4 \& SECTIONS { \& .text : { *(.text.first) ; *(.text.z*) ; *(.text.hot) ; *(.text .text.*) } \& .data : { foo.o(.data.first) ; *(.data.small) ; *(.data.big) ; *(.data .data.*) } \& } .Ve .Sp مزیت فایل ترتیب‌بندی بخش این است که می‌توان از آن برای مرتب‌سازی آن بخش‌هایی که برای کاربر اهمیت دارند استفاده کرد، بدون نیاز به نگرانی درباره بخش‌های دیگر، یا نواحی حافظه، یا هر چیز دیگری. .IP \fB\-shared\fR 4 .IX Item "-shared" .PD 0 .IP \fB\-Bshareable\fR 4 .IX Item "-Bshareable" .PD یک کتابخانه اشتراکی ایجاد می‌کند. این مورد در حال حاضر تنها روی بسترهای ELF، XCOFF و SunOS پشتیبانی می‌شود. در SunOS، اگر از گزینه \fB\-e\fR استفاده نشده باشد و نمادهای تعریف‌نشده در پیوند وجود داشته باشند، پیونددهنده به طور خودکار یک کتابخانه اشتراکی ایجاد می‌کند. .IP \fB\-\-sort\-common\fR 4 .IX Item "--sort-common" .PD 0 .IP \fB\-\-sort\-common=ascending\fR 4 .IX Item "--sort-common=ascending" .IP \fB\-\-sort\-common=descending\fR 4 .IX Item "--sort-common=descending" .PD این گزینه به \fBld\fR می‌گوید که هنگام قرار دادن نمادهای عمومی (common symbols) در بخش‌های خروجی مناسب، آن‌ها را بر اساس تراز (alignment) به ترتیب صعودی یا نزولی مرتب کند. تراز نمادهای در نظر گرفته شده شانزده بایتی یا بزرگ‌تر، هشت بایتی، چهار بایتی، دو بایتی و یک بایتی هستند. این کار برای جلوگیری از ایجاد شکاف بین نمادها به دلیل محدودیت‌های تراز است. اگر هیچ ترتیبی برای مرتب‌سازی مشخص نشود، ترتیب نزولی در نظر گرفته می‌شود. .IP \fB\-\-sort\-section=name\fR 4 .IX Item "--sort-section=name" این گزینه \f(CW\*(C`SORT_BY_NAME\*(C'\fR را برای همه الگوهای نویسه‌عام بخش در اسکریپت پیونددهنده اعمال می‌کند. .IP \fB\-\-sort\-section=alignment\fR 4 .IX Item "--sort-section=alignment" این گزینه \f(CW\*(C`SORT_BY_ALIGNMENT\*(C'\fR را برای همه الگوهای نویسه‌عام بخش در اسکریپت پیونددهنده اعمال می‌کند. .IP \fB\-\-spare\-dynamic\-tags=\fR\fIcount\fR 4 .IX Item "--spare-dynamic-tags=count" این گزینه تعداد جایگاه‌های خالی برای باقی گذاشتن در بخش \&.dynamic از اشیاء اشتراکی ELF را مشخص می‌کند. ممکن است جایگاه‌های خالی توسط ابزارهای پس‌پردازش مانند prelinker مورد نیاز باشند. مقدار پیش‌فرض ۵ است..IP \fB\-\-split\-by\-file[=\fR\fIsize\fR\fB]\fR 4 .IX Item "--split-by-file[=size]" مشابه \fB\-\-split\-by\-reloc\fR است اما زمانی که به \fIsize\fR برسد، یک بخش خروجی جدید برای هر فایل ورودی ایجاد می‌کند. در صورت مشخص نشدن، مقدار پیش‌فرض \fIsize\fR برابر با ۱ است. .IP \fB\-\-split\-by\-reloc[=\fR\fIcount\fR\fB]\fR 4 .IX Item "--split-by-reloc[=count]" تلاش می‌کند تا بخش‌های اضافی در فایل خروجی ایجاد کند تا هیچ بخش خروجی منفردی در فایل شامل بیش از \fIcount\fR بازآرایی (relocation) نباشد. این گزینه هنگام تولید فایل‌های بازآرایی‌پذیر بزرگ برای بارگذاری در برخی هسته‌های بلادرنگ (real-time) با قالب فایل شیء COFF مفید است؛ چرا که COFF نمی‌تواند بیش از ۶۵۵۳۵ بازآرایی را در یک بخش منفرد نمایش دهد. توجه داشته باشید که این گزینه برای قالب‌های فایل شیء که از بخش‌های دلخواه پشتیبانی نمی‌کنند کار نخواهد کرد. پیونددهنده بخش‌های ورودی منفرد را برای توزیع مجدد تقسیم نمی‌کند، بنابراین اگر یک بخش ورودی منفرد شامل بیش از \fIcount\fR بازآرایی باشد، یک بخش خروجی نیز شامل همان تعداد بازآرایی خواهد بود. مقدار پیش‌فرض \fIcount\fR برابر با ۳۲۷۶۸ است. .IP \fB\-\-stats[=\fR\fIfilename\fR\fB]\fR 4 .IX Item "--stats[=filename]" محاسبه و نمایش آماری درباره عملکرد پیونددهنده، مانند زمان اجرا و میزان مصرف حافظه. .Sp اگر آرگومان اختیاری \fIfilename\fR ارائه نشود، تنها اطلاعات پایه‌ای گزارش شده و به جریان خروجی خطای استاندارد ارسال می‌شود. اگر آرگومان \fIfilename\fR داده شود، اطلاعات تکمیلی در فایل مشخص‌شده نوشته می‌شود. اگر \fIfilename\fR صرفاً روی نماد \fI\-\fR تنظیم شود، اطلاعات تکمیلی به جریان خروجی استاندارد فرستاده می‌شود. اگر \fIfilename\fR با \&\fI+\fR آغاز شود، فایل به‌جای بازنویسی، در حالت الحاق (append) باز می‌شود. .Sp اگر گزینه \fB\-Map\fR فعال شده باشد، این اطلاعات در فایل نگاشت (map file) نیز ثبت خواهد شد. نکته: اگر به هر دو گزینه \&\fB\-\-stats\fR و \fB\-Map\fR آرگومان‌های \&\fIfilename\fR داده شده و یکسان باشند، اطلاعات تنها یک بار نوشته خواهد شد و نه دو بار. .Sp اگر متغیر محیطی \f(CW\*(C`LD_STATS\*(C'\fR تعریف شده باشد، رفتاری مشابه گزینه \fB\-\-stats\fR خواهد داشت. اگر مقدار این متغیر یک رشته باشد، به‌عنوان نام فایلی که اطلاعات باید در آن ثبت شود استفاده خواهد شد. در غیر این صورت اطلاعات به جریان خروجی استاندارد ارسال می‌شود. استفاده از متغیر محیطی امکان ثبت آمار را بدون نیاز به تغییر خط فرمان پیونددهنده فراهم می‌کند. نکته: اگر هم از متغیر محیطی و هم از گزینه \&\fB\-\-stats\fR استفاده شود، گزینه \fB\-\-stats\fR اولویت خواهد داشت. .Sp اطلاعات تکمیلی گزارش‌شده شامل زمان پردازنده (cpu time) مصرفی است و اگر فراخوانی کتابخانه‌ای سیستمی \fR\f(BIgetrusage()\fR\fI\fR در دسترس باشد، میزان مصرف حافظه نیز ثبت می‌شود. این اطلاعات برای بخش‌های مجزای فرایند پیوند که به‌عنوان \fIphases\fR (فازها) شناخته می‌شوند گزارش می‌شود. افزون بر این، اطلاعات برای فاز ویژه‌ای به نام \fIALL\fR که کل فرایند پیوند را در بر می‌گیرد نیز گزارش می‌گردد. توجه داشته باشید که فازهای منفرد ممکن است شامل یکدیگر بوده یا با هم همپوشانی داشته باشند، بنابراین نباید فرض کرد که کل منابع مصرف‌شده توسط پیونددهنده مجموع منابع مصرفی فازهای منفرد است. .Sp علاوه بر این، هنگام گزارش اطلاعات تکمیلی، نسخه پیونددهنده، آرگومان‌های خط فرمان و زمان شروع به کار پیونددهنده نیز گنجانده می‌شوند. این امر مدیریت شرایطی را که در آن چندین فرایند پیوند توسط یک سامانه ساخت فراخوانی می‌شوند آسان‌تر کرده و شناسایی دقیق آرگومان‌هایی را که مسبب تولید آمارهای گزارش‌شده بوده‌اند ممکن می‌سازد. .Sp خروجی تکمیلی چیزی شبیه به این خواهد بود: .Sp .Vb 3 \& Stats: linker version: (GNU Binutils) 2.44.50.20250401 \& Stats: linker started: Wed Apr 2 09:36:41 2025 \& Stats: args: ld \-z norelro \-z nomemory\-seal \-z no\-separate\-code \-o a.out [...] \& \& Stats: phase cpu time memory user time system time \& Stats: name (microsec) (KiB) (seconds) (seconds) \& Stats: ALL 390082 217740 0 0 \& Stats: ctf processing 12 0 0 0 \& Stats: string merge 1324 0 0 0 \& Stats: parsing 349 288 0 0 \& Stats: plugins 1 0 0 0 \& Stats: processing files 259616 214524 0 0 \& Stats: write 116493 0 0 0 .Ve .IP \fB\-\-no\-stats\fR 4 .IX Item "--no-stats" گزارش آمار مصرف را، در صورتی که از طریق گزینه خط فرمان \fB\-\-stats\fR یا متغیر محیطی \&\fILD_STATS\fR فعال شده باشد، غیرفعال می‌کند. .IP \fB\-\-sysroot=\fR\fIdirectory\fR 4 .IX Item "--sysroot=directory" استفاده از \fIdirectory\fR به‌عنوان مکان sysroot، که مقدار پیش‌فرض زمان پیکربندی را بازنویسی می‌کند. این گزینه تنها توسط پیونددهنده‌هایی پشتیبانی می‌شود که با \fB\-\-with\-sysroot\fR پیکربندی شده باشند. .IP \fB\-\-task\-link\fR 4 .IX Item "--task-link" این گزینه توسط مقصدهای مبتنی بر COFF/PE برای ایجاد یک فایل شیء پیوند-وظیفه‌ای (task-linked) استفاده می‌شود که در آن تمام نمادهای سراسری (global) به نمادهای ایستا (static) تبدیل شده‌اند. .IP \fB\-\-traditional\-format\fR 4 .IX Item "--traditional-format" برای برخی مقصدها، خروجی \fBld\fR از جهاتی با خروجی برخی پیونددهنده‌های موجود متفاوت است. این سوییچ از \fBld\fR درخواست می‌کند تا در عوض از قالب سنتی استفاده کند. .Sp برای نمونه، در SunOS، پیونددهنده \fBld\fR مدخل‌های تکراری در جدول رشته‌های نماد را ادغام می‌کند. این کار می‌تواند اندازه یک فایل خروجی با اطلاعات کامل اشکال‌زدایی را تا بیش از ۳۰ درصد کاهش دهد. متأسفانه برنامه \&\f(CW\*(C`dbx\*(C'\fR در SunOS نمی‌تواند برنامه حاصل را بخواند (در حالی که \f(CW\*(C`gdb\*(C'\fR مشکلی با آن ندارد). سوییچ \fB\-\-traditional\-format\fR به \fBld\fR اعلام می‌کند که مدخل‌های تکراری را ادغام نکند. .IP \fB\-\-section\-start=\fR\fIsectionname\fR\fB=\fR\fIorg\fR 4 .IX Item "--section-start=sectionname=org" یک بخش در فایل خروجی را در نشانی مطلق ارائه‌شده توسط \fIorg\fR قرار می‌دهد. می‌توانید از این گزینه به دفعات لازم در خط فرمان برای تعیین محل چندین بخش استفاده کنید. \&\fIorg\fR باید یک عدد صحیح هگزادسیمال یکتا باشد؛ برای سازگاری با سایر پیونددهنده‌ها، می‌توانید پیشوند \&\fB0x\fR را که معمولاً با مقادیر هگزادسیمال همراه است حذف کنید. \fIنکته:\fR نباید هیچ فاصله‌ای بین \fIsectionname\fR، علامت مساوی («\fB=\fR») و \fIorg\fR وجود داشته باشد. .IP \fB\-\-image\-base=\fR\fIorg\fR 4 .IX Item "--image-base=org" هنگام استفاده از ELF، مشابه \fB\-Ttext\-segment\fR عمل می‌کند و هر دو گزینه در عمل نشانی پایه فایل اجرایی ELF را تنظیم می‌کنند. .Sp هنگام استفاده از PE، از \fIvalue\fR به‌عنوان نشانی پایه برنامه یا dll استفاده می‌کند. این پایین‌ترین مکان حافظه است که هنگام بارگذاری برنامه یا dll شما استفاده خواهد شد. برای کاهش نیاز به بازآرایی و بهبود عملکرد dllهای شما، هر یک باید دارای نشانی پایه یکتا بوده و با هیچ dll دیگری همپوشانی نداشته باشند. مقدار پیش‌فرض برای فایل‌های اجرایی 0x400000 و برای dllها 0x10000000 است. .IP \fB\-Tbss=\fR\fIorg\fR 4 .IX Item "-Tbss=org" .PD 0 .IP \fB\-Tdata=\fR\fIorg\fR 4 .IX Item "-Tdata=org" .IP \fB\-Ttext=\fR\fIorg\fR 4 .IX Item "-Ttext=org" .PD مشابه \fB\-\-section\-start\fR، با استفاده از \f(CW\*(C`.bss\*(C'\fR، \f(CW\*(C`.data\*(C'\fR یا \&\f(CW\*(C`.text\*(C'\fR به‌عنوان \fIsectionname\fR. .IP \fB\-Ttext\-segment=\fR\fIorg\fR 4 .IX Item "-Ttext-segment=org" هنگام ایجاد یک فایل اجرایی ELF، نشانی نخستین بایت از نخستین قطعه را تنظیم می‌کند. توجه داشته باشید هنگامی که \fB\-pie\fR همراه با \&\fB\-Ttext\-segment=\fR\fIorg\fR استفاده شود، فایل اجرایی خروجی به‌عنوان ET_EXEC علامت‌گذاری می‌شود تا تضمین شود که نشانی نخستین بایت قطعه text در زمان اجرا حتماً \fIorg\fR خواهد بود. .IP \fB\-Trodata\-segment=\fR\fIorg\fR 4 .IX Item "-Trodata-segment=org" هنگام ایجاد یک فایل اجرایی ELF یا یک شیء مشترک (shared object) برای مقصدی که در آن داده‌های فقط-خواندنی در قطعه‌ای جداگانه و مجزا از بخش کد اجرایی (text) قرار دارند، نشانی نخستین بایت قطعه داده‌های فقط-خواندنی را تنظیم می‌کند. .IP \fB\-Tldata\-segment=\fR\fIorg\fR 4 .IX Item "-Tldata-segment=org" هنگام ایجاد یک فایل اجرایی ELF یا یک شیء مشترک برای مدل حافظه متوسط x86\-64، نشانی نخستین بایت قطعه ldata را تنظیم می‌کند. .IP \fB\-\-unresolved\-symbols=\fR\fImethod\fR 4 .IX Item "--unresolved-symbols=method" چگونگی مدیریت و برخورد با نمادهای حل‌نشده را تعیین می‌کند. چهار مقدار ممکن برای \fBmethod\fR وجود دارد: .RS 4 .IP \fBignore\-all\fR 4 .IX Item "ignore-all" هیچ نماد حل‌نشده‌ای گزارش نشود. .IP \fBreport\-all\fR 4 .IX Item "report-all" تمام نمادهای حل‌نشده گزارش شوند. این مقدار پیش‌فرض است. .IP \fBignore\-in\-object\-files\fR 4 .IX Item "ignore-in-object-files" نمادهای حل‌نشده‌ای که در کتابخانه‌های مشترک وجود دارند گزارش شوند، اما اگر مربوط به فایل‌های شیء عادی باشند نادیده گرفته شوند. .IP \fBignore\-in\-shared\-libs\fR 4 .IX Item "ignore-in-shared-libs" نمادهای حل‌نشده‌ای که از فایل‌های شیء عادی می‌آیند گزارش شوند، اما اگر از کتابخانه‌های مشترک باشند نادیده گرفته شوند. این حالت هنگام ایجاد یک باینری پویا که مشخص است تمام کتابخانه‌های مشترک مورد ارجاع آن در خط فرمان پیونددهنده گنجانده شده‌اند، می‌تواند مفید باشد. .RE .RS 4 .Sp رفتار مربوط به کتابخانه‌های مشترک را به تنهایی می‌توان با گزینه \fB\-\-[no\-]allow\-shlib\-undefined\fR نیز کنترل کرد. .Sp به‌طور معمول پیونددهنده برای هر نماد حل‌نشده گزارش‌شده یک پیام خطا تولید می‌کند، اما گزینه \fB\-\-warn\-unresolved\-symbols\fR می‌تواند این حالت را به یک هشدار تبدیل کند. .RE.IP \fB\-\-dll\-verbose\fR 4 .IX Item "--dll-verbose" .PD 0 .IP \fB\-\-verbose[=\fR\fINUMBER\fR\fB]\fR 4 .IX Item "--verbose[=NUMBER]" .PD شماره نسخهٔ \fBld\fR را نمایش داده و شبیه‌سازی‌های پیونددهندهٔ پشتیبانی‌شده را فهرست می‌کند. نمایش می‌دهد که کدام فایل‌های ورودی را می‌توان باز کرد و کدام‌ها را نمی‌توان باز کرد. اسکریپت پیونددهنده‌ای که در حال استفاده توسط پیونددهنده است را نمایش می‌دهد. اگر آرگومان اختیاری \fINUMBER\fR بزرگ‌تر از ۱ باشد (> 1)، وضعیت نمادهای پلاگین نیز نمایش داده خواهد شد. .IP \fB\-\-version\-script=\fR\fIversion\-scriptfile\fR 4 .IX Item "--version-script=version-scriptfile" نام یک اسکریپت نسخه را برای پیونددهنده مشخص می‌کند. این گزینه معمولاً هنگام ایجاد کتابخانه‌های اشتراکی برای مشخص کردن اطلاعات بیشتر دربارهٔ سلسله‌مراتب نسخه برای کتابخانهٔ در حال ایجاد به کار می‌رود. این گزینه تنها روی بسترهای ELF که از کتابخانه‌های اشتراکی پشتیبانی می‌کنند به طور کامل پشتیبانی می‌شود؛ بخش \fBVERSION\fR را ببینید. در بسترهای PE پشتیبانی جزئی دارد، که می‌توانند از اسکریپت‌های نسخه برای پالایش پدیداری نمادها در حالت auto\-export استفاده کنند: هر نمادی که در اسکریپت نسخه با عنوان \fBlocal\fR علامت‌گذاری شده باشد صادر نخواهد شد. .IP \fB\-\-warn\-common\fR 4 .IX Item "--warn-common" هنگامی که یک نماد مشترک با یک نماد مشترک دیگر یا با تعریف یک نماد ترکیب می‌شود، هشدار می‌دهد. پیونددهنده‌های یونیکس این شیوهٔ تا حدی نادقیق را مجاز می‌دانند، اما پیونددهنده‌ها در برخی از سیستم‌عامل‌های دیگر اجازهٔ آن را نمی‌دهند. این گزینه به شما امکان می‌دهد مشکلات بالقوه ناشی از ترکیب نمادهای سراسری را بیابید. متأسفانه برخی از کتابخانه‌های C از این شیوه استفاده می‌کنند، بنابراین ممکن است هشدارهایی دربارهٔ نمادهای موجود در کتابخانه‌ها و همچنین در برنامه‌های خود دریافت کنید. .Sp سه نوع نماد سراسری وجود دارد که در اینجا با مثال‌های C نشان داده شده‌اند: .RS 4 .IP "\fBint i = 1;\fR" 4 .IX Item "int i = 1;" یک تعریف، که در بخش داده‌های مقداردهی‌شدهٔ فایل خروجی قرار می‌گیرد. .IP "\fBextern int i;\fR" 4 .IX Item "extern int i;" یک ارجاع تعریف‌نشده، که فضایی تخصیص نمی‌دهد. باید در جایی تعریفی یا نمادی مشترک برای این متغیر وجود داشته باشد. .IP "\fBint i;\fR" 4 .IX Item "int i;" یک نماد مشترک. اگر برای یک متغیر تنها (یک یا چند) نماد مشترک وجود داشته باشد، در ناحیهٔ داده‌های مقداردهی‌نشدهٔ فایل خروجی قرار می‌گیرد. پیونددهنده چندین نماد مشترک برای یک متغیر یکسان را در یک نماد واحد ادغام می‌کند. اگر اندازه‌های متفاوتی داشته باشند، بزرگ‌ترین اندازه را انتخاب می‌کند. در صورتی که تعریفی از همان متغیر وجود داشته باشد، پیونددهنده نماد مشترک را به یک اعلان تبدیل می‌کند. .RE .RS 4 .Sp گزینهٔ \fB\-\-warn\-common\fR می‌تواند پنج نوع هشدار تولید کند. هر هشدار شامل یک جفت خط است: خط نخست نمادی را توصیف می‌کند که به‌تازگی با آن مواجه شده است، و خط دوم نماد قبلی مواجه‌شده با همان نام را توصیف می‌کند. یک یا هر دو نماد، یک نماد مشترک خواهند بود. .IP 1. 4 تبدیل یک نماد مشترک به یک ارجاع، زیرا پیش‌تر تعریفی برای این نماد وجود دارد. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& overridden by definition \& (
): warning: defined here .Ve .IP 2. 4 تبدیل یک نماد مشترک به یک ارجاع، زیرا بعداً تعریفی برای این نماد دیده می‌شود. این حالت مانند مورد قبلی است، با این تفاوت که ترتیب مواجهه با نمادها متفاوت است. .Sp .Vb 3 \& (
): warning: definition of \`\*(Aq \& overriding common \& (
): warning: common is here .Ve .IP 3. 4 ادغام یک نماد مشترک با یک نماد مشترک قبلیِ هم‌اندازه. .Sp .Vb 3 \& (
): warning: multiple common \& of \`\*(Aq \& (
): warning: previous common is here .Ve .IP 4. 4 ادغام یک نماد مشترک با یک نماد مشترک قبلیِ بزرگ‌تر. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& overridden by larger common \& (
): warning: larger common is here .Ve .IP 5. 4 ادغام یک نماد مشترک با یک نماد مشترک قبلیِ کوچک‌تر. این حالت مانند مورد قبلی است، با این تفاوت که ترتیب مواجهه با نمادها متفاوت است. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& overriding smaller common \& (
): warning: smaller common is here .Ve .RE .RS 4 .RE .IP \fB\-\-warn\-constructors\fR 4 .IX Item "--warn-constructors" اگر از هرگونه سازندهٔ سراسری استفاده شده باشد، هشدار می‌دهد. این گزینه تنها برای معدودی از قالب‌های فایل شیء مفید است. برای قالب‌هایی مانند COFF یا ELF، پیونددهنده نمی‌تواند استفاده از سازنده‌های سراسری را تشخیص دهد. .IP \fB\-\-warn\-execstack\fR 4 .IX Item "--warn-execstack" .PD 0 .IP \fB\-\-warn\-execstack\-objects\fR 4 .IX Item "--warn-execstack-objects" .IP \fB\-\-no\-warn\-execstack\fR 4 .IX Item "--no-warn-execstack" .PD در بسترهای ELF، اگر از پیونددهنده خواسته شود فایلی خروجی ایجاد کند که حاوی یک پشتهٔ قابل اجرا باشد، ممکن است پیام‌های هشدار تولید کند. سه حالت ممکن وجود دارد: .RS 4 .IP 1. 4 هیچ هشداری تولید نشود. .IP 2. 4 همیشه هشدار تولید شود، حتی اگر پشتهٔ قابل اجرا از طریق گزینهٔ خط فرمان \fB\-z execstack\fR درخواست شده باشد. .IP 3. 4 تنها زمانی هشدار تولید شود که یک فایل شیء درخواست پشتهٔ قابل اجرا کند، اما نه در حالتی که از گزینهٔ \fB\-z execstack\fR استفاده شده باشد. .RE .RS 4 .Sp وضعیت پیش‌فرض به نحوهٔ پیکربندی پیونددهنده در زمان ساخت بستگی دارد. گزینهٔ \fB\-\-no\-warn\-execstack\fR همیشه پیونددهنده را در وضعیت بدون هشدار قرار می‌دهد. گزینهٔ \fB\-\-warn\-execstack\fR پیونددهنده را در وضعیت هشدار همیشگی قرار می‌دهد. گزینهٔ \&\fB\-\-warn\-execstack\-objects\fR پیونددهنده را در وضعیت هشدار فقط برای فایل‌های شیء قرار می‌دهد. .Sp نکته: فایل‌های ورودی با قالب ELF می‌توانند با داشتن یک بخش \fI.note.GNU\-stack\fR که بیت قابل اجرا در پرچم‌های بخش آن تنظیم شده است، مشخص کنند که به یک پشتهٔ قابل اجرا نیاز دارند. آن‌ها می‌توانند با داشتن همان بخش بدون تنظیم بودن بیت پرچم قابل اجرا، مشخص کنند که به پشتهٔ قابل اجرا نیازی ندارند. اگر یک فایل ورودی بخش \&\fI.note.GNU\-stack\fR را نداشته باشد، رفتار پیش‌فرض وابسته به معماری هدف است. برای برخی اهداف، نبود چنین بخشی به این معناست که یک پشتهٔ قابل اجرا مورد نیاز \fIاست\fR. این مورد اغلب برای فایل‌های اسمبلی دست‌نویس مشکل‌ساز می‌شود. .RE .IP \fB\-\-error\-execstack\fR 4 .IX Item "--error-execstack" .PD 0 .IP \fB\-\-no\-error\-execstack\fR 4 .IX Item "--no-error-execstack" .PD اگر قرار باشد پیونددهنده یک پیام هشدار دربارهٔ پشتهٔ قابل اجرا تولید کند، گزینهٔ \fB\-\-error\-execstack\fR در عوض آن هشدار را به یک خطا تبدیل می‌کند. توجه کنید \- این گزینه وضعیت تولید هشدار execstack پیونددهنده را تغییر نمی‌دهد. برای تنظیم یک وضعیت هشدار خاص از \&\fB\-\-warn\-execstack\fR یا \fB\-\-warn\-execstack\-objects\fR استفاده کنید. .Sp گزینهٔ \fB\-\-no\-error\-execstack\fR رفتار پیش‌فرضِ تولید پیام‌های هشدار را بازمی‌گرداند. .IP \fB\-\-warn\-multiple\-gp\fR 4 .IX Item "--warn-multiple-gp" اگر در فایل خروجی به چندین مقدار اشاره‌گر سراسری نیاز باشد، هشدار می‌دهد. این گزینه تنها برای پردازنده‌های خاصی معنادار است، مانند Alpha. به‌طور خاص، برخی پردازنده‌ها ثابت‌های با مقادیر بزرگ را در یک بخش ویژه قرار می‌دهند. یک ثبات ویژه (اشاره‌گر سراسری) به میانهٔ این بخش اشاره می‌کند، تا بتوان ثابت‌ها را از طریق حالت آدرس‌دهی نسبی به ثبات پایه به شکلی بهینه بارگذاری کرد. از آنجا که آفست در حالت نسبی به ثبات پایه ثابت و نسبتاً کوچک است (برای مثال ۱۶ بیت)، این امر حداکثر اندازهٔ مخزن ثابت‌ها را محدود می‌کند. بنابراین، در برنامه‌های بزرگ، اغلب لازم است که از چندین مقدار اشاره‌گر سراسری استفاده شود تا بتوان به تمام ثابت‌های ممکن دسترسی داشت. این گزینه باعث می‌شود هر زمان که چنین حالتی رخ داد، هشداری صادر شود. .IP \fB\-\-warn\-once\fR 4 .IX Item "--warn-once" به جای اینکه برای هر پیمانه‌ای که به یک نماد تعریف‌نشده ارجاع می‌دهد یک بار هشدار صادر شود، برای هر نماد تعریف‌نشده فقط یک بار هشدار می‌دهد..IP \fB\-\-warn\-rwx\-segments\fR 4 .IX Item "--warn-rwx-segments" .PD 0 .IP \fB\-\-no\-warn\-rwx\-segments\fR 4 .IX Item "--no-warn-rwx-segments" .PD اگر پیونددهنده یک قطعهٔ (segment) بارگذاری‌پذیر و با اندازهٔ غیرصفر بسازد که هر سه پرچم مجوز خواندن، نوشتن و اجرا در آن تنظیم شده باشد، هشدار می‌دهد. چنین قطعه‌ای نمایانگر یک آسیب‌پذیری امنیتی بالقوه است. علاوه بر این، اگر یک قطعهٔ حافظهٔ محلی رشته (thread local storage) با پرچم مجوز اجرا ایجاد شود، صرف‌نظر از این‌که پرچم‌های خواندن و/یا نوشتن در آن تنظیم شده باشند یا خیر، هشدار تولید خواهد شد. .Sp این هشدارها به‌طور پیش‌فرض فعال هستند. می‌توان آن‌ها را با گزینهٔ \&\fB\-\-no\-warn\-rwx\-segments\fR غیرفعال و با گزینهٔ \&\fB\-\-warn\-rwx\-segments\fR دوباره فعال کرد. .IP \fB\-\-error\-rwx\-segments\fR 4 .IX Item "--error-rwx-segments" .PD 0 .IP \fB\-\-no\-error\-rwx\-segments\fR 4 .IX Item "--no-error-rwx-segments" .PD اگر قرار باشد پیونددهنده یک پیام هشدار دربارهٔ یک قطعهٔ قابل اجرا و قابل نوشتن، یا یک قطعهٔ TLS قابل اجرا تولید کند، گزینهٔ \&\fB\-\-error\-rwx\-segments\fR به‌جای آن، این هشدار را به یک خطا تبدیل می‌کند. گزینهٔ \fB\-\-no\-error\-rwx\-segments\fR رفتار پیش‌فرض مبنی بر صرفاً تولید پیام هشدار را بازیابی می‌کند. .Sp نکته \- گزینهٔ \fB\-\-error\-rwx\-segments\fR به‌خودی‌خود هشدارهای مربوط به این قطعه‌ها را فعال نمی‌کند. این هشدارها یا به‌طور پیش‌فرض فعال هستند (اگر پیونددهنده به این صورت پیکربندی شده باشد)، یا از طریق گزینهٔ خط فرمان \&\fB\-\-warn\-rwx\-segments\fR فعال می‌شوند. .IP \fB\-\-warn\-section\-align\fR 4 .IX Item "--warn-section-align" اگر نشانی یک بخش خروجی به دلیل ترازسازی (alignment) تغییر کند، هشدار می‌دهد. معمولاً ترازسازی توسط یک بخش ورودی تعیین می‌شود. نشانی تنها در صورتی تغییر می‌کند که به‌صراحت مشخص نشده باشد؛ یعنی اگر دستور \f(CW\*(C`SECTIONS\*(C'\fR یک نشانی شروع برای بخش تعیین نکرده باشد. .IP \fB\-\-warn\-textrel\fR 4 .IX Item "--warn-textrel" اگر پیونددهنده DT_TEXTREL را به یک فایل اجرایی مستقل از موقعیت یا شیء اشتراکی اضافه کند، هشدار می‌دهد. .IP \fB\-\-warn\-alternate\-em\fR 4 .IX Item "--warn-alternate-em" اگر یک شیء دارای کد ماشین ELF جایگزین باشد، هشدار می‌دهد. .IP \fB\-\-warn\-unresolved\-symbols\fR 4 .IX Item "--warn-unresolved-symbols" اگر پیونددهنده بخواهد یک نماد حل‌نشده را گزارش کند (گزینهٔ \&\fB\-\-unresolved\-symbols\fR را ببینید)، معمولاً یک خطا ایجاد می‌کند. این گزینه باعث می‌شود که به‌جای خطا، یک هشدار ایجاد کند. .IP \fB\-\-error\-unresolved\-symbols\fR 4 .IX Item "--error-unresolved-symbols" رفتار پیش‌فرض پیونددهنده مبنی بر ایجاد خطا هنگام گزارش نمادهای حل‌نشده را بازیابی می‌کند. .IP \fB\-\-whole\-archive\fR 4 .IX Item "--whole-archive" برای هر بایگانی ذکرشده در خط فرمان پس از گزینهٔ \&\fB\-\-whole\-archive\fR، تمام فایل‌های شیء درون بایگانی را در پیوند قرار می‌دهد، به‌جای این‌که در بایگانی برای فایل‌های شیء موردنیاز جستجو کند. این گزینه معمولاً برای تبدیل یک فایل بایگانی به یک کتابخانه اشتراکی استفاده می‌شود و گنجانده شدن تک‌تک اشیاء را در کتابخانه اشتراکیِ حاصل تحمیل می‌کند. از این گزینه می‌توان بیش از یک بار استفاده کرد. .Sp دو نکته هنگام استفاده از این گزینه از طریق gcc: نخست، gcc این گزینه را نمی‌شناسد، بنابراین باید از \fB\-Wl,\-whole\-archive\fR استفاده کنید. دوم، فراموش نکنید که پس از فهرست بایگانی‌های خود از \fB\-Wl,\-no\-whole\-archive\fR استفاده نمایید، زیرا gcc فهرست بایگانی‌های خود را به پیوند شما می‌افزاید و ممکن است نخواهید این پرچم بر آن‌ها نیز اثر بگذارد. .IP \fB\-\-wrap=\fR\fIsymbol\fR 4 .IX Item "--wrap=symbol" استفاده از یک تابع پوشش‌دهنده (wrapper) برای \fIsymbol\fR. هر ارجاع تعریف‌نشده به \&\fIsymbol\fR به \f(CW\*(C`_\|_wrap_\fR\f(CIsymbol\fR\f(CW\*(C'\fR حل خواهد شد. هر ارجاع تعریف‌نشده به \f(CW\*(C`_\|_real_\fR\f(CIsymbol\fR\f(CW\*(C'\fR به \&\fIsymbol\fR حل خواهد شد. .Sp این قابلیت می‌تواند برای ارائهٔ یک پوشش برای یک تابع سیستمی به کار رود. تابع پوشش‌دهنده باید \f(CW\*(C`_\|_wrap_\fR\f(CIsymbol\fR\f(CW\*(C'\fR نامیده شود. اگر بخواهد تابع سیستمی را فراخوانی کند، باید \&\f(CW\*(C`_\|_real_\fR\f(CIsymbol\fR\f(CW\*(C'\fR را صدا بزند. .Sp در اینجا یک مثال ساده آورده شده است: .Sp .Vb 6 \& void * \& _\|_wrap_malloc (size_t c) \& { \& printf ("malloc called with %zu\en", c); \& return _\|_real_malloc (c); \& } .Ve .Sp اگر کدهای دیگر را با استفاده از \fB\-\-wrap malloc\fR به این فایل پیوند دهید، تمام فراخوانی‌های \f(CW\*(C`malloc\*(C'\fR به‌جای آن تابع \f(CW\*(C`_\|_wrap_malloc\*(C'\fR را فراخوانی خواهند کرد. فراخوانی \f(CW\*(C`_\|_real_malloc\*(C'\fR درون \f(CW\*(C`_\|_wrap_malloc\*(C'\fR نیز تابع واقعیِ \f(CW\*(C`malloc\*(C'\fR را صدا خواهد زد. .Sp شاید بخواهید یک تابع \f(CW\*(C`_\|_real_malloc\*(C'\fR نیز فراهم کنید تا پیوندهای بدون گزینهٔ \fB\-\-wrap\fR هم با موفقیت انجام شوند. در صورت انجام این کار، نباید تعریف \f(CW\*(C`_\|_real_malloc\*(C'\fR را در همان فایلِ حاوی \f(CW\*(C`_\|_wrap_malloc\*(C'\fR قرار دهید؛ چرا که اگر این کار را بکنید، ممکن است اسمبلر پیش از آن‌که پیونددهنده فرصتی برای پیچیدن (wrap) آن به \f(CW\*(C`malloc\*(C'\fR پیدا کند، فراخوانی را حل نماید. .Sp تنها ارجاع‌های تعریف‌نشده توسط پیونددهنده جایگزین می‌شوند. بنابراین، ارجاع‌های درونیِ واحد ترجمه به \fIsymbol\fR به \&\f(CW\*(C`_\|_wrap_\fR\f(CIsymbol\fR\f(CW\*(C'\fR حل نمی‌شوند. در مثال بعد، فراخوانی \f(CW\*(C`f\*(C'\fR درون \&\f(CW\*(C`g\*(C'\fR به \f(CW\*(C`_\|_wrap_f\*(C'\fR حل نمی‌شود. .Sp .Vb 5 \& int \& f (void) \& { \& return 123; \& } \& \& int \& g (void) \& { \& return f(); \& } .Ve .IP \fB\-\-eh\-frame\-hdr\fR 4 .IX Item "--eh-frame-hdr" .PD 0 .IP \fB\-\-no\-eh\-frame\-hdr\fR 4 .IX Item "--no-eh-frame-hdr" .PD درخواست ساخت (\fB\-\-eh\-frame\-hdr\fR) یا جلوگیری از ساخت (\fB\-\-no\-eh\-frame\-hdr\fR) بخش \f(CW\*(C`.eh_frame_hdr\*(C'\fR و سرآیند قطعهٔ ELF با عنوان \f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fR. .IP \fB\-\-no\-ld\-generated\-unwind\-info\fR 4 .IX Item "--no-ld-generated-unwind-info" درخواست ایجاد اطلاعات بازگشایی (unwind info) در \f(CW\*(C`.eh_frame\*(C'\fR برای بخش‌های کدِ ایجادشده توسط پیونددهنده مانند PLT. این گزینه در صورتی که اطلاعات بازگشایی تولیدشده توسط پیونددهنده پشتیبانی شود، به‌طور پیش‌فرض فعال است. این گزینه همچنین تولید اطلاعات ردگیری پشته در \f(CW\*(C`.sframe\*(C'\fR را برای بخش‌های کدِ ایجادشده توسط پیونددهنده مانند PLT کنترل می‌کند. .IP \fB\-\-enable\-new\-dtags\fR 4 .IX Item "--enable-new-dtags" .PD 0 .IP \fB\-\-disable\-new\-dtags\fR 4 .IX Item "--disable-new-dtags" .PD این پیونددهنده می‌تواند تگ‌های پویای جدید را در ELF ایجاد کند؛ اما سامانه‌های قدیمی‌ترِ ELF ممکن است آن‌ها را درک نکنند. اگر \&\fB\-\-enable\-new\-dtags\fR را مشخص کنید، تگ‌های پویای جدید در صورت نیاز ساخته شده و تگ‌های پویای قدیمی نادیده گرفته می‌شوند. اگر \fB\-\-disable\-new\-dtags\fR را مشخص کنید، هیچ تگ پویای جدیدی ساخته نخواهد شد. به‌طور پیش‌فرض، تگ‌های پویای جدید ایجاد نمی‌شوند. توجه داشته باشید که این گزینه‌ها تنها برای سامانه‌های ELF در دسترس هستند. .IP \fB\-\-hash\-size=\fR\fInumber\fR 4 .IX Item "--hash-size=number" اندازهٔ پیش‌فرض جدول‌های درهم‌سازی پیونددهنده را روی یک عدد اول نزدیک به \fInumber\fR تنظیم می‌کند. افزایش این مقدار می‌تواند مدت زمان مورد نیاز پیونددهنده برای انجام وظایفش را کاهش دهد، اما نیازمندی‌های حافظهٔ پیونددهنده را افزایش می‌دهد. به همین ترتیب، کاهش این مقدار می‌تواند نیازمندی‌های حافظه را به بهای کاهش سرعت کم کند. .IP \fB\-\-hash\-style=\fR\fIstyle\fR 4 .IX Item "--hash-style=style" نوع جدول(های) درهم‌سازی پیونددهنده را تعیین می‌کند. مقدار \fIstyle\fR می‌تواند \&\f(CW\*(C`sysv\*(C'\fR برای بخش کلاسیک ELF یعنی \f(CW\*(C`.hash\*(C'\fR، یا \f(CW\*(C`gnu\*(C'\fR برای بخش سبک جدید گنو یعنی \f(CW\*(C`.gnu.hash\*(C'\fR، و یا \f(CW\*(C`both\*(C'\fR برای هر دو جدول درهم‌سازی کلاسیک ELF (\f(CW\*(C`.hash\*(C'\fR) و سبک جدید گنو (\f(CW\*(C`.gnu.hash\*(C'\fR) باشد. مقدار پیش‌فرض به نحوهٔ پیکربندی پیونددهنده بستگی دارد، اما برای بیشتر سامانه‌های مبتنی بر لینوکس \f(CW\*(C`both\*(C'\fR خواهد بود. .IP \fB\-\-compress\-debug\-sections=none\fR 4 .IX Item "--compress-debug-sections=none" .PD 0 .IP \fB\-\-compress\-debug\-sections=zlib\fR 4 .IX Item "--compress-debug-sections=zlib" .IP \fB\-\-compress\-debug\-sections=zlib\-gnu\fR 4 .IX Item "--compress-debug-sections=zlib-gnu" .IP \fB\-\-compress\-debug\-sections=zlib\-gabi\fR 4 .IX Item "--compress-debug-sections=zlib-gabi" .IP \fB\-\-compress\-debug\-sections=zstd\fR 4 .IX Item "--compress-debug-sections=zstd" .PD در بسترهای ELF، این گزینه‌ها چگونگی فشرده‌سازی بخش‌های اشکال‌زدایی DWARF را با استفاده از zlib کنترل می‌کنند. .Sp گزینهٔ \&\fB\-\-compress\-debug\-sections=none\fR بخش‌های اشکال‌زدایی DWARF را فشرده نمی‌کند. گزینهٔ \fB\-\-compress\-debug\-sections=zlib\-gnu\fR بخش‌های اشکال‌زدایی DWARF را فشرده کرده و نام آن‌ها را تغییر می‌دهد تا به‌جای \fB.debug\fR با \fB.zdebug\fR شروع شوند. گزینهٔ \fB\-\-compress\-debug\-sections=zlib\-gabi\fR نیز بخش‌های اشکال‌زدایی DWARF را فشرده می‌کند، اما به‌جای تغییر نام، پرچم SHF_COMPRESSED را در سرآیند بخش‌ها تنظیم می‌کند. .Sp گزینهٔ \fB\-\-compress\-debug\-sections=zlib\fR یک نام مستعار برای \&\fB\-\-compress\-debug\-sections=zlib\-gabi\fR است. .Sp گزینهٔ \&\fB\-\-compress\-debug\-sections=zstd\fR بخش‌های اشکال‌زدایی DWARF را با استفاده از zstd فشرده می‌کند. .Sp توجه داشته باشید که این گزینه هرگونه فشرده‌سازی در بخش‌های اشکال‌زدایی ورودی را لغو می‌کند؛ بنابراین اگر برای نمونه یک فایل باینری با \fB\-\-compress\-debug\-sections=none\fR پیوند داده شود، تمام بخش‌های اشکال‌زدایی فشرده‌شده در فایل‌های ورودی، پیش از کپی شدن در خروجیِ باینری، از حالت فشرده خارج می‌شوند. .Sp رفتار فشرده‌سازی پیش‌فرض بسته به معماری مقصد مربوطه و گزینه‌های پیکربندیِ استفاده‌شده در ساخت زنجیره ابزار متفاوت است. مقدار پیش‌فرض را می‌توان با بررسی خروجی گزینهٔ \&\fB\-\-help\fR در پیونددهنده تعیین کرد..IP \fB\-\-reduce\-memory\-overheads\fR 4 .IX Item "--reduce-memory-overheads" این گزینه نیازمندی‌های حافظه را در زمان اجرای ld به قیمت کاهش سرعت پیوند کاهش می‌دهد. این گزینه برای انتخاب الگوریتم قدیمی O(n^2) جهت تولید فایل نگاشت پیوند (link map) به جای الگوریتم جدید O(n) معرفی شده است که حدود ۴۰٪ حافظه بیشتری برای ذخیره نمادها مصرف می‌کند. .Sp اثر دیگر این سوئیچ، تنظیم اندازه پیش‌فرض جدول درهم‌سازی (hash table) به 1021 است، که مجدداً با افزایش زمان اجرای پیونددهنده در مصرف حافظه صرفه‌جویی می‌کند. با این حال اگر از سوئیچ \fB\-\-hash\-size\fR استفاده شده باشد، این کار انجام نمی‌شود. .Sp سوئیچ \fB\-\-reduce\-memory\-overheads\fR ممکن است در نسخه‌های آینده پیونددهنده برای فعال‌سازی موازنه‌های (tradeoffs) دیگر نیز استفاده شود. .IP \fB\-\-max\-cache\-size=\fR\fIsize\fR 4 .IX Item "--max-cache-size=size" \&\fBld\fR به‌طور معمول اطلاعات بازآرایی (relocation) و جدول‌های نماد فایل‌های ورودی را با اندازه نامحدود در حافظه نهان‌سازی می‌کند. این گزینه حداکثر اندازه حافظه موقت (cache) را روی \fIsize\fR تنظیم می‌کند. .IP \fB\-\-build\-id\fR 4 .IX Item "--build-id" .PD 0 .IP \fB\-\-build\-id=\fR\fIstyle\fR 4 .IX Item "--build-id=style" .PD درخواست ایجاد یک بخش یادداشت ELF با نام \f(CW\*(C`.note.gnu.build\-id\*(C'\fR یا یک بخش COFF با نام \f(CW\*(C`.buildid\*(C'\fR. محتویات این یادداشت بیت‌های یکتایی هستند که این فایل پیوند خورده را شناسایی می‌کنند. مقدار \fIstyle\fR می‌تواند \f(CW\*(C`uuid\*(C'\fR برای استفاده از ۱۲۸ بیت تصادفی؛ \f(CW\*(C`sha1\*(C'\fR برای استفاده از یک درهم‌سازی ۱۶۰ بیتی SHA1؛ \f(CW\*(C`md5\*(C'\fR برای استفاده از یک درهم‌سازی ۱۲۸ بیتی MD5؛ یا \f(CW\*(C`xx\*(C'\fR برای استفاده از یک XXHASH صد و بیست و هشت بیتی بر روی بخش‌های هنجارین (normative) محتوای خروجی باشد؛ یا \f(CW\*(C`0x\fR\f(CIhexstring\fR\f(CW\*(C'\fR برای استفاده از یک رشته بیتی برگزیده مشخص‌شده به صورت تعداد زوجی از ارقام هگزادسیمال (نویسه‌های \f(CW\*(C`\-\*(C'\fR و \&\f(CW\*(C`:\*(C'\fR میان جفت ارقام نادیده گرفته می‌شوند). اگر \fIstyle\fR حذف شود، از \f(CW\*(C`sha1\*(C'\fR استفاده می‌شود. .Sp سبک‌های \f(CW\*(C`md5\*(C'\fR، \f(CW\*(C`sha1\*(C'\fR و \f(CW\*(C`xx\*(C'\fR شناسه‌ای تولید می‌کنند که در یک فایل خروجی همسان همواره یکسان است، اما تقریباً به‌طور قطعی در میان تمام فایل‌های خروجی ناهمسان یکتاست. این شناسه برای مقایسه به‌عنوان جمع کنترلی (checksum) محتویات فایل در نظر گرفته نشده است. یک فایل پیوندخورده ممکن است بعداً توسط ابزارهای دیگر تغییر کند، اما رشته بیتی شناسه ساخت (build ID) که فایل پیوندخورده اصلی را مشخص می‌کند تغییر نخواهد کرد. .Sp ارسال \f(CW\*(C`none\*(C'\fR برای \fIstyle\fR، تنظیمات ناشی از هر گزینه قبلی \&\f(CW\*(C`\-\-build\-id\*(C'\fR در خط فرمان را غیرفعال می‌کند. .IP \fB\-\-package\-metadata=\fR\fIJSON\fR 4 .IX Item "--package-metadata=JSON" درخواست ایجاد یک بخش یادداشت ELF با نام \f(CW\*(C`.note.package\*(C'\fR. محتویات یادداشت، مطابق با مشخصات متادیتای بسته، در قالب JSON است. برای اطلاعات بیشتر ببینید: https://systemd.io/ELF_PACKAGE_METADATA آرگومان JSON از کدگذاری درصدی (percent-encoding) و کدگذاری‌های %[string] زیر (که در آن string به نام در ارجاعات نویسه‌های نام‌گذاری‌شده HTML اشاره دارد) پشتیبانی می‌کند: \fB%[comma]\fR برای \fB,\fR، \fB%[lbrace]\fR برای \fB{\fR، \&\fB%[quot]\fR برای \fB"\fR، \fB%[rbrace]\fR برای \fB}\fR، و \&\fB%[space]\fR برای نویسه فاصله. اگر آرگومان JSON مفقود یا خالی باشد، در صورتی که ایجاد یادداشت متادیتا توسط رخداد پیشین گزینه \-\-package\-metadata فعال شده باشد، آن را غیرفعال می‌کند. اگر پیونددهنده با libjansson ساخته شده باشد، رشته JSON اعتبارسنجی خواهد شد. .PP پیونددهنده i386 PE از گزینه \fB\-shared\fR پشتیبانی می‌کند که باعث می‌شود خروجی به جای یک فایل اجرایی معمولی، یک کتابخانه پیوندشده پویا (DLL) باشد. هنگامی که از این گزینه استفاده می‌کنید، باید نام خروجی را \f(CW\*(C`*.dll\*(C'\fR بگذارید. علاوه بر این، پیونددهنده به‌طور کامل از فایل‌های استاندارد \&\f(CW\*(C`*.def\*(C'\fR پشتیبانی می‌کند، که می‌توان آن‌ها را مانند یک فایل شیء در خط فرمان پیونددهنده مشخص کرد (در واقع، باید پیش از آرشیوهایی که نمادهایی را از آن‌ها صادر می‌کند قرار گیرد، تا اطمینان حاصل شود که درست مانند یک فایل شیء معمولی پیوند می‌خورند). .PP علاوه بر گزینه‌های مشترک میان تمام هدف‌ها، پیونددهنده i386 PE از گزینه‌های خط فرمان اضافی خاص هدف i386 PE نیز پشتیبانی می‌کند. گزینه‌هایی که مقدار می‌گیرند ممکن است با یک فاصله یا یک علامت مساوی از مقادیر خود جدا شوند. .IP \fB\-\-add\-stdcall\-alias\fR 4 .IX Item "--add-stdcall-alias" در صورت مشخص شدن، نمادهای دارای پسوند stdcall (@\fInn\fR) هم به همان صورت که هستند و هم با حذف پسوند صادر خواهند شد. [این گزینه مختص پورت هدف i386 PE پیونددهنده است] .IP "\fB\-\-base\-file\fR \fIfile\fR" 4 .IX Item "--base-file file" از \fIfile\fR به‌عنوان نام فایلی برای ذخیره آدرس‌های پایه تمام بازآرایی‌های مورد نیاز جهت تولید DLL با استفاده از \&\fIdlltool\fR استفاده می‌کند. [این یک گزینه مختص i386 PE است] .IP \fB\-\-dll\fR 4 .IX Item "--dll" ایجاد یک DLL به جای یک فایل اجرایی معمولی. همچنین می‌توانید از \&\fB\-shared\fR استفاده کنید یا یک \f(CW\*(C`LIBRARY\*(C'\fR در یک فایل \f(CW\*(C`.def\*(C'\fR مشخص نمایید. [این گزینه مختص پورت هدف i386 PE پیونددهنده است] .IP \fB\-\-enable\-long\-section\-names\fR 4 .IX Item "--enable-long-section-names" .PD 0 .IP \fB\-\-disable\-long\-section\-names\fR 4 .IX Item "--disable-long-section-names" .PD انواع PE از قالب شیء COFF، افزونه‌ای اضافه می‌کنند که اجازه می‌دهد از نام‌های بخش طولانی‌تر از هشت نویسه (محدودیت معمول برای COFF) استفاده شود. به‌طور پیش‌فرض، این نام‌ها تنها در فایل‌های شیء مجاز هستند، زیرا ایمیج‌های اجرایی کاملاً پیوندخورده، جدول رشته COFF لازم برای پشتیبانی از نام‌های طولانی‌تر را حمل نمی‌کنند. به‌عنوان یک افزونه GNU، می‌توان با استفاده از این دو گزینه، استفاده از آن‌ها را در ایمیج‌های اجرایی نیز مجاز کرد یا (احتمالاً بی‌فایده!) در فایل‌های شیء غیرمجاز ساخت. ایمیج‌های اجرایی تولید شده با این نام‌های بخش طولانی تا حدی غیراستاندارد هستند، زیرا حامل یک جدول رشته می‌باشند و هنگام بررسی با ابزارهای ناآشنا با GNU ولی آگاه از PE (مانند بیننده‌ها و دامپرهای فایل) ممکن است خروجی گیج‌کننده‌ای ایجاد کنند. با این حال، GDB برای یافتن بخش‌های اطلاعات اشکال‌زدایی Dwarf\-2 در زمان اجرا در یک ایمیج اجرایی، به استفاده از نام‌های بخش طولانی PE متکی است؛ بنابراین اگر هیچ‌کدام از این دو گزینه در خط فرمان مشخص نشده باشند، هرگاه \fBld\fR هنگام پیوند یک ایمیج اجرایی بدون حذف نمادها وجود اطلاعات اشکال‌زدایی را تشخیص دهد، رفتار پیش‌فرض و از نظر فنی درست را نادیده گرفته و نام‌های طولانی بخش را فعال می‌کند. [این گزینه برای تمام پورت‌های هدف PE پیونددهنده معتبر است] .IP \fB\-\-enable\-stdcall\-fixup\fR 4 .IX Item "--enable-stdcall-fixup" .PD 0 .IP \fB\-\-disable\-stdcall\-fixup\fR 4 .IX Item "--disable-stdcall-fixup" .PD اگر پیوند نمادی را پیدا کند که قادر به حل آن نباشد، تلاش می‌کند با جستجو برای نماد تعریف‌شده دیگری که تنها در قالب نام نماد (cdecl در مقابل stdcall) تفاوت دارد، «پیوند فازی» انجام دهد و آن نماد را با پیوند به مورد منطبق حل کند. برای نمونه، نماد تعریف‌نشده \f(CW\*(C`_foo\*(C'\fR ممکن است به تابع \&\f(CW\*(C`_foo@12\*(C'\fR پیوند داده شود، یا نماد تعریف‌نشده \f(CW\*(C`_bar@16\*(C'\fR ممکن است به تابع \f(CW\*(C`_bar\*(C'\fR پیوند بخورد. هنگامی که پیونددهنده این کار را انجام می‌دهد، یک هشدار چاپ می‌کند، زیرا معمولاً پیوند باید ناموفق می‌بود، اما گاهی اوقات کتابخانه‌های وارداتی (import libraries) تولید شده از dllهای متفرقه برای قابل استفاده بودن به این ویژگی نیاز دارند. اگر \fB\-\-enable\-stdcall\-fixup\fR را مشخص کنید، این ویژگی به‌طور کامل فعال می‌شود و هشدارها چاپ نمی‌شوند. اگر \&\fB\-\-disable\-stdcall\-fixup\fR را مشخص کنید، این ویژگی غیرفعال شده و چنین عدم تطابق‌هایی خطا در نظر گرفته می‌شوند. [این گزینه مختص پورت هدف i386 PE پیونددهنده است] .IP \fB\-\-leading\-underscore\fR 4 .IX Item "--leading-underscore" .PD 0 .IP \fB\-\-no\-leading\-underscore\fR 4 .IX Item "--no-leading-underscore" .PD برای اکثر هدف‌ها، پیشوند نماد پیش‌فرض یک خط زیر (underscore) است و در شرح هدف تعریف شده است. با این گزینه می‌توان پیشوند نماد پیش‌فرض خط زیر را غیرفعال/فعال کرد. .IP \fB\-\-export\-all\-symbols\fR 4 .IX Item "--export-all-symbols" در صورت مشخص شدن، تمام نمادهای سراسری موجود در اشیائی که برای ساخت یک DLL استفاده شده‌اند، توسط DLL صادر خواهند شد. توجه داشته باشید که اگر در غیر این صورت هیچ نماد صادرشده‌ای وجود نداشته باشد، این حالت پیش‌فرض است. هنگامی که نمادها به‌طور صریح از طریق فایل‌های DEF یا به‌طور ضمنی از طریق ویژگی‌های توابع صادر می‌شوند، پیش‌فرض این است که هیچ چیز دیگری صادر نشود مگر اینکه این گزینه مشخص شده باشد. توجه داشته باشید که نمادهای \f(CW\*(C`DllMain@12\*(C'\fR، \&\f(CW\*(C`DllEntryPoint@0\*(C'\fR، \f(CW\*(C`DllMainCRTStartup@12\*(C'\fR و \&\f(CW\*(C`impure_ptr\*(C'\fR به‌طور خودکار صادر نخواهند شد. همچنین، نمادهای وارد شده از سایر DLLها دوباره صادر نخواهند شد، و نه نمادهایی که چیدمان داخلی DLL را مشخص می‌کنند، مانند آن‌هایی که با \f(CW\*(C`_head_\*(C'\fR آغاز می‌شوند یا با \&\f(CW\*(C`_iname\*(C'\fR پایان می‌یابند. علاوه بر این، هیچ نمادی از \f(CW\*(C`libgcc\*(C'\fR، \&\f(CW\*(C`libstd++\*(C'\fR، \f(CW\*(C`libmingw32\*(C'\fR یا \f(CW\*(C`crtX.o\*(C'\fR صادر نخواهد شد. نمادهایی که نام آن‌ها با \f(CW\*(C`_\|_rtti_\*(C'\fR یا \f(CW\*(C`_\|_builtin_\*(C'\fR شروع می‌شود، برای کمک به DLLهای ++C صادر نخواهند شد. در نهایت، فهرست گسترده‌ای از نمادهای خصوصی cygwin وجود دارد که صادر نمی‌شوند (بدیهی است که این مورد هنگام ساخت DLLها برای هدف‌های cygwin اعمال می‌شود). این استثناهای cygwin عبارتند از: \f(CW\*(C`_cygwin_dll_entry@12\*(C'\fR، \&\f(CW\*(C`_cygwin_crt0_common@8\*(C'\fR، \f(CW\*(C`_cygwin_noncygwin_dll_entry@12\*(C'\fR، \&\f(CW\*(C`_fmode\*(C'\fR، \f(CW\*(C`_impure_ptr\*(C'\fR، \f(CW\*(C`cygwin_attach_dll\*(C'\fR، \&\f(CW\*(C`cygwin_premain0\*(C'\fR، \f(CW\*(C`cygwin_premain1\*(C'\fR، \f(CW\*(C`cygwin_premain2\*(C'\fR، \&\f(CW\*(C`cygwin_premain3\*(C'\fR و \f(CW\*(C`environ\*(C'\fR. [این گزینه مختص پورت هدف i386 PE پیونددهنده است] .IP "\fB\-\-exclude\-symbols\fR \fIsymbol\fR\fB,\fR\fIsymbol\fR\fB,...\fR" 4 .IX Item "--exclude-symbols symbol,symbol,..." فهرستی از نمادها را مشخص می‌کند که نباید به‌طور خودکار صادر شوند. نام‌های نمادها می‌توانند با کاما یا دو نقطه از هم جدا شوند. [این گزینه مختص پورت هدف i386 PE پیونددهنده است] .IP \fB\-\-exclude\-all\-symbols\fR 4 .IX Item "--exclude-all-symbols" مشخص می‌کند که هیچ نمادی نباید به‌طور خودکار صادر شود. [این گزینه مختص پورت هدف i386 PE پیونددهنده است] .IP \fB\-\-file\-alignment\fR 4 .IX Item "--file-alignment" هم‌ترازی فایل را مشخص می‌کند. بخش‌های موجود در فایل همواره در آفست‌هایی از فایل شروع می‌شوند که مضربی از این عدد باشند. مقدار پیش‌فرض آن 512 است. [این گزینه مختص پورت هدف i386 PE پیونددهنده است].IP "\fB\-\-heap\fR \fIreserve\fR" 4 .IX Item "--heap reserve" .PD 0 .IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 .IX Item "--heap reserve,commit" .PD تعداد بایت‌های حافظه را برای رزرو (و در صورت تمایل تخصیص یا commit) جهت استفاده به عنوان heap برای این برنامه مشخص می‌کند. مقدار پیش‌فرض ۱ مگابایت رزرو و ۴ کیلوبایت تخصیص‌یافته است. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP \fB\-\-kill\-at\fR 4 .IX Item "--kill-at" در صورت تعیین، پسوندهای stdcall‏ (@\fInn\fR) پیش از برون‌ریزی از نمادها حذف خواهند شد. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP \fB\-\-large\-address\-aware\fR 4 .IX Item "--large-address-aware" در صورت تعیین، بیت مربوطه در فیلد «Characteristics» از سرایند COFF تنظیم می‌شود تا نشان دهد این فایل اجرایی از نشانی‌های مجازی بزرگ‌تر از ۲ گیگابایت پشتیبانی می‌کند. این گزینه باید همراه با سوییچ ‎/3GB یا ‎/USERVA=\fIvalue\fR مگابایت در بخش «[operating systems]» از فایل BOOT.INI استفاده شود. در غیر این صورت، این بیت هیچ اثری نخواهد داشت. [این گزینه مختص پورت‌های هدف‌گیری‌شده برای PE پیونددهنده است] .IP \fB\-\-disable\-large\-address\-aware\fR 4 .IX Item "--disable-large-address-aware" اثر گزینهٔ پیشین \fB\-\-large\-address\-aware\fR را خنثی می‌کند. این مورد زمانی مفید است که \fB\-\-large\-address\-aware\fR همواره توسط راه‌انداز کامپایلر (مانند Cygwin gcc) تنظیم می‌شود و فایل اجرایی از نشانی‌های مجازی بزرگ‌تر از ۲ گیگابایت پشتیبانی نمی‌کند. [این گزینه مختص پورت‌های هدف‌گیری‌شده برای PE پیونددهنده است] .IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4 .IX Item "--major-image-version value" شمارهٔ اصلی (major) از «نسخهٔ تصویر» (image version) را تنظیم می‌کند. مقدار پیش‌فرض 1 است. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4 .IX Item "--major-os-version value" شمارهٔ اصلی (major) از «نسخهٔ سیستم‌عامل» (os version) را تنظیم می‌کند. مقدار پیش‌فرض 4 است. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4 .IX Item "--major-subsystem-version value" شمارهٔ اصلی (major) از «نسخهٔ زیرسیستم» (subsystem version) را تنظیم می‌کند. مقدار پیش‌فرض 4 است. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4 .IX Item "--minor-image-version value" شمارهٔ فرعی (minor) از «نسخهٔ تصویر» (image version) را تنظیم می‌کند. مقدار پیش‌فرض 0 است. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4 .IX Item "--minor-os-version value" شمارهٔ فرعی (minor) از «نسخهٔ سیستم‌عامل» (os version) را تنظیم می‌کند. مقدار پیش‌فرض 0 است. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4 .IX Item "--minor-subsystem-version value" شمارهٔ فرعی (minor) از «نسخهٔ زیرسیستم» (subsystem version) را تنظیم می‌کند. مقدار پیش‌فرض 0 است. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP "\fB\-\-output\-def\fR \fIfile\fR" 4 .IX Item "--output-def file" پیونددهنده فایل \fIfile\fR را ایجاد خواهد کرد که حاوی یک پروندهٔ DEF متناظر با DLL در حال تولید توسط پیونددهنده خواهد بود. این پروندهٔ DEF (که باید به نام \f(CW\*(C`*.def\*(C'\fR نام‌گذاری شود) می‌تواند جهت ایجاد یک کتابخانهٔ واردات (import library) با \f(CW\*(C`dlltool\*(C'\fR به کار رود یا به عنوان مرجعی برای نمادهای به‌طور خودکار یا ضمنی برون‌ریزی‌شده استفاده شود. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP \fB\-\-enable\-auto\-image\-base\fR 4 .IX Item "--enable-auto-image-base" .PD 0 .IP \fB\-\-enable\-auto\-image\-base=\fR\fIvalue\fR 4 .IX Item "--enable-auto-image-base=value" .PD به طور خودکار پایهٔ تصویر (image base) را برای DLLها انتخاب می‌کند، به‌صورت اختیاری با شروع از پایهٔ \&\fIvalue\fR، مگر این‌که مقداری با استفاده از آرگومان \f(CW\*(C`\-\-image\-base\*(C'\fR مشخص شده باشد. با استفاده از هَش تولیدشده از نام DLL برای ایجاد پایه‌های تصویر یکتا برای هر DLL، از تداخل‌ها و بازنشانی‌های (relocations) درون حافظه که می‌توانند اجرای برنامه را با تأخیر مواجه کنند، جلوگیری می‌شود. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP \fB\-\-disable\-auto\-image\-base\fR 4 .IX Item "--disable-auto-image-base" پایهٔ تصویر یکتا را به‌طور خودکار تولید نمی‌کند. اگر پایهٔ تصویری توسط کاربر مشخص نشده باشد (\f(CW\*(C`\-\-image\-base\*(C'\fR)، آن‌گاه از مقدار پیش‌فرض پلتفرم استفاده می‌شود. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4 .IX Item "--dll-search-prefix string" هنگام پیوند پویا به یک DLL بدون کتابخانهٔ واردات (import library)، جست‌وجو برای \f(CW\*(C`.dll\*(C'\fR در اولویت نسبت به \&\f(CW\*(C`lib.dll\*(C'\fR قرار می‌گیرد. این رفتار امکان تمایز آسان بین DLLهای ساخته‌شده برای «زیرپلتفرم‌های» گوناگون را فراهم می‌کند: native، cygwin، uwin، pw و غیره. برای نمونه، DLLهای cygwin معمولاً از \&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fR استفاده می‌کنند. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .IP \fB\-\-enable\-auto\-import\fR 4 .IX Item "--enable-auto-import" پیوند پیشرفتهٔ \f(CW\*(C`_symbol\*(C'\fR به \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR را برای واردات DATA از DLLها انجام می‌دهد، بدین ترتیب امکان دور زدن سازوکار dllimport در سمت کاربر و ارجاع به نام‌های نماد بدون تغییر (unmangled) فراهم می‌شود. [این گزینه مختص پورت هدف‌گیری‌شده برای i386 PE پیونددهنده است] .Sp نکات زیر مربوط به پیاده‌سازی اولیهٔ این ویژگی هستند و امروزه برای اهداف Cygwin و MinGW منسوخ شده‌اند. .Sp توجه: استفاده از افزونهٔ \*(Aqauto\-import\*(Aq موجب می‌شود بخش text از پروندهٔ تصویر قابل نوشتن شود. این امر با مشخصات قالب PE\-COFF منتشرشده توسط مایکروسافت مطابقت ندارد. .Sp توجه \- استفاده از افزونهٔ \*(Aqauto\-import\*(Aq همچنین موجب می‌شود داده‌های فقط‌خواندنی که معمولاً در بخش .rdata قرار می‌گرفتند، در بخش .data قرار داده شوند. این امر به منظور دور زدن مشکلی در مورد constها است که در اینجا توضیح داده شده است: http://www.cygwin.com/ml/cygwin/2004\-09/msg01101.html .Sp استفاده از \*(Aqauto\-import\*(Aq عموماً «بدون مشکل کار خواهد کرد» \-\- اما گاهی ممکن است این پیام را مشاهده کنید: .Sp "variable \*(Aq\*(Aq can\*(Aqt be auto\-imported. Please read the documentation for ld\*(Aqs \f(CW\*(C`\-\-enable\-auto\-import\*(C'\fR for details." .Sp این پیام زمانی رخ می‌دهد که یک (زیر)عبارت به نشانی‌ای دسترسی پیدا می‌کند که در نهایت از حاصل جمع دو مقدار ثابت به دست می‌آید (جدول‌های واردات Win32 فقط یک مقدار را مجاز می‌دانند). مواردی که ممکن است این وضعیت در آن‌ها رخ دهد شامل دسترسی به فیلدهای عضو متغیرهای struct واردشده از یک DLL، و نیز استفاده از یک اندیس ثابت در یک متغیر آرایه‌ای واردشده از یک DLL است. هر متغیر چندکلمه‌ای (آرایه‌ها، ساختارها، long long و غیره) ممکن است این وضعیت خطا را برانگیزد. با این حال، بدون در نظر گرفتن نوع دادهٔ دقیقِ متغیر برون‌ریزی‌شدهٔ خطاساز، ld همواره آن را شناسایی کرده، هشدار صادر می‌کند و خارج می‌شود. .Sp روش‌های متعددی برای رفع این دشواری، صرف‌نظر از نوع دادهٔ متغیر برون‌ریزی‌شده، وجود دارد: .Sp یک روش، استفاده از سوییچ \-\-enable\-runtime\-pseudo\-reloc است. این کار وظیفهٔ تنظیم ارجاعات در کد سمت کلاینت شما را به محیط زمان اجرا واگذار می‌کند، بنابراین این روش تنها در صورتی کار می‌کند که محیط زمان اجرا از این ویژگی پشتیبانی کند. .Sp راهکار دوم اجبار یکی از «ثابت‌ها» به متغیر بودن است \-\- یعنی نامشخص و بهینه‌سازی‌ناپذیر در زمان کامپایل. برای آرایه‌ها، دو حالت وجود دارد: الف) متغیر کردن مقداری که اندیس‌گذاری می‌شود (نشانی آرایه)، یا ب) متغیر کردن خودِ اندیس «ثابت». بدین ترتیب: .Sp .Vb 3 \& extern type extern_array[]; \& extern_array[1] \-\-> \& { volatile type *t=extern_array; t[1] } .Ve .Sp یا .Sp .Vb 3 \& extern type extern_array[]; \& extern_array[1] \-\-> \& { volatile int t=1; extern_array[t] } .Ve .Sp برای ساختارها (و بیشتر انواع داده‌های چندکلمه‌ای دیگر) تنها گزینه این است که خودِ ساختار (یا long long یا ...) را متغیر کنید: .Sp .Vb 3 \& extern struct s extern_struct; \& extern_struct.field \-\-> \& { volatile struct s *t=&extern_struct; t\->field } .Ve .Sp یا .Sp .Vb 3 \& extern long long extern_ll; \& extern_ll \-\-> \& { volatile long long * local_ll=&extern_ll; *local_ll } .Ve .Sp روش سوم برای برخورد با این مشکل، رها کردن \*(Aqauto\-import\*(Aq برای نماد خطاساز و نشانه‌گذاری آن با \&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR است. با این حال، در عمل این کار نیازمند استفاده از define#های زمان کامپایل است تا مشخص شود آیا در حال ساخت یک DLL هستید، کد کلاینتی می‌سازید که به DLL پیوند می‌خورد، یا صرفاً در حال ساخت/پیوند به یک کتابخانهٔ ایستا هستید. هنگام انتخاب میان روش‌های مختلف برای حل مشکل «نشانی مستقیم با آفست ثابت»، باید کاربرد معمول در دنیای واقعی را مد نظر قرار دهید: .Sp حالت اصلی: .Sp .Vb 7 \& \-\-foo.h \& extern int arr[]; \& \-\-foo.c \& #include "foo.h" \& void main(int argc, char **argv){ \& printf("%d\en",arr[1]); \& } .Ve .Sp راه‌حل ۱: .Sp.Vb 9 \& \-\-foo.h \& extern int arr[]; \& \-\-foo.c \& #include "foo.h" \& void main(int argc, char **argv){ \& /* This workaround is for win32 and cygwin; do not "optimize" */ \& volatile int *parr = arr; \& printf("%d\en",parr[1]); \& } .Ve .Sp راهکار ۲: .Sp .Vb 10 \& \-\-foo.h \& /* Note: auto\-export is assumed (no _\|_declspec(dllexport)) */ \& #if (defined(_WIN32) || defined(_\|_CYGWIN_\|_)) && \e \& !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) \& #define FOO_IMPORT _\|_declspec(dllimport) \& #else \& #define FOO_IMPORT \& #endif \& extern FOO_IMPORT int arr[]; \& \-\-foo.c \& #include "foo.h" \& void main(int argc, char **argv){ \& printf("%d\en",arr[1]); \& } .Ve .Sp چهارمین راه برای اجتناب از این مشکل، بازنویسی کد کتابخانه‌تان است تا به جای یک رابط داده‌ای، از یک رابط تابعی برای متغیرهای مشکل‌ساز استفاده کند (مانند توابع دستیابی \fBset_foo()\fR و \fBget_foo()\fR). .IP \fB\-\-disable\-auto\-import\fR 4 .IX Item "--disable-auto-import" تلاشی برای پیوند دادن پیچیدهٔ \f(CW\*(C`_symbol\*(C'\fR به \&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR برای واردسازی‌های DATA از DLLها انجام نده. [این گزینه مختص پورت هدف i386 PE در پیونددهنده است] .IP \fB\-\-enable\-runtime\-pseudo\-reloc\fR 4 .IX Item "--enable-runtime-pseudo-reloc" اگر کد شما حاوی عبارت‌های شرح‌داده‌شده در بخش \-\-enable\-auto\-import باشد، یعنی واردسازی‌های DATA از DLL با آفست غیرصفر، این سوییچ برداری از \*(Aqشبه‌بازمکانی‌های زمان اجرا\*(Aq (\*(Aqruntime pseudo relocations\*(Aq) ایجاد می‌کند که می‌تواند توسط محیط زمان اجرا برای تنظیم ارجاعات به چنین داده‌هایی در کد کلاینت شما استفاده شود. [این گزینه مختص پورت هدف i386 PE در پیونددهنده است] .IP \fB\-\-disable\-runtime\-pseudo\-reloc\fR 4 .IX Item "--disable-runtime-pseudo-reloc" برای واردسازی‌های DATA از DLLها با آفست غیرصفر شبه‌بازمکانی ایجاد نکن. [این گزینه مختص پورت هدف i386 PE در پیونددهنده است] .IP \fB\-\-enable\-extra\-pe\-debug\fR 4 .IX Item "--enable-extra-pe-debug" اطلاعات اشکال‌زدایی اضافی مربوط به ثانک‌کردن نمادهای auto\-import را نمایش بده. [این گزینه مختص پورت هدف i386 PE در پیونددهنده است] .IP \fB\-\-section\-alignment\fR 4 .IX Item "--section-alignment" ترازبندی بخش‌ها (section alignment) را تنظیم می‌کند. بخش‌ها در حافظه همیشه از آدرس‌هایی آغاز می‌شوند که مضربی از این عدد هستند. پیش‌فرض 0x1000 است. [این گزینه مختص پورت هدف i386 PE در پیونددهنده است] .IP "\fB\-\-stack\fR \fIreserve\fR" 4 .IX Item "--stack reserve" .PD 0 .IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 .IX Item "--stack reserve,commit" .PD تعداد بایت‌های حافظه را جهت رزرو (و به طور اختیاری تخصیص/commit) به عنوان پشته (stack) برای این برنامه مشخص کنید. پیش‌فرض ۲ مگابایت رزرو، و ۴ کیلوبایت تخصیص‌یافته است. [این گزینه مختص پورت هدف i386 PE در پیونددهنده است] .IP "\fB\-\-subsystem\fR \fIwhich\fR" 4 .IX Item "--subsystem which" .PD 0 .IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4 .IX Item "--subsystem which:major" .IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4 .IX Item "--subsystem which:major.minor" .PD زیرسیستمی را که برنامهٔ شما تحت آن اجرا خواهد شد مشخص می‌کند. مقادیر مجاز برای \fIwhich\fR عبارتند از \f(CW\*(C`native\*(C'\fR، \f(CW\*(C`windows\*(C'\fR، \&\f(CW\*(C`console\*(C'\fR، \f(CW\*(C`posix\*(C'\fR و \f(CW\*(C`xbox\*(C'\fR. همچنین می‌توانید به صورت اختیاری نسخهٔ زیرسیستم را نیز تنظیم کنید. مقادیر عددی نیز برای \&\fIwhich\fR پذیرفته می‌شوند. [این گزینه مختص پورت هدف i386 PE در پیونددهنده است] .Sp گزینه‌های زیر پرچم‌هایی را در فیلد \f(CW\*(C`DllCharacteristics\*(C'\fR از سرایند فایل PE تنظیم می‌کنند: [این گزینه‌ها مختص پورت‌های هدف PE در پیونددهنده هستند] .IP \fB\-\-high\-entropy\-va\fR 4 .IX Item "--high-entropy-va" .PD 0 .IP \fB\-\-disable\-high\-entropy\-va\fR 4 .IX Item "--disable-high-entropy-va" .PD تصویر با تصادفی‌سازی چیدمان فضای آدرس ۶۴ بیتی (ASLR) سازگار است. این گزینه به طور پیش‌فرض برای تصاویر PE شصت و چهار بیتی در مقصدهای MinGW فعال است. .Sp این گزینه همچنین شامل \fB\-\-dynamicbase\fR و \&\fB\-\-enable\-reloc\-section\fR نیز می‌شود. .IP \fB\-\-dynamicbase\fR 4 .IX Item "--dynamicbase" .PD 0 .IP \fB\-\-disable\-dynamicbase\fR 4 .IX Item "--disable-dynamicbase" .PD آدرس پایهٔ تصویر می‌تواند با استفاده از تصادفی‌سازی چیدمان فضای آدرس (ASLR) جابه‌جا (بازمکانی) شود. این قابلیت با MS Windows Vista برای اهداف i386 PE معرفی شد. این گزینه به طور پیش‌فرض برای مقصدهای MinGW فعال است اما می‌تواند از طریق گزینهٔ \fB\-\-disable\-dynamicbase\fR غیرفعال شود. این گزینه همچنین \fB\-\-enable\-reloc\-section\fR را نیز در بر دارد. .IP \fB\-\-forceinteg\fR 4 .IX Item "--forceinteg" .PD 0 .IP \fB\-\-disable\-forceinteg\fR 4 .IX Item "--disable-forceinteg" .PD بررسی‌های یکپارچگی کد تحمیل می‌شوند. این گزینه به طور پیش‌فرض غیرفعال است. .IP \fB\-\-nxcompat\fR 4 .IX Item "--nxcompat" .PD 0 .IP \fB\-\-disable\-nxcompat\fR 4 .IX Item "--disable-nxcompat" .PD تصویر با ویژگی جلوگیری از اجرای داده (Data Execution Prevention یا DEP) سازگار است. این قابلیت همراه با MS Windows XP SP2 برای اهداف i386 PE معرفی شد. این گزینه به طور پیش‌فرض برای مقصدهای MinGW فعال است. .IP \fB\-\-no\-isolation\fR 4 .IX Item "--no-isolation" .PD 0 .IP \fB\-\-disable\-no\-isolation\fR 4 .IX Item "--disable-no-isolation" .PD اگرچه تصویر مفهوم جداسازی (isolation) را درک می‌کند، تصویر را ایزوله نکن. این گزینه به طور پیش‌فرض غیرفعال است. .IP \fB\-\-no\-seh\fR 4 .IX Item "--no-seh" .PD 0 .IP \fB\-\-disable\-no\-seh\fR 4 .IX Item "--disable-no-seh" .PD تصویر از SEH استفاده نمی‌کند. هیچ گردانندهٔ SE نباید از این تصویر فراخوانی شود. این گزینه به طور پیش‌فرض غیرفعال است. .IP \fB\-\-no\-bind\fR 4 .IX Item "--no-bind" .PD 0 .IP \fB\-\-disable\-no\-bind\fR 4 .IX Item "--disable-no-bind" .PD این تصویر را مقید (bind) نکن. این گزینه به طور پیش‌فرض غیرفعال است. .IP \fB\-\-wdmdriver\fR 4 .IX Item "--wdmdriver" .PD 0 .IP \fB\-\-disable\-wdmdriver\fR 4 .IX Item "--disable-wdmdriver" .PD گرداننده از مدل درایور مایکروسافت ویندوز (MS Windows Driver Model) استفاده می‌کند. این گزینه به طور پیش‌فرض غیرفعال است. .IP \fB\-\-tsaware\fR 4 .IX Item "--tsaware" .PD 0 .IP \fB\-\-disable\-tsaware\fR 4 .IX Item "--disable-tsaware" .PD تصویر از ترمینال سرور آگاه است (Terminal Server aware). این گزینه به طور پیش‌فرض غیرفعال است. .IP \fB\-\-insert\-timestamp\fR 4 .IX Item "--insert-timestamp" .PD 0 .IP \fB\-\-no\-insert\-timestamp\fR 4 .IX Item "--no-insert-timestamp" .PD یک برچسب زمانی (timestamp) واقعی در تصویر درج کن. این رفتار پیش‌فرض است، زیرا با کدهای موروثی مطابقت دارد و بدین معناست که تصویر با سایر ابزارهای اختصاصی کار خواهد کرد. مشکل این رفتار پیش‌فرض آن است که هر بار که همان سورس‌کدها پیوند داده می‌شوند، تصاویر کمی متفاوت تولید خواهد شد. گزینهٔ \fB\-\-no\-insert\-timestamp\fR می‌تواند برای درج مقدار صفر برای برچسب زمانی استفاده شود، که اطمینان می‌دهد فایل‌های باینری تولید شده از سورس‌کدهای یکسان، کاملاً یکسان مقایسه می‌شوند. .Sp اگر \fB\-\-insert\-timestamp\fR فعال باشد، زمان درج‌شده یا زمانی است که پیونددهی انجام می‌شود یا در صورتی که متغیر محیطی \&\f(CW\*(C`SOURCE_DATE_EPOCH\*(C'\fR تعریف شده باشد، تعداد ثانیه‌های سپری‌شده از مبدأ زمانی یونیکس (Unix epoch) خواهد بود که توسط آن متغیر مشخص شده است..IP \fB\-\-enable\-reloc\-section\fR 4 .IX Item "--enable-reloc-section" .PD 0 .IP \fB\-\-disable\-reloc\-section\fR 4 .IX Item "--disable-reloc-section" .PD جدول بازآرایی پایه (base relocation table) را ایجاد می‌کند؛ این جدول در صورتی که ایمیج در پایه‌ای متفاوت از آنچه در سرایند PE مشخص شده بارگذاری شود، ضروری است. این گزینه به‌طور پیش‌فرض فعال است. .PP هدف C6X uClinux از یک قالب باینری به نام DSBT برای پشتیبانی از کتابخانه‌های اشتراکی استفاده می‌کند. هر کتابخانه اشتراکی در سیستم باید یک نمایه (index) یکتا داشته باشد؛ تمام فایل‌های اجرایی از نمایه 0 استفاده می‌کنند. .IP "\fB\-\-dsbt\-size\fR \fIsize\fR" 4 .IX Item "--dsbt-size size" این گزینه تعداد مدخل‌های جدول DSBT فایل اجرایی فعلی یا کتابخانه اشتراکی را روی \fIsize\fR تنظیم می‌کند. پیش‌فرض، ایجاد جدولی با ۶۴ مدخل است. .IP "\fB\-\-dsbt\-index\fR \fIindex\fR" 4 .IX Item "--dsbt-index index" این گزینه نمایه DSBT فایل اجرایی یا کتابخانه اشتراکی فعلی را روی \fIindex\fR تنظیم می‌کند. پیش‌فرض 0 است که برای تولید فایل‌های اجرایی مناسب است. اگر یک کتابخانه اشتراکی با نمایه DSBT برابر با 0 تولید شود، بازآرایی‌های \&\f(CW\*(C`R_C6000_DSBT_INDEX\*(C'\fR در فایل خروجی کپی می‌شوند. .Sp سوئیچ \fB\-\-no\-merge\-exidx\-entries\fR ادغام مدخل‌های مجاور exidx را در اطلاعات unwind فریم غیرفعال می‌کند. .IP \fB\-\-branch\-stub\fR 4 .IX Item "--branch-stub" این گزینه با درج بخش‌های استاب انشعاب (branch stub) در صورت نیاز به گسترش دامنه انشعاب‌ها، branch relaxation پیونددهنده را فعال می‌کند. این گزینه معمولاً لازم نیست، زیرا C\-SKY از دستورالعمل‌های branch و call پشتیبانی می‌کند که می‌توانند به کل محدوده حافظه دسترسی داشته باشند، و branch relaxation معمولاً توسط کامپایلر یا اسمبلر انجام می‌شود. .IP \fB\-\-stub\-group\-size=\fR\fIN\fR 4 .IX Item "--stub-group-size=N" این گزینه امکان کنترل دقیق‌تر ایجاد استاب‌های انشعاب پیونددهنده را فراهم می‌کند. این گزینه حداکثر اندازه گروهی از بخش‌های ورودی را که می‌توانند توسط یک بخش استاب مدیریت شوند تعیین می‌کند. مقدار منفی برای \fIN\fR، بخش‌های استاب را پس از انشعاب‌های آن‌ها قرار می‌دهد، در حالی که مقدار مثبت اجازه می‌دهد بخش‌های استاب قبل یا بعد از انشعاب‌ها ظاهر شوند. مقادیر \&\fB1\fR یا \fB\-1\fR نشان می‌دهند که پیونددهنده باید پیش‌فرض‌های مناسب را انتخاب کند. .PP پیونددهنده‌های 68HC11 و 68HC12 از گزینه‌های خاصی برای کنترل نگاشت تعویض بانک حافظه (memory bank switching) و تولید کد ترامپولین (trampoline) پشتیبانی می‌کنند. .IP \fB\-\-no\-trampoline\fR 4 .IX Item "--no-trampoline" این گزینه تولید ترامپولین را غیرفعال می‌کند. به‌طور پیش‌فرض، برای هر تابع دور (far function) که با استفاده از یک دستورالعمل \f(CW\*(C`jsr\*(C'\fR فراخوانی شود، یک ترامپولین تولید می‌شود (این اتفاق زمانی رخ می‌دهد که اشاره‌گری به یک تابع دور گرفته شود). .IP "\fB\-\-bank\-window\fR \fIname\fR" 4 .IX Item "--bank-window name" این گزینه نام ناحیه حافظه در مشخصات \fBMEMORY\fR را که پنجره بانک حافظه را توصیف می‌کند، به پیونددهنده اعلام می‌دارد. سپس تعریف این ناحیه توسط پیونددهنده برای محاسبه صفحه‌بندی و آدرس‌ها درون پنجره حافظه استفاده می‌شود. .PP گزینه‌های زیر برای کنترل مدیریت تولید GOT هنگام پیوند برای اهداف 68K پشتیبانی می‌شوند. .IP \fB\-\-got=\fR\fItype\fR 4 .IX Item "--got=type" این گزینه به پیونددهنده اعلام می‌کند که از کدام طرح تولید GOT استفاده کند. \&\fItype\fR باید یکی از مقادیر \fBsingle\fR، \fBnegative\fR، \&\fBmultigot\fR یا \fBtarget\fR باشد. برای اطلاعات بیشتر به مدخل Info برای \fIld\fR مراجعه کنید. .PP گزینه‌های زیر برای کنترل تولید دستورالعمل‌های microMIPS و بررسی‌های بازآرایی انشعاب برای گذار حالت ISA هنگام پیوند برای اهداف MIPS پشتیبانی می‌شوند. .IP \fB\-\-insn32\fR 4 .IX Item "--insn32" .PD 0 .IP \fB\-\-no\-insn32\fR 4 .IX Item "--no-insn32" .PD این گزینه‌ها انتخاب دستورالعمل‌های microMIPS استفاده‌شده در کدهای تولیدشده توسط پیونددهنده، مانند کدهای موجود در PLT یا استاب‌های lazy binding، یا در relaxation را کنترل می‌کنند. اگر \fB\-\-insn32\fR استفاده شود، پیونددهنده تنها از کدگذاری‌های دستورالعمل ۳۲\-بیتی استفاده می‌کند. به‌طور پیش‌فرض یا اگر \fB\-\-no\-insn32\fR استفاده شود، تمام کدگذاری‌های دستورالعمل، شامل ۱۶\-بیتی در صورت امکان، به کار گرفته می‌شوند. .IP \fB\-\-ignore\-branch\-isa\fR 4 .IX Item "--ignore-branch-isa" .PD 0 .IP \fB\-\-no\-ignore\-branch\-isa\fR 4 .IX Item "--no-ignore-branch-isa" .PD این گزینه‌ها بررسی‌های بازآرایی انشعاب را برای گذارهای نامعتبر حالت ISA کنترل می‌کنند. اگر \fB\-\-ignore\-branch\-isa\fR استفاده شود، پیونددهنده هرگونه بازآرایی انشعاب را می‌پذیرد و هر گذار حالت ISA مورد نیاز در محاسبات بازآرایی نادیده گرفته می‌شود؛ به جز در برخی موارد از دستورالعمل‌های \f(CW\*(C`BAL\*(C'\fR که شرایط relaxation را برآورده کرده و هم‌زمان با محاسبه بازآرایی مرتبط، به دستورالعمل‌های معادل \f(CW\*(C`JALX\*(C'\fR تبدیل می‌شوند. به‌طور پیش‌فرض یا اگر \fB\-\-no\-ignore\-branch\-isa\fR استفاده شود، بررسی انجام گرفته و نادیده گرفته شدن یک گذار حالت ISA منجر به بروز خطا می‌شود. .IP \fB\-\-compact\-branches\fR 4 .IX Item "--compact-branches" .PD 0 .IP \fB\-\-no\-compact\-branches\fR 4 .IX Item "--no-compact-branches" .PD این گزینه‌ها تولید دستورالعمل‌های فشرده (compact instructions) توسط پیونددهنده را در مدخل‌های PLT برای MIPS R6 کنترل می‌کنند. .PP برای هدف pdp11\-aout، سه گونه از قالب خروجی را می‌توان با گزینه‌های زیر انتخاب و تولید کرد. گونه پیش‌فرض برای pdp11\-aout گزینه \fB\-\-omagic\fR است، در حالی که برای سایر اهداف \fB\-\-nmagic\fR پیش‌فرض است. گزینه \fB\-\-imagic\fR تنها برای هدف pdp11\-aout تعریف شده است، در حالی که سایر گزینه‌ها در اینجا بر اساس کاربردشان در هدف pdp11\-aout شرح داده شده‌اند. .IP \fB\-N\fR 4 .IX Item "-N" .PD 0 .IP \fB\-\-omagic\fR 4 .IX Item "--omagic" .PD خروجی را در سرایند \fIa.out\fR به عنوان \f(CW\*(C`OMAGIC\*(C'\fR (0407) علامت‌گذاری می‌کند تا نشان دهد بخش کد (text segment) نباید در برابر نوشتن محافظت‌شده (write\-protected) و اشتراکی باشد. از آنجا که بخش‌های کد (text) و داده (data) هر دو خواندنی و نوشتنی هستند، بخش داده بلافاصله و به‌صورت پیوسته پس از بخش کد تخصیص می‌یابد. این قدیمی‌ترین قالب برای برنامه‌های اجرایی PDP11 است و پیش‌فرض \fBld\fR در سیستم‌های PDP11 Unix از آغاز تا 2.11BSD بوده است. .IP \fB\-n\fR 4 .IX Item "-n" .PD 0 .IP \fB\-\-nmagic\fR 4 .IX Item "--nmagic" .PD خروجی را در سرایند \fIa.out\fR به عنوان \f(CW\*(C`NMAGIC\*(C'\fR (0410) علامت‌گذاری می‌کند تا نشان دهد هنگام اجرای فایل خروجی، بخش کد فقط‌خواندنی و بین تمام فرایندهایی که همان فایل را اجرا می‌کنند قابل اشتراک خواهد بود. این کار مستلزم انتقال نواحی داده به اولین مرز ممکن صفحه ۸ کیلوبایتی پس از انتهای بخش کد است. این گزینه یک قالب \fIاجرایی محض (pure executable)\fR ایجاد می‌کند. .IP \fB\-z\fR 4 .IX Item "-z" .PD 0 .IP \fB\-\-imagic\fR 4 .IX Item "--imagic" .PD خروجی را در سرایند \fIa.out\fR به عنوان \f(CW\*(C`IMAGIC\*(C'\fR (0411) علامت‌گذاری می‌کند تا نشان دهد هنگام اجرای فایل خروجی، نواحی کد و داده برنامه با استفاده از ویژگی فضای مجزای دستورالعمل و داده در واحد مدیریت حافظه مدل‌های بزرگ‌تر PDP11، در فضاهای آدرس جداگانه بارگذاری خواهند شد. این ویژگی فضای آدرس در دسترس برنامه را دو برابر می‌کند. بخش کد مجدداً محض، محافظت‌شده در برابر نوشتن و اشتراک‌پذیر است. تنها تفاوت در قالب خروجی بین این گزینه و سایرین، علاوه بر شماره جادویی (magic number)، این است که هر دو بخش کد و داده از مکان 0 شروع می‌شوند. گزینه \fB\-z\fR در 2.11BSD این قالب را انتخاب می‌کرد. این گزینه یک قالب \fIاجرایی مجزا (separate executable)\fR ایجاد می‌کند. .IP \fB\-\-no\-omagic\fR 4 .IX Item "--no-omagic" معادل با \fB\-\-nmagic\fR برای pdp11\-aout..SH "محیط (ENVIRONMENT)" .IX Header "ENVIRONMENT" شما می‌توانید رفتار \fBld\fR را با متغیرهای محیطی \&\f(CW\*(C`GNUTARGET\*(C'\fR، \&\f(CW\*(C`LDEMULATION\*(C'\fR و \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR تغییر دهید. .PP متغیر محیطی \&\f(CW\*(C`GNUTARGET\*(C'\fR در صورتی که از گزینهٔ \fB\-b\fR (یا هم‌ارز آن \fB\-\-format\fR) استفاده نکنید، قالب شیء (object format) فایل ورودی را تعیین می‌کند. مقدار آن باید یکی از نام‌های BFD برای یک قالب ورودی باشد. اگر \&\f(CW\*(C`GNUTARGET\*(C'\fR در محیط وجود نداشته باشد، \fBld\fR از قالب طبیعی مقصد (target) استفاده می‌کند. اگر \&\f(CW\*(C`GNUTARGET\*(C'\fR روی \&\f(CW\*(C`default\*(C'\fR تنظیم شده باشد، BFD با بررسی فایل‌های ورودی دودویی تلاش می‌کند قالب ورودی را تشخیص دهد؛ این روش اغلب موفق می‌شود، اما ممکن است ابهاماتی به وجود آید، زیرا هیچ روشی برای تضمین یکتا بودن عدد جادویی (magic number) به‌کاررفته برای تعیین قالب‌های فایل شیء وجود ندارد. با این حال، فرایند پیکربندی BFD روی هر سیستم، قالب مرسوم آن سیستم را در ابتدای فهرست جستجو قرار می‌دهد، بنابراین ابهامات به نفع شیوهٔ مرسوم برطرف می‌شوند. .PP متغیر \&\f(CW\*(C`LDEMULATION\*(C'\fR در صورتی که از گزینهٔ \fB\-m\fR استفاده نکنید، شبیه‌سازی (emulation) پیش‌فرض را تعیین می‌کند. شبیه‌سازی می‌تواند بر جنبه‌های گوناگون رفتار پیونددهنده، به‌ویژه اسکریپت پیش‌فرض پیونددهنده تأثیر بگذارد. می‌توانید شبیه‌سازی‌های موجود را با گزینه‌های \fB\-\-verbose\fR یا \fB\-V\fR فهرست کنید. اگر گزینهٔ \fB\-m\fR استفاده نشود و متغیر محیطی \&\f(CW\*(C`LDEMULATION\*(C'\fR تعریف نشده باشد، شبیه‌سازی پیش‌فرض به نحوهٔ پیکربندی پیونددهنده بستگی خواهد داشت. .PP در حالت عادی، پیونددهنده به‌طور پیش‌فرض نمادها را رازگشایی (demangle) می‌کند. با این حال، اگر \&\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR در محیط تنظیم شده باشد، حالت پیش‌فرض بر عدم رازگشایی نمادها قرار می‌گیرد. این متغیر محیطی به روشی مشابه توسط برنامهٔ پوشش‌دهندهٔ پیونددهنده در \f(CW\*(C`gcc\*(C'\fR استفاده می‌شود. این رفتار پیش‌فرض را می‌توان با گزینه‌های \fB\-\-demangle\fR و \fB\-\-no\-demangle\fR لغو کرد. .PP اگر گزینهٔ \fB\-\-insert\-timestamp\fR که مخصوص PE/COFF است فعال باشد و متغیر محیطی \&\fBSOURCE_DATE_EPOCH\fR تعریف شده باشد، مقدار برچسب زمانی موجود در این متغیر به‌جای زمان کنونی در سرایند COFF درج خواهد شد. .PP اگر متغیر محیطی \&\f(CW\*(C`LD_STATS\*(C'\fR تعریف شده باشد، اطلاعات استفادهٔ پیونددهنده از منابع ثبت خواهد شد؛ دقیقاً مانند اینکه گزینهٔ \&\fB\-\-stats\fR استفاده شده باشد. اگر متغیر \&\f(CW\*(C`LD_STATS\*(C'\fR دارای یک مقدار رشته‌ای باشد، از آن به عنوان نام فایلی که اطلاعات باید در آن ذخیره شوند استفاده می‌شود. در غیر این صورت، اطلاعات به جریان خروجی استاندارد ارسال خواهد شد. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBar\fR\|(1)، \fBnm\fR\|(1)، \fBobjcopy\fR\|(1)، \fBobjdump\fR\|(1)، \fBreadelf\fR\|(1) و مدخل‌های Info برای \fIbinutils\fR و \&\fIld\fR. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر (c) 1991\-2025 Free Software Foundation, Inc. .PP اجازهٔ نسخه‌برداری، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ بعدی منتشرشده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. نسخه‌ای از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.