.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.47) .\" .\" 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 2026-07-26 binutils-2.47 "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 چندین فایل شیء (object) و بایگانی (archive) را ترکیب می‌کند، داده‌های آن‌ها را بازنشانی (relocate) نموده و ارجاعات نمادها را متصل می‌سازد. معمولاً آخرین مرحله در کامپایل یک برنامه، اجرای \fBld\fR است. .PP ابزار \&\fBld\fR فایل‌های Linker Command Language نوشته‌شده بر پایهٔ ابرمجموعه‌ای از نحو Link Editor Command Language متعلق به شرکت AT&T\*(Aqs را می‌پذیرد تا کنترلی صریح و کامل را بر فرایند پیونددهی فراهم کند. .PP این صفحهٔ راهنما به شرح زبان فرمان نمی‌پردازد؛ برای جزئیات کامل دربارهٔ زبان فرمان و سایر جنبه‌های پیونددهنده گنو، مدخل \&\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، باعث می‌شوند که فایل در همان نقطه‌ای که گزینه در خط فرمان ظاهر شده است نسبت به فایل‌های شیء و سایر گزینه‌های فایلی خوانده شود. تکرار گزینه‌های غیرفایلی با آرگومان‌های متفاوت، یا اثری نخواهد داشت یا موارد پیشین آن گزینه را (آن‌هایی که در سمت چپ خط فرمان هستند) لغو (override) می‌کند. گزینه‌هایی که مشخص کردن بیش از یک‌بار آن‌ها معنادار است، در توضیحات زیر قید شده‌اند. .PP آرگومان‌های غیرگزینه‌ای، فایل‌های شیء یا آرشیوهایی هستند که باید با یکدیگر پیوند داده شوند. آن‌ها می‌توانند قبل، بعد یا در میان گزینه‌های خط فرمان قرار گیرند؛ به استثنای اینکه آرگومان یک فایل شیء نباید بین یک گزینه و آرگومان مربوط به آن قرار بگیرد. .PP معمولاً پیونددهنده با حداقل یک فایل شیء فراخوانی می‌شود، اما می‌توانید اشکال دیگری از فایل‌های ورودی دودویی (binary) را با استفاده از \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 در بخش پویا (dynamic section) اضافه می‌کند. وجود \fIAUDITLIB\fR بررسی نمی‌شود، و همچنین از DT_SONAME مشخص‌شده در کتابخانه استفاده نخواهد کرد. در صورت تعیین چندباره، \f(CW\*(C`DT_AUDIT\*(C'\fR حاوی فهرستی از رابط‌های حسابرسی (audit interfaces) خواهد بود که با دونقطه (colon) جدا شده‌اند. اگر پیونددهنده هنگام جستجو برای کتابخانه‌های اشتراکی شیئی را با یک مدخل حسابرسی بیابد، یک مدخل متناظر \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 \&\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 معرفی کنید؛ برای اجرای اسکریپت‌های پیونددهنده‌ای که به زبان اسکریپت‌نویسی عمومی \fBld\fR نوشته شده‌اند از گزینهٔ \&\fB\-T\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 این سه گزینه معادل یکدیگرند؛ اشکال متعددی برای سازگاری با سایر پیونددهنده‌ها پشتیبانی می‌شوند. آن‌ها حتی در صورتی که یک فایل خروجی بازمکان‌یاب (با \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 در بخش پویا (dynamic section) اضافه می‌کند. وجود \fIAUDITLIB\fR بررسی نمی‌شود، و همچنین از DT_SONAME مشخص‌شده در کتابخانه استفاده نخواهد کرد. اگر چندین بار مشخص شود، \f(CW\*(C`DT_DEPAUDIT\*(C'\fR حاوی فهرستی از رابط‌های حسابرسی (audit interfaces) خواهد بود که با دونقطه از هم جدا شده‌اند. این گزینه تنها در پلتفرم‌های 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 نمادهای موجود در تمام کتابخانه‌های آرشیو را از صدور خودکار مستثنی می‌کند. این گزینه تنها برای پورت‌های مقصد ELF و PE پیونددهنده در دسترس است. برای مقصدهای 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 برای باز کردن فایل‌ها استفاده شده مطابقت داشته باشد؛ برای اعضای آرشیو، این صرفاً نام عضو است، اما برای فایل‌های شیء، نام فهرست‌شده باید دقیقاً شامل هر مسیری باشد که برای مشخص کردن فایل ورودی در خط فرمان پیونددهنده استفاده شده است. نمادهایی که به‌صراحت در یک فایل .def فهرست شده‌اند، صرف‌نظر از این گزینه، همچنان صادر می‌شوند. [این گزینه مخصوص پورت‌های مقصد PE در پیونددهنده است] .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) بدون حوزه (scope) و نام گره است. برای اطلاعات بیشتر \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 را مشاهده خواهد کرد. اگر پیونددهندهٔ پویا هر نمادی را از شیء پالایه حل (resolve) کند، ابتدا بررسی می‌کند که آیا تعریفی در شیء اشتراکی \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 را به نام مشخص‌شده تنظیم می‌کند. این به پیونددهندهٔ پویا اعلام می‌کند که جدول نمادهای شیء اشتراکی در حال ایجاد باید به عنوان یک پالایه روی جدول نمادهای شیء اشتراکی \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" هنگام ایجاد یک فایل اجرایی یا شیء اشتراکی (shared object) در قالب ELF، با تنظیم DT_FINI روی نشانی تابع، کاری می‌کند که هنگام تخلیه (unload) شدن فایل اجرایی یا شیء اشتراکی، 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 بهینه‌سازی شوند، روی \fIvalue\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" یک پیوند افزایشی (incremental link) انجام می‌دهد (مشابه گزینهٔ \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 این نوع جستجوی آرشیو برای پیونددهنده‌های یونیکس استاندارد است. با این حال، اگر از \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 (پیشوند sysroot) جایگزین می‌شود، که توسط گزینهٔ \fB\-\-sysroot\fR کنترل می‌گردد یا هنگام پیکربندی پیونددهنده مشخص شده است. .Sp مجموعه مسیرهای پیش‌فرضی که جستجو می‌شوند (بدون اینکه با \fB\-L\fR تعیین شده باشند) به حالت شبیه‌سازی (emulation mode) مورد استفادهٔ \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 patterns) در نام فایل اول مجاز هستند، بنابراین \fB\-\-remap\-inputs=foo*.o=bar.o\fR هر فایل ورودی منطبق بر \fIfoo*.o\fR را به \fIbar.o\fR تغییر نام می‌دهد. .Sp فرم دیگر این گزینه، \fB\-\-remap\-inputs\-file=filename\fR، اجازه می‌دهد بازنگاشت‌ها (remappings) از یک فایل خوانده شوند. هر خط در فایل می‌تواند شامل یک بازنگاشت باشد. خطوط خالی نادیده گرفته می‌شوند. هر چیزی از نویسهٔ هش (\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 چگونگی تخصیص نمادهای مشترک. .IP \(bu 4 تمام اعضای آرشیو گنجانده‌شده در پیوند، به همراه ذکر نمادی که باعث وارد شدن آن عضو آرشیو شده است. .IP \(bu 4 مقدارهای اختصاص‌یافته به نمادها. .Sp نکته \- نمادهایی که مقدار آن‌ها توسط عبارتی محاسبه می‌شود که شامل ارجاع به مقدار قبلی همان نماد است، ممکن است نتیجه‌ی درستی در نقشه‌ی پیوند نمایش ندهند. دلیل این امر آن است که پیونددهنده نتایج میانی را دور انداخته و تنها مقدار نهایی عبارت را نگه می‌دارد. در چنین شرایطی پیونددهنده مقدار نهایی را داخل قلاب نمایش می‌دهد. بنابراین برای نمونه، یک اسکریپت پیونددهنده شامل: .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 این نشان می‌دهد که هنگام ادغام ویژگی‌ها در \fIfoo.o\fR (که مقدار ویژگی 0xc0000002 آن 0x1 است) و \fIbar.o\fR (که ویژگی 0xc0000002 را ندارد)، ویژگی 0xc0000002 از خروجی حذف شده است. .Sp .Vb 1 \& Updated property 0xc0010001 (0x1) to merge foo.o (0x1) and bar.o (0x1) .Ve .Sp این نشان می‌دهد که هنگام ادغام ویژگی‌ها در \fIfoo.o\fR (که مقدار ویژگی 0xc0010001 آن 0x1 است) و \fIbar.o\fR (که مقدار ویژگی 0xc0010001 آن نیز 0x1 است)، مقدار ویژگی 0xc0010001 در خروجی به 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 چاپ کردن (یا چاپ نکردن) فهرست بخش‌های کنار گذاشته‌شده و جمع‌آوری‌شده به عنوان زباله (garbage collected) در نقشه‌ی پیوند. به‌طور پیش‌فرض فعال است. .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) بخش‌ها، و غیرفعال کردن پیوند با کتابخانه‌های مشترک. اگر قالب خروجی از اعداد جادویی سبک Unix پشتیبانی کند، خروجی را با \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 و غیرفعال کردن پیوند با کتابخانه‌های مشترک. اگر قالب خروجی از اعداد جادویی سبک Unix پشتیبانی کند، خروجی را با \f(CW\*(C`OMAGIC\*(C'\fR علامت‌گذاری می‌کند. نکته: اگرچه بخش text قابل نوشتن برای مقصدهای PE\-COFF مجاز است، اما با مشخصات قالبی که توسط Microsoft منتشر شده مطابقت ندارد. .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 نکته \- پیونددهنده بررسی خواهد کرد تا مطمئن شود نام فایل خروجی با نام هیچ‌یک از فایل‌های ورودی مطابقت ندارد، اما همه‌چیز به همین ختم می‌شود. به‌ویژه، اگر فایل خروجی موجب رونویسی روی یک فایل منبع یا فایلی مهم شود، هشداری نخواهد داد. بنابراین در سیستم‌های ساخت توصیه می‌شود که گزینه‌ی \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" نوشتن یک فایل وابستگی در \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 اثر می‌گذارد. نگارش‌های آینده‌ی پیونددهنده ممکن است استفاده‌ی بیشتری از این گزینه بکنند. همچنین در حال حاضر تفاوتی در رفتار پیونددهنده برای مقادیر مختلف غیرصفر این گزینه وجود ندارد. این مورد نیز ممکن است در نگارش‌های آینده تغییر کند. .Sp اگر \fIlevel\fR صفر یا رشته‌ی \fBfast\fR باشد، آنگاه \fBld\fR در عوض عملیات اختیاری را نادیده می‌گیرد که به پیوند سریع‌تر منجر می‌شود اما باینری‌های کندتر و بزرگ‌تری تولید می‌کند. در حال حاضر تنها عملیاتی که نادیده گرفته می‌شود، ادغام بخش‌های ادغام‌پذیر است، اما این موضوع ممکن است در آینده تغییر کند. .Sp اگر \fIlevel\fR رشته‌ی \fBdefault\fR یا صرفاً نویسه‌ی \fB\-\fR باشد، رفتار پیش‌فرض پیونددهنده مبنی بر عدم بهینه‌سازی و عدم نادیده‌گیری عملیات انتخاب می‌شود. .IP "\fB\-plugin\fR \fIname\fR" 4 .IX Item "-plugin name" به‌کارگیری یک افزونه در فرایند پیوند. پارامتر \fIname\fR نام فایل مطلق افزونه است. معمولاً این پارامتر هنگام استفاده از بهینه‌سازی زمان پیوند (link time optimization)، به‌طور خودکار توسط کامپایلر اضافه می‌شود، اما کاربران در صورت تمایل می‌توانند افزونه‌های خود را نیز اضافه کنند. .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\-\-link\-mapless\fR، \&\fB\-\-no\-link\-mapless\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" اثر \fB\-\-push\-state\fR را خنثی کرده و مقادیر پیشین پرچم‌های کنترل‌کنندهٔ مدیریت فایل ورودی را بازیابی می‌کند. .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)\(emیعنی تولید فایل خروجی که به نوبهٔ خود می‌تواند به عنوان ورودی برای \fBld\fR عمل کند. این عمل معمولاً \fIپیوند جزئی\fR (partial linking) نامیده می‌شود. به عنوان یک اثر جانبی، در محیط‌هایی که از شماره‌های جادویی (magic numbers) استاندارد یونیکس پشتیبانی می‌کنند، این گزینه همچنین شمارهٔ جادویی فایل خروجی را به \&\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 حذف (یا عدم حذف) نمادهای سراسری تعریف‌شده در بخش‌های دور انداخته‌شده (discarded). به طور پیش‌فرض فعال است. .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 به عنوان یک نماد تعریف‌نشده در فایل خروجی درج شود. انجام این کار می‌تواند، به عنوان مثال، پیونددهی پودمان‌های بیشتری را از کتابخانه‌های استاندارد راه‌اندازی کند. می‌توان \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" برای برنامه‌هایی که از سازنده‌ها یا نابودکننده‌ها استفاده نمی‌کنند، یا برای سیستم‌های مبتنی بر 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 همچنین شبیه‌سازهای پشتیبانی‌شده را فهرست می‌کند. همچنین به توضیحات \&\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) از طریق خانهٔ 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 ترکیب چندین بخش بازنشانی پویا و مرتب‌سازی آن‌ها به منظور بهبود عملکرد حافظه‌نهان (cache) جست‌وجوی نمادهای پویا. در صورت استفاده از \fBnocombreloc\fR این کار انجام نمی‌شود. .IP \fBcommon\fR 4 .IX Item "common" .PD 0 .IP \fBnocommon\fR 4 .IX Item "nocommon" .PD تولید نمادهای عمومی با نوع STT_COMMON در طول یک پیوند با قابلیت بازنشانی. در صورت استفاده از \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 هنگام ساخت یک شیء پویا، نمادهای ضعیف (weak) تعریف‌نشده را در صورتی که از یک فایل شیء معمولی به آن‌ها ارجاع داده شده باشد و توسط نمایانی نماد یا نسخه‌بندی محلی نشده باشند، به صورت پویا درمی‌آورد. در صورت استفاده از \&\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 با قابلیت فعال ردگیری شاخه غیرمستقیم اینتل (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 برای نشان دادن اینکه فایل شیء نیازمند اشاره‌گرهای تابع قانونی (canonical) است و نمی‌تواند با جابه‌جایی کپی (copy relocation) استفاده شود. این گزینه همچنین مستلزم \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" مشخص می‌کند که بارگذار پویا باید ترتیب جستجوی نمادهای خود را طوری تغییر دهد که نمادهای موجود در این کتابخانهٔ اشتراکی، جایگزین (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" هنگام تولید یک فایل اجرایی یا کتابخانهٔ اشتراکی، آن را طوری علامت‌گذاری می‌کند تا به بارگذار پویا اعلام کند که حل و فصل فراخوانی تابع را به جای زمان بارگذاری، به زمان فراخوانی شدن تابع موکول کند (پیوند دیرهنگام یا lazy binding). پیوند دیرهنگام حالت پیش‌فرض است. .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 دامپ شود. .IP \fBnoexecstack\fR 4 .IX Item "noexecstack" شیء را طوری علامت‌گذاری می‌کند که نیازی به پشتهٔ قابل‌اجرا نداشته باشد. .IP \fBnoextern\-protected\-data\fR 4 .IX Item "noextern-protected-data" هنگام ساخت یک کتابخانهٔ مشترک، با نمادهای داده‌ای محافظت‌شده مانند نمادهای خارجی رفتار نمی‌کند. این گزینه رفتار پیش‌فرض پسانهٔ پیونددهنده را لغو می‌کند. می‌توان از آن برای رفع مشکل بازنشانی‌های نادرست تولیدشده توسط کامپایلر برای نمادهای داده‌ای محافظت‌شده استفاده کرد. به‌روزرسانی‌های نمادهای داده‌ای محافظت‌شده توسط یک پودمان دیگر، برای کتابخانهٔ مشترک حاصل قابل مشاهده نخواهد بود. برای i386 و x86\-64 پشتیبانی می‌شود. .IP \fBnoreloc\-overflow\fR 4 .IX Item "noreloc-overflow" بررسی سرریز بازنشانی را غیرفعال می‌کند. اگر در زمان اجرا هیچ سرریز بازنشانی پویایی رخ ندهد، می‌توان از این گزینه برای غیرفعال کردن بررسی سرریز بازنشانی استفاده کرد. برای x86_64 پشتیبانی می‌شود. .IP \fBmemory\-seal\fR 4 .IX Item "memory-seal" .PD 0 .IP \fBnomemory\-seal\fR 4 .IX Item "nomemory-seal" .PD به فایل اجرایی یا کتابخانهٔ مشترک دستور می‌دهد که تمام بخش‌های PT_LOAD باید مهروموم شوند تا از دستکاری‌های بعدی (مانند تغییر پرچم‌های حفاظت، اندازهٔ بخش، یا حذف نگاشت) جلوگیری شود. این یک مقاوم‌سازی امنیتی است که نیازمند پشتیبانی سیستم است. این گزینه GNU_PROPERTY_MEMORY_SEAL را در بخش .note.gnu.property ایجاد می‌کند. .IP \fBnow\fR 4 .IX Item "now" هنگام ایجاد یک فایل اجرایی یا کتابخانهٔ مشترک، آن را علامت‌گذاری می‌کند تا به پیونددهندهٔ پویا اعلام کند تمام نمادها را هنگام شروع برنامه، یا هنگام بارگذاری کتابخانهٔ مشترک توسط dlopen حل‌وفصل کند، به جای اینکه حل‌وفصل فراخوانی تابع را تا زمان اولین فراخوانی تابع به تعویق بیندازد. .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 بازنشانی نسبی فشرده را در فایل اجرایی مستقل از موقعیت و کتابخانهٔ مشترک تولید می‌کند. این گزینه ورودی‌های \f(CW\*(C`DT_RELR\*(C'\fR، \f(CW\*(C`DT_RELRSZ\*(C'\fR و \&\f(CW\*(C`DT_RELRENT\*(C'\fR را به بخش پویا اضافه می‌کند. هنگام ساخت فایل اجرایی وابسته به موقعیت و خروجی با قابلیت بازنشانی، نادیده گرفته می‌شود. \&\fBnopack\-relative\-relocs\fR حالت پیش‌فرض است که بازنشانی نسبی فشرده را غیرفعال می‌کند. هنگام پیوند با کتابخانهٔ سی گنو، یک وابستگی نسخهٔ نماد GLIBC_ABI_DT_RELR به کتابخانهٔ سی مشترک به خروجی اضافه می‌شود. برای 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 سرآیند بخش را تولید می‌کند. در صورت استفاده از \&\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 این رفتار را غیرفعال می‌کند و اجازه می‌دهد بخش‌ها طوری توسط بازیافت حافظه پاکسازی شوند که گویی این نمادهای ترکیبی خاص تعریف نشده‌اند. گزینهٔ \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" دیداری‌پذیری نماد 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 استفاده شود تا این نمادها بین اشیاء مشترک صادر نشوند، چرا که معمولاً این کار مطلوب نیست. .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، چنانچه پرونده‌های شیء بازتخصیص‌پذیر ورودی تابع \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، چنانچه پرونده‌های شیء بازتخصیص‌پذیر ورودی دارای بازتخصیص \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 استفاده از این گزینه درون یک جفت‌گزینهٔ \fB\-\-start\-lib\fR/\fB\-\-end\-lib\fR مجاز نیست. .Sp استفاده از این گزینه هزینهٔ کارایی چشمگیری دارد. بهتر است تنها در مواقعی استفاده شود که ارجاعات حلقویِ اجتناب‌ناپذیری میان دو یا چند بایگانی وجود دارد. .IP "\fB\-\-start\-lib\fR \fIobjects\fR \fB\-\-end\-lib\fR" 4 .IX Item "--start-lib objects --end-lib" آرگومان \fIobjects\fR باید فهرستی از پرونده‌های شیء باشد. .Sp با اشیاء مشخص‌شده به‌گونه‌ای برخورد می‌شود که گویی اعضای یک بایگانی هستند که نام آن در محل \fB\-\-start\-lib\fR در خط فرمان قرار گرفته است. تمام ویژگی‌های معمول پیونددهنده در کار با بایگانی‌ها و گزینه‌های خط فرمان برای چنین بایگانی ساختگی‌ای اعمال می‌شوند. .Sp این گزینه می‌تواند چندین بار استفاده شود، که در این صورت با هر مجموعه از اشیاء مشخص‌شده به‌عنوان یک بایگانی مستقل رفتار خواهد شد. با این حال، تودرتو کردن این گزینه مجاز نیست. .Sp گزینه‌هایی که بر پردازش بایگانی اثر می‌گذارند، میان \&\fB\-\-start\-lib\fR و \fB\-\-end\-lib\fR مجاز نیستند؛ زیرا اعمال آن‌ها در میانهٔ مدیریت یک بایگانی بی‌معنا خواهد بود. این گزینه‌ها شامل موارد زیر هستند: \&\fB\-(\fR/\fB\-\-start\-group\fR، \fB\-)\fR/\fB\-\-end\-group\fR، \&\fB\-\-whole\-archive\fR، و \fB\-\-no\-whole\-archive\fR، و همچنین \&\fB\-\-pop\-state\fR در حالتی که وضعیت تنظیمات \&\fB\-\-whole\-archive\fR را تغییر دهد. .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 نکته: در سامانه‌های مبتنی بر لینوکس، گزینهٔ \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 در بخش پویا تنظیم می‌کند. این کار باعث می‌شود پیونددهندهٔ زمان اجرا (runtime linker) جستجوها را در این شیء و وابستگی‌های آن تنها درون گروه انجام دهد. گزینهٔ \&\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) می‌کند. به‌طور معمول، این امکان برای برنامه‌ای که با یک کتابخانهٔ اشتراکی پیوند خورده است وجود دارد که تعاریف موجود در آن کتابخانهٔ اشتراکی را بازنویسی کند. این گزینه تنها در بسترهای 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 table). اگر یک فایل نقشه‌برداری (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 اجازه می‌دهد تصمیم‌گیری برای تخصیص نشانی به نمادهای عام، از انتخاب نوع فایل خروجی تفکیک شود؛ در غیر این صورت یک نوع خروجی غیربازمکان‌پذیر، تخصیص نشانی به نمادهای عام را اجباری می‌کند. استفاده از \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" ایجاد یک نماد سراسری در فایل خروجی، حاوی نشانی مطلقی که توسط \fIexpression\fR مشخص شده است. می‌توانید از این گزینه به تعداد دفعات مورد نیاز برای تعریف نمادهای متعدد در خط فرمان استفاده کنید. شکل محدودی از محاسبات ریاضی برای \fIexpression\fR در این زمینه پشتیبانی می‌شود: می‌توانید یک ثابت در مبنای ۱۶ یا نام یک نماد موجود را وارد کنید، یا از \f(CW\*(C`+\*(C'\fR و \f(CW\*(C`\-\*(C'\fR برای جمع یا تفریق ثابت‌های مبنای ۱۶ یا نمادها استفاده نمایید. اگر به عبارات پیچیده‌تری نیاز دارید، استفاده از زبان دستور پیونددهنده درون یک اسکریپت را مد نظر قرار دهید. \&\fIنکته:\fR نباید هیچ فاصله خالی (whitespace) بین \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) نام نمادها را در پیام‌های خطا و دیگر خروجی‌ها کنترل می‌کنند. هنگامی که به پیونددهنده دستور داده می‌شود رمزگشایی را انجام دهد، تلاش می‌کند نام نمادها را به شیوه‌ای خوانا ارائه کند: در صورتی که قالب فایل شیء از زیرخط‌های (underscore) ابتدایی استفاده کند آن‌ها را حذف می‌کند، و نام‌های نماد درهم‌پیچیدهٔ (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" هنگام تولید یک فایل اجرایی، درخواست استفاده از یک پیونددهندهٔ پویا (dynamic linker) در زمان بارگذاری را حذف می‌کند. این گزینه تنها برای فایل‌های اجرایی ELF که حاوی بازنشانی‌های پویا (dynamic relocations) هستند معنادار است، و معمولاً نیازمند کد نقطهٔ ورود است که قادر به پردازش این بازنشانی‌ها باشد. .IP \fB\-\-embedded\-relocs\fR 4 .IX Item "--embedded-relocs" این گزینه شبیه به گزینهٔ \fB\-\-emit\-relocs\fR است، با این تفاوت که بازنشانی‌ها در یک بخش (section) مخصوص به معماری مقصد ذخیره می‌شوند. این گزینه تنها در مقصدهای \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 جمع‌آوری زباله (garbage collection) بخش‌های ورودی استفاده‌نشده را فعال می‌کند. در مقصدهایی که از این گزینه پشتیبانی نمی‌کنند نادیده گرفته می‌شود. رفتار پیش‌فرض (عدم انجام این جمع‌آوری) را می‌توان با تعیین \fB\-\-no\-gc\-sections\fR در خط فرمان بازگرداند. توجه داشته باشید که جمع‌آوری زباله برای مقصدهای با قالب COFF و PE پشتیبانی می‌شود، اما پیاده‌سازی آن در حال حاضر آزمایشی در نظر گرفته می‌شود. .Sp گزینهٔ \fB\-\-gc\-sections\fR با بررسی نمادها و بازنشانی‌ها تصمیم می‌گیرد که کدام بخش‌های ورودی استفاده شده‌اند. بخشی که حاوی نماد نقطهٔ ورود است و تمام بخش‌های حاوی نمادهایی که در خط فرمان تعریف‌نشده هستند حفظ خواهند شد؛ همچنین بخش‌های حاوی نمادهایی که توسط شیءهای پویا ارجاع داده شده‌اند نیز نگه داشته می‌شوند. توجه داشته باشید که هنگام ساخت کتابخانه‌های اشتراکی، پیونددهنده باید فرض کند هر نماد قابل مشاهده‌ای مورد ارجاع قرار گرفته است. پس از تعیین این مجموعهٔ اولیه از بخش‌ها، پیونددهنده به صورت بازگشتی هر بخشی را که توسط بازنشانی‌های آن‌ها ارجاع داده شده باشد به عنوان استفاده‌شده علامت‌گذاری می‌کند. گزینه‌های \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 فعال باشد، این گزینه از جمع‌آوری و حذف بخش‌های ورودی استفاده‌نشده‌ای که حاوی نمادهای سراسری با نمایانیِ (visibility) پیش‌فرض یا حفاظت‌شده (protected) هستند جلوگیری می‌کند. این گزینه برای فایل‌های اجرایی در نظر گرفته شده است که در غیر این صورت بخش‌های بدون ارجاع آن‌ها صرف‌نظر از نمایانی بیرونی نمادهای موجود در آن‌ها جمع‌آوری و حذف می‌شدند. توجه داشته باشید که این گزینه هنگام پیوند دادن اشیای اشتراکی تأثیری ندارد زیرا از قبل رفتار پیش‌فرض است. این گزینه تنها برای مقصدهای با قالب 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 را چاپ می‌کند. این ویژگی در مقصدهای توکار (embedded) برای مشاهدهٔ سریع میزان حافظهٔ آزاد مفید است. قالب خروجی دارای یک سرآیند و یک خط به ازای هر ناحیه است. این خروجی هم برای انسان خواناست و هم به‌سادگی توسط ابزارها قابل تجزیه است. در اینجا نمونه‌ای از خروجی آمده است: .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 ارجاع‌های حل‌نشده به نمادها از فایل‌های شیء معمولی را گزارش می‌کند. این کار حتی اگر پیونددهنده در حال ایجاد یک کتابخانهٔ اشتراکی غیرنمادین باشد نیز انجام می‌شود. سوییچ \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 را برای فایل‌های آرشیو بعدی خاموش می‌کند. در داخل جفت‌گزینهٔ \fB\-\-start\-lib\fR/\fB\-\-end\-lib\fR مجاز نیست. .IP \fB\-\-no\-link\-mapless\fR 4 .IX Item "--no-link-mapless" آرشیوهایی را که فاقد نمایه (index) یا اصطلاحاً نگاشت نماد هستند برای تمامی آرشیوهای بعدی ارجاع‌شده در خط فرمان رد می‌کند. اگر با چنین فایلی برخورد شود، یک خطای پیوند رخ می‌دهد. این رفتار سنتی است. .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ها) را فراهم می‌سازد. این گزینه تنها برای پورت‌های مبتنی بر اهداف 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" افزودن یک دایرکتوری به مسیر جستجوی کتابخانه‌ها در زمان اجرا (runtime). این گزینه هنگام پیوند زدن یک فایل اجرایی ELF با اشیاء اشتراکی (shared objects) استفاده می‌شود. تمام آرگومان‌های \fB\-rpath\fR به یکدیگر متصل شده و به پیونددهنده زمان اجرا منتقل می‌شوند که از آن‌ها برای مکان‌یابی اشیاء اشتراکی در زمان اجرا استفاده می‌کند. .Sp گزینه \fB\-rpath\fR همچنین هنگام مکان‌یابی اشیاء اشتراکی که مورد نیاز اشیاء اشتراکی مشخص‌شده به‌طور صریح در پیوند هستند به کار می‌رود؛ به توضیحات گزینه \fB\-rpath\-link\fR مراجعه کنید. جستجو در \fB\-rpath\fR به این روش تنها توسط پیونددهنده‌های بومی (native) و پیونددهنده‌های متقاطع (cross linkers) که با گزینه \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 هنگامی که پیونددهنده در حین انجام پیوند غیر اشتراکی و غیرقابل جابه‌جایی با چنین وابستگی‌ای مواجه می‌شود، در صورتی که آن کتابخانه اشتراکی مورد نیاز صراحتاً در پیوند گنجانده نشده باشد، به‌طور خودکار تلاش می‌کند تا آن را مکان‌یابی کرده و در پیوند بگنجاند. در چنین حالتی، چندین دایرکتوری طبق توضیحات زیر جستجو می‌شوند. گزینه \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 به این روش تنها توسط پیونددهنده‌های بومی و پیونددهنده‌های متقاطعی که با گزینه \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 برای پیونددهنده در یک سیستم لینوکس، در صورت وجود فایل \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 با این حال در سیستم‌های مبتنی بر لینوکس یک نکته مهم دیگر وجود دارد: اگر گزینه \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 را برای تمام الگوهای عام (wildcard) بخش‌ها در اسکریپت پیونددهنده اعمال می‌کند. .IP \fB\-\-sort\-section=alignment\fR 4 .IX Item "--sort-section=alignment" این گزینه \f(CW\*(C`SORT_BY_ALIGNMENT\*(C'\fR را برای تمام الگوهای عام (wildcard) بخش‌ها در اسکریپت پیونددهنده اعمال می‌کند. .IP \fB\-\-spare\-dynamic\-tags=\fR\fIcount\fR 4 .IX Item "--spare-dynamic-tags=count" این گزینه تعداد خانه‌های خالی برای باقی گذاشتن در بخش \&.dynamic از اشیاء اشتراکی ELF را مشخص می‌کند. ممکن است ابزارهای پس‌پردازش مانند prelinker به این خانه‌های خالی نیاز داشته باشند. مقدار پیش‌فرض 5 است. .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 برابر 1 است. .IP \fB\-\-split\-by\-reloc[=\fR\fIcount\fR\fB]\fR 4 .IX Item "--split-by-reloc[=count]" تلاش می‌کند بخش‌های اضافی در فایل خروجی ایجاد کند تا هیچ بخش خروجی منفردی در فایل بیش از \fIcount\fR بازنشانی (relocation) دربرنداشته باشد. این گزینه هنگام تولید فایل‌های بازنشانی‌پذیر بزرگ برای بارگذاری در برخی هسته‌های بی‌درنگ با قالب فایل شیء COFF مفید است؛ چرا که COFF نمی‌تواند بیش از 65535 بازنشانی را در یک بخش منفرد نمایش دهد. توجه داشته باشید که این سازوکار برای قالب‌های فایل شیئی که از بخش‌های دلخواه پشتیبانی نمی‌کنند، کار نخواهد کرد. پیونددهنده بخش‌های ورودی منفرد را برای توزیع مجدد تکه‌تکه نمی‌کند؛ بنابراین اگر یک بخش ورودی منفرد شامل بیش از \fIcount\fR بازنشانی باشد، یک بخش خروجی نیز همان تعداد بازنشانی را دربرخواهد داشت. مقدار پیش‌فرض \fIcount\fR برابر 32768 است. .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) نیز ثبت می‌شود. نکته: اگر هر دو گزینه \&\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، حداکثر اندازه مجموعه مقیم (RSS) و زمان‌های اجرای کاربری و سیستمی را نیز در بر می‌گیرد. علاوه بر این، در صورت موجود بودن فراخوانی‌های کتابخانه سیستمی \fImallinfo\fR یا \fImallinfo2\fR، کل حافظه مصرفی گزارش می‌شود. .Sp این اطلاعات برای بخش‌های مجزای فرایند پیونددهی که به عنوان \fIفازها (phases)\fR نامیده می‌شوند نمایش داده می‌شود. توجه داشته باشید که فازهای مجزا می‌توانند یکدیگر را در بر بگیرند یا همپوشانی داشته باشند؛ بنابراین نباید تصور کرد که کل منابع مصرف‌شده توسط پیونددهنده، مجموع منابع مصرفی فازهای مجزا است. .Sp همچنین، اطلاعات برای یک فاز خاص به نام \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 rss user time system time memory \& Stats: name (microsec) (KiB) (seconds) (seconds) (KiB) \& Stats: ALL 390082 217740 0 0 25219440 \& Stats: ctf processing 12 0 0 0 0 \& Stats: string merge 1324 0 0 0 406544 \& Stats: parsing 349 288 0 0 119792 \& Stats: plugins 1 0 0 0 0 \& Stats: processing files 259616 214524 0 0 31569120 \& Stats: write 116493 0 0 0 48096 .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 استفاده می‌کند و مقدار پیش‌فرض زمان پیکربندی (configure-time) را بازنویسی می‌نماید. این گزینه تنها توسط پیونددهنده‌هایی پشتیبانی می‌شود که با \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 درخواست می‌کند تا در عوض از قالب سنتی (traditional) استفاده کند. .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، نشانی اولین بایت از نخستین قطعه (segment) را تنظیم می‌کند. توجه داشته باشید که وقتی \fB\-pie\fR همراه با \&\fB\-Ttext\-segment=\fR\fIorg\fR استفاده می‌شود، فایل اجرایی خروجی با نشان ET_EXEC علامت‌گذاری می‌شود تا تضمین گردد نشانی اولین بایت قطعه متن (text segment) در زمان اجرا \fIorg\fR خواهد بود. .IP \fB\-Trodata\-segment=\fR\fIorg\fR 4 .IX Item "-Trodata-segment=org" هنگام ایجاد یک فایل اجرایی یا شیء اشتراکی ELF برای مقصدی که در آن داده‌های فقط‌خواندنی در قطعه‌ای جداگانه و مجزا از متن اجرایی قرار دارند، نشانی اولین بایت از قطعه داده‌های فقط‌خواندنی را تنظیم می‌کند..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" نحوه مدیریت نمادهای حل‌نشده (unresolved symbols) را تعیین می‌کند. چهار مقدار ممکن برای \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 را نمایش داده و شبیه‌سازهای پیونددهنده (linker emulations) پشتیبانی‌شده را فهرست می‌کند. نمایش می‌دهد کدام فایل‌های ورودی می‌توانند و کدام نمی‌توانند باز شوند. اسکریپت پیونددهنده مورد استفاده را نمایش می‌دهد. اگر آرگومان اختیاری \fINUMBER\fR بزرگ‌تر از ۱ باشد، وضعیت نمادهای افزونه (plugin) نیز نمایش داده خواهد شد. .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" هنگامی که یک نماد عمومی (common symbol) با یک نماد عمومی دیگر یا با تعریف یک نماد ترکیب می‌شود، هشدار می‌دهد. پیونددهنده‌های یونیکس این شیوه تا حدی سهل‌انگارانه را مجاز می‌دانند، اما پیونددهنده‌ها در برخی سیستم‌عامل‌های دیگر چنین اجازه‌ای نمی‌دهند. این گزینه به شما اجازه می‌دهد مشکلات بالقوه ناشی از ترکیب نمادهای سراسری را پیدا کنید. متأسفانه برخی کتابخانه‌های C از این شیوه استفاده می‌کنند، بنابراین ممکن است هشدارهایی درباره نمادها در کتابخانه‌ها و همچنین در برنامه‌های خود دریافت کنید. .Sp سه نوع نماد سراسری وجود دارد که در اینجا با مثال‌های C نشان داده شده است: .RS 4 .IP "\fBint i = 1;\fR" 4 .IX Item "int i = 1;" یک تعریف، که در بخش داده‌های مقداردهی‌شده (initialized data) فایل خروجی قرار می‌گیرد. .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" اگر از هرگونه سازنده سراسری (global constructor) استفاده شود هشدار می‌دهد. این فقط برای چند قالب فایل شیء کاربرد دارد. برای قالب‌هایی مانند 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، چنانچه از پیونددهنده خواسته شود فایل خروجی حاوی یک پشته قابل‌اجرا (executable stack) ایجاد کند، ممکن است پیام‌های هشدار تولید نماید. سه وضعیت ممکن وجود دارد: .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 را نداشته باشد، رفتار پیش‌فرض وابسته به معماری مقصد (target) است. برای برخی مقاصد، عدم وجود چنین بخشی بیانگر آن است که پشته قابل‌اجرا \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" هشدار می‌دهد اگر چندین مقدار اشاره‌گر سراسری (global pointer) در فایل خروجی مورد نیاز باشد. این مورد فقط برای پردازنده‌های خاصی مانند Alpha معنادار است. به طور مشخص، برخی پردازنده‌ها مقادیر ثابتِ بزرگ را در یک بخش ویژه قرار می‌دهند. یک ثبات ویژه (اشاره‌گر سراسری) به میانهٔ این بخش اشاره می‌کند، به گونه‌ای که مقادیر ثابت می‌توانند به شکل کارآمد از طریق حالت آدرس‌دهی نسبی ثبات مبنا بارگذاری شوند. از آنجا که آفست در حالت نسبی ثبات مبنا ثابت و نسبتاً کوچک است (مثلاً ۱۶ بیت)، این امر حداکثر اندازهٔ مخزن ثوابت (constant pool) را محدود می‌سازد. بنابراین، در برنامه‌های بزرگ، اغلب استفاده از چندین مقدار اشاره‌گر سراسری برای توانایی آدرس‌دهی به همهٔ ثوابتِ ممکن ضروری است. این گزینه باعث می‌شود هر زمان که این حالت پیش بیاید، هشداری صادر شود. .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) بارگذاری‌پذیر با اندازهٔ غیرصفر بسازد که هر سه پرچم دسترسی خواندن، نوشتن و اجرا در آن تنظیم شده باشد. چنین قطعه‌ای نشان‌دهندهٔ یک آسیب‌پذیری امنیتی بالقوه است. علاوه بر این، اگر یک قطعهٔ ذخیره‌سازی محلی رشته (TLS) با پرچم مجوز اجرا ساخته شود، بدون توجه به اینکه پرچم‌های خواندن و/یا نوشتن تنظیم شده باشند یا خیر، هشدارهایی ایجاد خواهد شد. .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 را به یک فایل اجرایی مستقل از موقعیت (PIE) یا شیء اشتراکی (shared object) اضافه کند. .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" به ازای هر بایگانی (archive) ذکرشده در خط فرمان پس از گزینهٔ \&\fB\-\-whole\-archive\fR، تمام فایل‌های شیء موجود در بایگانی را در پیونددهی بگنجانید، به جای آنکه بایگانی برای یافتن فایل‌های شیء مورد نیاز جستجو شود. این مورد معمولاً برای تبدیل یک فایل بایگانی به یک کتابخانهٔ اشتراکی (shared library) به کار می‌رود و همهٔ شیءها را مجبور می‌سازد در کتابخانهٔ اشتراکیِ حاصل گنجانده شوند. این گزینه می‌تواند بیش از یک بار استفاده شود. .Sp این گزینه در میان جفت‌گزینهٔ \fB\-\-start\-lib\fR/\fB\-\-end\-lib\fR مجاز نیست. .Sp دو نکته هنگام استفاده از این گزینه از طریق gcc: نخست، gcc این گزینه را نمی‌شناسد، بنابراین باید از \fB\-Wl,\-whole\-archive\fR استفاده کنید. دوم، فراموش نکنید که پس از فهرست بایگانی‌های خود از \fB\-Wl,\-no\-whole\-archive\fR استفاده کنید، زیرا gcc فهرست بایگانی‌های خود را به پیوند شما می‌افزاید و ممکن است نخواهید این پرچم بر آن‌ها نیز تأثیر بگذارد. .IP \fB\-\-link\-mapless\fR 4 .IX Item "--link-mapless" بایگانی‌هایی را که فاقد نمایه (یا همان نقشهٔ نماد یا symbol map) هستند، برای تمام بایگانی‌های بعدی ذکرشده در خط فرمان می‌پذیرد. در صورت نبودن، چنین نمایه‌ای به طور داخلی و در حین اجرا به بهای کاهش کارایی ساخته می‌شود. این حالت پیش‌فرض است. .IP \fB\-\-wrap=\fR\fIsymbol\fR 4 .IX Item "--wrap=symbol" از یک تابع پوشاننده (wrapper function) برای \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 قرار دهید؛ اگر چنین کنید، ممکن است اسمبلر پیش از آنکه پیونددهنده فرصتی برای پوشاندن آن به \f(CW\*(C`malloc\*(C'\fR داشته باشد، فراخوانی را حل کند. .Sp تنها ارجاعات تعریف‌نشده توسط پیونددهنده جایگزین می‌شوند. بنابراین، ارجاعات درونیِ واحد ترجمه (translation unit) به \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. این گزینه در صورتی که اطلاعات بازگردانیِ تولیدشده توسط پیونددهنده پشتیبانی شود، به طور پیش‌فرض فعال است. .IP \fB\-\-discard\-sframe\fR 4 .IX Item "--discard-sframe" اطلاعات ردگیری پشتهٔ (stack trace) \f(CW\*(C`.sframe\*(C'\fR را از خروجی حذف می‌کند. این گزینه همچنین از ایجاد داده‌های ردگیری پشتهٔ SFrame برای بخش‌های کدِ تولیدشده توسط پیونددهنده مانند 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. افزایش این مقدار می‌تواند مدت‌زمان لازم برای انجام وظایف پیونددهنده را به قیمت افزایش حافظه مورد نیاز پیونددهنده کاهش دهد. به همین ترتیب، کاهش این مقدار می‌تواند نیازهای حافظه را به بهای کاهش سرعت کم کند. مقدار پیش‌فرض در شرایط عادی 4051 و در صورت استفاده از گزینه خط فرمان \&\fB\-\-reduce\-memory\-overheads\fR برابر 1021 است. .IP \fB\-\-hash\-style=\fR\fIstyle\fR 4 .IX Item "--hash-style=style" تعیین نوع جدول(های) درهم‌سازی پیونددهنده. مقدار \fIstyle\fR می‌تواند \&\f(CW\*(C`sysv\*(C'\fR برای بخش کلاسیک \f(CW\*(C`.hash\*(C'\fR در ELF، مقدار \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 و سبک جدید GNU \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) جهت تولید فایل نقشه پیوند، به جای الگوریتم جدید O(n) معرفی شد که حدود ۴۰٪ حافظه بیشتری برای ذخیره‌سازی نمادها مصرف می‌کند. .Sp اثر دیگر این سوئیچ، تنظیم اندازه پیش‌فرض جدول درهم‌سازی روی 1021 است که باز هم به بهای طولانی‌تر شدن زمان اجرای پیونددهنده، در مصرف حافظه صرفه‌جویی می‌کند. البته اگر از سوئیچ \fB\-\-hash\-size\fR استفاده شده باشد، این کار انجام نخواهد شد. .Sp سوئیچ \fB\-\-reduce\-memory\-overheads\fR ممکن است در نسخه‌های آینده پیونددهنده برای فعال کردن موازنه‌های دیگر نیز به کار گرفته شود. .IP \fB\-\-max\-cache\-size=\fR\fIsize\fR 4 .IX Item "--max-cache-size=size" به‌طور معمول \&\fBld\fR اطلاعات بازنشانی و جدول‌های نمادِ فایل‌های ورودی را با اندازه نامحدود در حافظه میان‌گیر می‌کند. این گزینه حداکثر اندازه حافظه پنهان را روی \fIsize\fR تنظیم می‌کند. توجه داشته باشید \- اگر از گزینه خط فرمان \&\fB\-\-no\-keep\-memory\fR استفاده شده باشد، پیونددهنده به گونه‌ای عمل می‌کند که گویی حداکثر اندازه حافظه پنهان روی 0 تنظیم شده است \- یعنی هیچ‌چیز نگه داشته نمی‌شود. .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 روی بخش‌های هنجاری محتویات خروجی؛ یا \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 شناسه‌ای تولید می‌کنند که در یک فایل خروجی یکسان همواره یکسان است، اما تقریباً به‌طور قطع در میان تمام فایل‌های خروجی غیریکسان، یکتا خواهد بود. این شناسه به منظور مقایسه به عنوان یک جمع‌آزمای برای محتویات فایل در نظر گرفته نشده است. یک فایل پیوندیافته ممکن است بعداً توسط ابزارهای دیگر تغییر یابد، اما رشته بیت شناسه ساخت (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 از درصدکدگذاری و کدگذاری‌های %[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 پیونددهنده PE از گزینه \fB\-shared\fR پشتیبانی می‌کند که باعث می‌شود خروجی به جای یک فایل اجرایی معمولی، یک کتابخانه پیوندیافته پویا (DLL) باشد. هنگام استفاده از این گزینه باید نام خروجی را به صورت \f(CW\*(C`*.dll\*(C'\fR مشخص کنید. علاوه بر این، پیونددهنده به‌طور کامل از فایل‌های استاندارد \&\f(CW\*(C`*.def\*(C'\fR پشتیبانی می‌کند که می‌توانند مانند یک فایل شیء در خط فرمان پیونددهنده مشخص شوند (در واقع، باید قبل از آرشیوهایی قرار گیرد که نمادها را از آن‌ها صادر می‌کند، تا اطمینان حاصل شود که درست مانند یک فایل شیء معمولی پیوند داده می‌شوند). .PP علاوه بر گزینه‌های مشترک برای تمام هدف‌ها، پیونددهنده PE از گزینه‌های خط فرمان بیشتری پشتیبانی می‌کند که مخصوص هدف PE هستند. گزینه‌هایی که مقدار می‌گیرند، می‌توانند با یک فاصله یا یک علامت مساوی از مقدار خود جدا شوند. .IP \fB\-\-add\-stdcall\-alias\fR 4 .IX Item "--add-stdcall-alias" در صورت مشخص شدن، نمادهای دارای پسوند stdcall (@\fInn\fR) هم به همان صورت که هستند و هم با پسوند حذف‌شده صادر خواهند شد. [این گزینه مخصوص پورت‌های پیونددهنده با هدف PE است] .IP "\fB\-\-base\-file\fR \fIfile\fR" 4 .IX Item "--base-file file" استفاده از \fIfile\fR به عنوان نام فایلی برای ذخیره آدرس‌های پایه تمام بازنشانی‌های مورد نیاز جهت تولید DLLها با \&\fIdlltool\fR. [این گزینه مخصوص پورت‌های پیونددهنده با هدف 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 مشخص نمایید. [این گزینه مخصوص پورت‌های پیونددهنده با هدف 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 مورد نیاز برای پشتیبانی از نام‌های طولانی‌تر هستند. به عنوان یک افزونه گنو، می‌توان با استفاده از این دو گزینه، امکان استفاده از آن‌ها را در ایمیج‌های اجرایی نیز فراهم کرد، یا (احتمالاً بدون دلیل خاصی!) استفاده از آن را در فایل‌های شیء غیرمجاز ساخت. ایمیج‌های اجرایی تولیدشده با این نام‌های طولانی بخش، تا حدی غیر استاندارد هستند زیرا یک جدول رشته را با خود حمل می‌کنند، و ممکن است هنگام بررسی با ابزارهای غیر گنو آگاه به 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) تفاوت دارد، تلاش می‌کند یک «پیوند فازی» (fuzzy linking) انجام دهد و آن نماد را با پیوند دادن به مورد منطبق حل نماید. برای نمونه، نماد تعریف‌نشدهٔ \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 را مشخص کنید، این ویژگی غیرفعال شده و چنین عدم تطابق‌هایی خطا در نظر گرفته می‌شوند. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای 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 برای بیشتر هدف‌ها، پیشوند پیش‌فرض نماد یک خط زیرین (_) است و در توضیحات هدف تعریف می‌شود. با این گزینه می‌توان پیشوند پیش‌فرض خط زیرین برای نمادها را غیرفعال/فعال کرد. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP \fB\-\-export\-all\-symbols\fR 4 .IX Item "--export-all-symbols" در صورت تعیین، تمام نمادهای سراسری موجود در اشیائی که برای ساخت یک DLL استفاده شده‌اند، توسط DLL صادر خواهند شد. توجه داشته باشید در صورتی که در غیر این صورت هیچ نماد صادرشده‌ای وجود نداشته باشد، این حالت پیش‌فرض است. هنگامی که نمادها به طور صریح از طریق فایل‌های DEF یا به طور ضمنی از طریق ویژگی‌های تابع (function attributes) صادر می‌شوند، پیش‌فرض این است که هیچ چیز دیگری صادر نشود مگر اینکه این گزینه مشخص شده باشد. توجه داشته باشید که نمادهای \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. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP "\fB\-\-exclude\-symbols\fR \fIsymbol\fR\fB,\fR\fIsymbol\fR\fB,...\fR" 4 .IX Item "--exclude-symbols symbol,symbol,..." فهرستی از نمادها را مشخص می‌کند که نباید به طور خودکار صادر شوند. نام نمادها می‌تواند با کاما یا دونقطه از یکدیگر جدا شود. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP \fB\-\-exclude\-all\-symbols\fR 4 .IX Item "--exclude-all-symbols" مشخص می‌کند که هیچ نمادی نباید به طور خودکار صادر شود. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP \fB\-\-file\-alignment\fR 4 .IX Item "--file-alignment" تراز فایل (file alignment) را تعیین می‌کند. بخش‌های موجود در فایل همواره در آفست‌هایی از فایل آغاز می‌شوند که مضربی از این عدد باشند. مقدار پیش‌فرض آن ۵۱۲ است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای 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) در این برنامه مشخص می‌کند. مقدار پیش‌فرض ۱ مگابایت رزروشده و ۴ کیلوبایت تثبیت‌شده است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP \fB\-\-kill\-at\fR 4 .IX Item "--kill-at" در صورت تعیین، پسوندهای stdcall (به شکل @\fInn\fR) پیش از صادر شدن نمادها، از آن‌ها حذف می‌شوند. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP \fB\-\-large\-address\-aware\fR 4 .IX Item "--large-address-aware" در صورت تعیین، بیت مربوطه در فیلد «Characteristics» از سرایند COFF تنظیم می‌شود تا مشخص کند این فایل اجرایی از آدرس‌های مجازی بزرگ‌تر از ۲ گیگابایت پشتیبانی می‌کند. این گزینه باید همراه با سوییچ /3GB یا /USERVA=\fIvalue\fR بر حسب مگابایت در بخش «[operating systems]» از فایل BOOT.INI به کار رود؛ در غیر این صورت، این بیت هیچ اثری نخواهد داشت. [این گزینه مختص پورت هدف‌گذاری‌شده برای i386 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) تنظیم شده باشد اما فایل اجرایی از آدرس‌های مجازی بزرگ‌تر از ۲ گیگابایت پشتیبانی نکند. [این گزینه مختص پورت هدف‌گذاری‌شده برای i386 PE در پیونددهنده است] .IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4 .IX Item "--major-image-version value" شمارهٔ اصلی «image version» را تعیین می‌کند. مقدار پیش‌فرض ۱ است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4 .IX Item "--major-os-version value" شمارهٔ اصلی «os version» را تعیین می‌کند. مقدار پیش‌فرض ۴ است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4 .IX Item "--major-subsystem-version value" شمارهٔ اصلی «subsystem version» را تعیین می‌کند. مقدار پیش‌فرض ۴ است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4 .IX Item "--minor-image-version value" شمارهٔ فرعی «image version» را تعیین می‌کند. مقدار پیش‌فرض ۰ است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4 .IX Item "--minor-os-version value" شمارهٔ فرعی «os version» را تعیین می‌کند. مقدار پیش‌فرض ۰ است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4 .IX Item "--minor-subsystem-version value" شمارهٔ فرعی «subsystem version» را تعیین می‌کند. مقدار پیش‌فرض ۰ است. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای 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 نام‌گذاری شود) می‌تواند برای ایجاد یک کتابخانهٔ وارداتی با \f(CW\*(C`dlltool\*(C'\fR استفاده شود یا به عنوان مرجعی برای نمادهای صادرشدهٔ خودکار یا ضمنی به کار رود. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای 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 به طور خودکار پایهٔ ایمیج را برای DLLها انتخاب می‌کند، که در صورت تمایل از پایهٔ \&\fIvalue\fR آغاز می‌شود، مگر اینکه مقداری با استفاده از آرگومان \f(CW\*(C`\-\-image\-base\*(C'\fR مشخص شده باشد. با استفاده از هشی که از نام dll برای ایجاد پایه‌های ایمیج یکتا برای هر DLL تولید می‌شود، از تداخل‌ها و بازنشانی‌ها (relocations) در حافظه که می‌توانند اجرای برنامه را به تأخیر بیندازند جلوگیری می‌شود. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP \fB\-\-disable\-auto\-image\-base\fR 4 .IX Item "--disable-auto-image-base" پایهٔ ایمیج یکتا را به طور خودکار ایجاد نمی‌کند. در صورتی که پایهٔ ایمیجی توسط کاربر مشخص نشده باشد (\f(CW\*(C`\-\-image\-base\*(C'\fR)، از پیش‌فرض سکو استفاده می‌شود. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4 .IX Item "--dll-search-prefix string" هنگام پیوند پویا به یک dll بدون کتابخانهٔ وارداتی، به جای \&\f(CW\*(C`lib.dll\*(C'\fR، ترجیحاً به دنبال \f(CW\*(C`.dll\*(C'\fR می‌گردد. این رفتار امکان تمایز آسان بین DLLهای ساخته‌شده برای «زیرسکو»های مختلف را فراهم می‌سازد: native، cygwin، uwin، pw و غیره. برای نمونه، DLLهای cygwin معمولاً از \&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fR استفاده می‌کنند. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای 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 imports) از DLLها انجام می‌دهد؛ بنابراین دور زدن سازوکار dllimport در سمت کاربر و ارجاع به نام نمادهای بدون دستکاری (unmangled) امکان‌پذیر می‌شود. [این گزینه مختص پورت‌های هدف‌گذاری‌شده برای PE در پیونددهنده است] .Sp نکات زیر مربوط به پیاده‌سازی اولیهٔ این ویژگی است و امروزه برای هدف‌های Cygwin و MinGW منسوخ به شمار می‌رود. .Sp نکته: استفاده از افزونهٔ \*(Aqauto\-import\*(Aq باعث می‌شود که بخش متنی (text section) از فایل ایمیج قابل نوشتن شود. این امر با مشخصات قالب 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 است. هر متغیر چندکلمه‌ای (آرایه‌ها، structها، 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 پیوند داده خواهد شد، یا صرفاً در حال ساخت/پیوند به یک کتابخانه ایستا هستید. در هنگام انتخاب میان روش‌های مختلف برای حل مشکل «آدرس مستقیم با آفست ثابت» (\*(Aqdirect address with constant offset\*(Aq)، باید کاربردهای معمول در دنیای واقعی را در نظر بگیرید: .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" برای واردسازی‌های DATA از DLLها، تلاشی برای پیوند پیچیدهٔ \f(CW\*(C`_symbol\*(C'\fR به \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR انجام نمی‌دهد. [این گزینه مختص پورت‌های هدف‌گیرندهٔ PE در پیونددهنده است] .IP \fB\-\-enable\-runtime\-pseudo\-reloc\fR 4 .IX Item "--enable-runtime-pseudo-reloc" اگر کُد شما حاوی عبارات توصیف‌شده در بخش \-\-enable\-auto\-import باشد (یعنی واردسازی‌های DATA از DLL با آفست غیرصفر)، این گزینه برداری از «بازمکانی‌های کاذب زمان اجرا» (\*(Aqruntime pseudo relocations\*(Aq) ایجاد می‌کند که می‌تواند توسط محیط زمان اجرا برای تنظیم ارجاعات به چنین داده‌هایی در کُد کلاینت شما استفاده شود. [این گزینه مختص پورت‌های هدف‌گیرندهٔ PE در پیونددهنده است] .IP \fB\-\-disable\-runtime\-pseudo\-reloc\fR 4 .IX Item "--disable-runtime-pseudo-reloc" برای واردسازی‌های DATA با آفست غیرصفر از DLLها، بازمکانی‌های کاذب ایجاد نمی‌کند. [این گزینه مختص پورت‌های هدف‌گیرندهٔ PE در پیونددهنده است] .IP \fB\-\-enable\-extra\-pe\-debug\fR 4 .IX Item "--enable-extra-pe-debug" اطلاعات اشکال‌زدایی اضافی مربوط به thunking نمادهای auto\-import را نمایش می‌دهد. [این گزینه مختص پورت‌های هدف‌گیرندهٔ PE در پیونددهنده است] .IP \fB\-\-section\-alignment\fR 4 .IX Item "--section-alignment" تراز بخش (section alignment) را تنظیم می‌کند. بخش‌ها در حافظه همیشه در آدرس‌هایی آغاز می‌شوند که مضربی از این عدد باشند. مقدار پیش‌فرض 0x1000 است. [این گزینه مختص پورت‌های هدف‌گیرندهٔ 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) برای این برنامه مشخص می‌کند. پیش‌فرض 2MB رزروشده و 4K تخصیص‌یافته است. [این گزینه مختص پورت‌های هدف‌گیرندهٔ 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 پذیرفته می‌شوند. [این گزینه مختص پورت‌های هدف‌گیرندهٔ 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 است. [این گزینه مختص پورت‌های هدف‌گیرندهٔ PE ۶۴ بیتی در پیونددهنده است] .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 معرفی شد. این گزینه به‌طور پیش‌فرض برای اهداف 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) سازگار است. این قابلیت در MS Windows XP SP2 معرفی شد. این گزینه به‌طور پیش‌فرض برای اهداف 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 سازگار است (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 یک برچسب زمانی واقعی در تصویر درج می‌کند. این رفتار پیش‌فرض است زیرا با کدهای قدیمی سازگاری دارد و به این معنی است که تصویر با دیگر ابزارهای اختصاصی کار خواهد کرد. مشکل این پیش‌فرض آن است که با هر بار پیوند دادن سورس‌های یکسان، تصاویر اندکی متفاوت تولید می‌شوند. گزینهٔ \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 برای پشتیبانی از کتابخانه‌های اشتراکی استفاده می‌کند. هر کتابخانهٔ اشتراکی در سیستم باید دارای یک نمایهٔ منحصربه‌فرد باشد؛ تمام فایل‌های اجرایی از نمایهٔ 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 را در اطلاعات بازگشایی فریم غیرفعال می‌کند. .IP \fB\-\-branch\-stub\fR 4 .IX Item "--branch-stub" این گزینه با درج بخش‌های استاب انشعاب (branch stub) در زمان نیاز جهت گسترش دامنهٔ انشعاب‌ها، تعدیل انشعاب (branch relaxation) پیونددهنده را فعال می‌کند. این گزینه معمولاً لازم نیست زیرا C\-SKY از دستورالعمل‌های پرش و فراخوانی (branch and call) پشتیبانی می‌کند که می‌توانند به کل محدودهٔ حافظه دسترسی داشته باشند و تعدیل انشعاب معمولاً توسط کامپایلر یا اسمبلر مدیریت می‌شود. .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 از گزینه‌های ویژه‌ای برای کنترل نگاشت تعویض بانک حافظه و تولید کد ترامپولین پشتیبانی می‌کنند. .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 stubs) یا در تعدیل (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 که شرایط تعدیل را برآورده کرده و هنگام محاسبهٔ بازنشانی مربوطه، به دستورالعمل‌های معادل \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 این گزینه‌ها تولید دستورالعمل‌های فشرده توسط پیونددهنده در مدخل‌های 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) نباید در برابر نوشتن محافظت شود و نباید اشتراکی باشد. از آنجا که هر دو بخش text و data هم قابل خواندن و هم قابل نوشتن هستند، بخش داده بلافاصله و به‌صورت متوالی پس از قطعهٔ کد تخصیص داده می‌شود. این قدیمی‌ترین قالب برای برنامه‌های اجرایی PDP11 است و از ابتدا تا 2.11BSD در سیستم‌های PDP11 Unix برای \fBld\fR پیش‌فرض بوده است..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) علامت‌گذاری می‌کند تا نشان دهد زمانی که فایل خروجی اجرا می‌شود، بخش کد (text) فقط‌خواندنی بوده و میان تمام فرایندهایی که همان فایل را اجرا می‌کنند قابل اشتراک‌گذاری خواهد بود. این شامل انتقال ناحیه‌های داده به اولین مرز صفحهٔ ۸ کیلوبایتی ممکن پس از پایان کد است. این گزینه یک قالب \fIpure 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) علامت‌گذاری می‌کند تا نشان دهد زمانی که فایل خروجی اجرا می‌شود، بخش‌های کد برنامه و داده با استفاده از قابلیت فضای مجزای دستورالعمل و داده در واحد مدیریت حافظه (MMU) مدل‌های بزرگ‌تر PDP11، در فضاهای آدرس جداگانه بارگذاری خواهند شد. این امر فضای آدرس در دسترس برنامه را دو برابر می‌کند. قطعهٔ کد دوباره ناب (pure)، محافظت‌شده در برابر نوشتن و قابل اشتراک‌گذاری است. تنها تفاوت در قالب خروجی بین این گزینه و سایر گزینه‌ها، علاوه بر عدد جادویی، این است که هر دو بخش کد و داده از مکان 0 شروع می‌شوند. گزینهٔ \fB\-z\fR این قالب را در 2.11BSD انتخاب می‌کرد. این گزینه یک قالب \fIseparate executable\fR (اجرایی مجزا) ایجاد می‌کند. .IP \fB\-\-no\-omagic\fR 4 .IX Item "--no-omagic" برای pdp11\-aout معادل \fB\-\-nmagic\fR است. .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) استفاده نکنید، تعیین می‌کند. مقدار آن باید یکی از نام‌های BFD برای یک قالب ورودی باشد. اگر هیچ \&\f(CW\*(C`GNUTARGET\*(C'\fR در محیط وجود نداشته باشد، \fBld\fR از قالب طبیعی هدف استفاده می‌کند. اگر \f(CW\*(C`GNUTARGET\*(C'\fR روی \f(CW\*(C`default\*(C'\fR تنظیم شده باشد، BFD تلاش می‌کند با بررسی فایل‌های باینری ورودی، قالب ورودی را شناسایی کند؛ این روش معمولاً موفقیت‌آمیز است، اما ابهامات بالقوه‌ای وجود دارد، چرا که هیچ روشی برای اطمینان از یکتا بودن عدد جادویی مورد استفاده برای تعیین قالب‌های فایل شیء وجود ندارد. با این حال، رویهٔ پیکربندی برای BFD در هر سیستم، قالب مرسوم آن سیستم را در ابتدای فهرست جستجو قرار می‌دهد، بنابراین ابهامات به نفع شیوهٔ مرسوم برطرف می‌شوند. .PP \&\f(CW\*(C`LDEMULATION\*(C'\fR شبیه‌سازی پیش‌فرض را در صورتی که از گزینهٔ \&\fB\-m\fR استفاده نکنید تعیین می‌کند. این شبیه‌سازی می‌تواند جنبه‌های مختلفی از رفتار پیونددهنده، به‌ویژه اسکریپت پیونددهندهٔ پیش‌فرض را تحت تأثیر قرار دهد. می‌توانید شبیه‌سازی‌های موجود را با گزینه‌های \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 لغو (override) شود. .PP اگر گزینهٔ خاص PE/COFF یعنی \fB\-\-insert\-timestamp\fR فعال باشد و متغیر محیطی \&\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\-2026 متعلق به Free Software Foundation, Inc. است. .PP اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ 1.3 یا هر نسخهٔ جدیدتر منتشرشده توسط Free Software Foundation اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر (Invariant Sections)، بدون متون روی جلد (Front\-Cover Texts)، و بدون متون پشت جلد (Back\-Cover Texts). نسخه‌ای از این مجوز در بخشی تحت عنوان «GNU Free Documentation License» گنجانده شده است.