.\" -*- 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)" aarch64-linux-gnu-ld \- پیونددهنده گنو برای معماری AArch64 .SH "خلاصه دستور (SYNOPSIS)" .IX Header "خلاصه دستور (SYNOPSIS)" ld [\fBگزینه‌ها\fR] \fIobjfile\fR ... .SH "توضیحات (DESCRIPTION)" .IX Header "توضیحات (DESCRIPTION)" \&\fBld\fR تعدادی از فایل‌های شیء و آرشیو را ترکیب کرده، داده‌های آن‌ها را بازنشانی می‌کند و ارجاعات نمادها را متصل می‌سازد. معمولاً آخرین مرحله در کامپایل یک برنامه، اجرای \fBld\fR است. .PP \&\fBld\fR فایل‌های زبان فرمان پیونددهنده (Linker Command Language) را که در ابرمجموعه‌ای از نحو «زبان فرمان ویرایشگر پیوند» شرکت AT&T نوشته شده‌اند می‌پذیرد تا کنترلی صریح و کامل بر فرآیند پیوند فراهم آورد. .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، باعث می‌شوند فایل در نقطه‌ای که گزینه در خط فرمان ظاهر می‌شود نسبت به فایل‌های شیء و دیگر گزینه‌های فایلی خوانده شود. تکرار گزینه‌های غیرفایلی با آرگومان متفاوت، یا هیچ اثر دیگری نخواهد داشت یا موارد قبلی آن گزینه را (آن‌هایی که در سمت چپ‌تر خط فرمان هستند) باطل می‌کند. گزینه‌هایی که می‌توانند به صورت معنادار بیش از یک بار مشخص شوند در توضیحات زیر ذکر شده‌اند. .PP آرگومان‌های غیرگزینه‌ای، فایل‌های شیء یا آرشیوهایی هستند که باید به یکدیگر پیوند داده شوند. آن‌ها می‌توانند قبل، بعد یا به صورت ترکیبی در میان گزینه‌های خط فرمان قرار گیرند، با این استثنا که یک آرگومان فایل شیء نباید بین یک گزینه و آرگومان آن قرار داده شود. .PP معمولاً پیونددهنده با حداقل یک فایل شیء فراخوانی می‌شود، اما می‌توانید اشکال دیگری از فایل‌های باینری ورودی را با استفاده از \fB\-l\fR، \fB\-R\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 در اینجا جدولی از سوییچ‌های عمومی خط فرمان که توسط پیونددهنده گنو پذیرفته می‌شوند آورده شده است: .IP \fB@\fR\fIfile\fR 4 .IX Item "@file" خواندن گزینه‌های خط فرمان از \fIfile\fR. گزینه‌های خوانده‌شده به جای گزینه اصلی @\fIfile\fR درج می‌شوند. اگر \fIfile\fR وجود نداشته باشد یا قابل خواندن نباشد، با گزینه به صورت تحت‌اللفظی رفتار شده و حذف نخواهد شد. .Sp گزینه‌ها در \fIfile\fR با نویسه فاصله خالی (whitespace) از یکدیگر جدا می‌شوند. یک نویسه فاصله را می‌توان با قرار دادن کل گزینه درون گیومه تکی یا دوگانه در آن گنجاند. هر نویسه‌ای (شامل بک‌اسلش) را می‌توان با پیشوند قرار دادن بک‌اسلش قبل از آن درج کرد. خود \fIfile\fR ممکن است حاوی گزینه‌های @\fIfile\fR بیشتری باشد؛ هر یک از این گزینه‌ها به صورت بازگشتی پردازش خواهند شد. .IP "\fB\-a\fR \fIkeyword\fR" 4 .IX Item "-a keyword" این گزینه برای سازگاری با HP/UX پشتیبانی می‌شود. آرگومان \fIkeyword\fR باید یکی از رشته‌های \fBarchive\fR، \fBshared\fR یا \fBdefault\fR باشد. \fB\-aarchive\fR از نظر عملکردی معادل \fB\-Bstatic\fR است، و دو کلیدواژه دیگر از نظر عملکردی معادل \fB\-Bdynamic\fR هستند. این گزینه را می‌توان به هر تعداد بار استفاده کرد. .IP "\fB\-\-audit\fR \fIAUDITLIB\fR" 4 .IX Item "--audit AUDITLIB" افزودن \fIAUDITLIB\fR به مدخل \f(CW\*(C`DT_AUDIT\*(C'\fR بخش پویا. وجود \fIAUDITLIB\fR بررسی نمی‌شود و از DT_SONAME مشخص‌شده در کتابخانه نیز استفاده نخواهد کرد. در صورت مشخص شدن چند باره، \f(CW\*(C`DT_AUDIT\*(C'\fR شامل فهرستی از رابط‌های حسابرسی جداشده با دونقطه برای استفاده خواهد بود. اگر پیونددهنده هنگام جستجوی کتابخانه‌های اشتراکی به شیئی با یک مدخل حسابرسی برخورد کند، یک مدخل متناظر \f(CW\*(C`DT_DEPAUDIT\*(C'\fR به فایل خروجی اضافه می‌کند. این گزینه فقط در بسترهای ELF که از رابط rtld\-audit پشتیبانی می‌کنند معنادار است. .IP "\fB\-b\fR \fIinput\-format\fR" 4 .IX Item "-b input-format" .PD 0 .IP \fB\-\-format=\fR\fIinput\-format\fR 4 .IX Item "--format=input-format" .PD \&\fBld\fR ممکن است طوری پیکربندی شده باشد که از بیش از یک نوع فایل شیء پشتیبانی کند. اگر \fBld\fR شما به این شیوه پیکربندی شده باشد، می‌توانید از گزینه \fB\-b\fR برای مشخص کردن قالب باینری فایل‌های شیء ورودی که پس از این گزینه در خط فرمان می‌آیند استفاده کنید. حتی هنگامی که \fBld\fR برای پشتیبانی از قالب‌های شیء جایگزین پیکربندی شده است، معمولاً نیازی به تعیین این گزینه ندارید، زیرا \fBld\fR باید طوری پیکربندی شده باشد که رایج‌ترین قالب در هر ماشین را به عنوان قالب ورودی پیش‌فرض در نظر بگیرد. \fIinput\-format\fR یک رشته متنی و نام قالبی خاص است که توسط کتابخانه‌های BFD پشتیبانی می‌شود. (می‌توانید قالب‌های باینری موجود را با دستور \fBobjdump \-i\fR فهرست کنید.) .Sp اگر فایل‌هایی با قالب باینری نامعمول را پیوند می‌دهید ممکن است بخواهید از این گزینه استفاده کنید. همچنین می‌توانید با قرار دادن \fB\-b\fR \fIinput\-format\fR پیش از هر گروه از فایل‌های شیء در قالبی خاص، برای تغییر صریح قالب‌ها (هنگام پیوند فایل‌های شیء با قالب‌های مختلف) از \fB\-b\fR استفاده نمایید. .Sp قالب پیش‌فرض از متغیر محیطی \f(CW\*(C`GNUTARGET\*(C'\fR گرفته می‌شود. .Sp شما همچنین می‌توانید قالب ورودی را از طریق یک اسکریپت و با استفاده از دستور \f(CW\*(C`TARGET\*(C'\fR تعریف کنید؛ .IP "\fB\-c\fR \fIMRI\-commandfile\fR" 4 .IX Item "-c MRI-commandfile" .PD 0 .IP \fB\-\-mri\-script=\fR\fIMRI\-commandfile\fR 4 .IX Item "--mri-script=MRI-commandfile" .PD برای سازگاری با پیونددهنده‌های تولیدشده توسط MRI، برنامه \fBld\fR فایل‌های اسکریپت نوشته‌شده به یک زبان فرمان جایگزین و محدود را می‌پذیرد که در بخش «MRI Compatible Script Files» از مستندات GNU ld توضیح داده شده است. فایل‌های اسکریپت MRI را با گزینه \fB\-c\fR معرفی کنید؛ از گزینه \fB\-T\fR برای اجرای اسکریپت‌های پیونددهنده نوشته‌شده به زبان اسکریپت‌نویسی عمومی \fBld\fR استفاده نمایید. اگر \fIMRI\-cmdfile\fR وجود نداشته باشد، \fBld\fR آن را در دایرکتوری‌های مشخص‌شده توسط گزینه‌های \fB\-L\fR جستجو می‌کند. .IP \fB\-d\fR 4 .IX Item "-d" .PD 0 .IP \fB\-dc\fR 4 .IX Item "-dc" .IP \fB\-dp\fR 4 .IX Item "-dp" .PD این سه گزینه معادل یکدیگرند؛ شکل‌های چندگانه برای سازگاری با سایر پیونددهنده‌ها پشتیبانی می‌شوند. آن‌ها به نمادهای عمومی (common symbols) فضا اختصاص می‌دهند، حتی اگر یک فایل خروجی جابه‌جاشونده (با \fB\-r\fR) مشخص شده باشد. دستور اسکریپت \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR نیز همین تأثیر را دارد. .IP "\fB\-\-depaudit\fR \fIAUDITLIB\fR" 4 .IX Item "--depaudit AUDITLIB" .PD 0 .IP "\fB\-P\fR \fIAUDITLIB\fR" 4 .IX Item "-P AUDITLIB" .PD افزودن \fIAUDITLIB\fR به مدخل \f(CW\*(C`DT_DEPAUDIT\*(C'\fR بخش پویا. وجود \fIAUDITLIB\fR بررسی نمی‌شود و از DT_SONAME مشخص‌شده در کتابخانه نیز استفاده نخواهد کرد. در صورت مشخص شدن چندین باره، \f(CW\*(C`DT_DEPAUDIT\*(C'\fR شامل فهرستی از رابط‌های حسابرسی جداشده با دونقطه خواهد بود. این گزینه تنها در بسترهای ELF که از رابط rtld\-audit پشتیبانی می‌کنند معنادار است. گزینه \fB\-P\fR برای سازگاری با 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 همچنین می‌تواند نام تابع اصلی باشد (در صورت وجود، بدون زیرخط آغازین و/یا \f(CB@number\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 همچنین می‌توانید در صورت پشتیبانی قالب خروجی، از لیست پویا برای کنترل نمادهایی که باید به جدول نمادهای پویا افزوده شوند استفاده کنید. توضیحات \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 به تعاریف درون کتابخانه اشتراکی محدود (bound) نخواهند شد. این گزینه هنگام ایجاد یک کتابخانه اشتراکی و در صورتی که \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 برای هر الگو در فایل مشخص می‌کند. قالب فایل همانند گره نسخه بدون نام گره و محدوده (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 را روی نام مشخص‌شده تنظیم می‌کند. این امر به پیونددهنده پویا اعلام می‌کند که جدول نمادهای شیء اشتراکی باید به عنوان یک فیلتر کمکی بر روی جدول نمادهای شیء اشتراکی \fIname\fR استفاده شود. .Sp اگر بعداً برنامه‌ای را با این شیء فیلتر پیوند دهید، در زمان اجرای برنامه، پیونددهنده پویا فیلد DT_AUXILIARY را مشاهده خواهد کرد. اگر پیونددهنده پویا نمادی را از شیء فیلتر حل کند، ابتدا بررسی می‌کند که آیا تعریفی در شیء اشتراکی \fIname\fR وجود دارد یا خیر. اگر وجود داشته باشد، به جای تعریف موجود در شیء فیلتر استفاده خواهد شد. شیء اشتراکی \fIname\fR نیازی نیست که وجود داشته باشد. بنابراین شیء اشتراکی \fIname\fR می‌تواند برای ارائه یک پیاده‌سازی جایگزین از توابع خاص، احتمالاً برای عیب‌یابی یا کارایی خاص ماشین، مورد استفاده قرار گیرد. .Sp این گزینه می‌تواند بیش از یک بار مشخص شود. مدخل‌های DT_AUXILIARY به همان ترتیبی که در خط فرمان ظاهر می‌شوند ایجاد خواهند شد. .IP "\fB\-F\fR \fIname\fR" 4 .IX Item "-F name" .PD 0 .IP \fB\-\-filter=\fR\fIname\fR 4 .IX Item "--filter=name" .PD هنگام ایجاد یک شیء اشتراکی ELF، فیلد داخلی DT_FILTER را روی نام مشخص‌شده تنظیم می‌کند. این کار به پیونددهنده پویا می‌گوید که جدول نمادهای شیء اشتراکی در حال ایجاد باید به عنوان فیلتری بر روی جدول نمادهای شیء اشتراکی \fIname\fR استفاده شود. .Sp اگر بعداً برنامه‌ای را در برابر این شیء فیلتر پیوند دهید، هنگام اجرای برنامه، پیونددهنده پویا فیلد DT_FILTER را مشاهده خواهد کرد. پیونددهنده پویا نمادها را طبق روال معمول بر اساس جدول نمادهای شیء فیلتر حل خواهد کرد، اما در واقع به تعاریف موجود در شیء اشتراکی \fIname\fR پیوند می‌زند. بنابراین از شیء فیلتر می‌توان برای انتخاب زیرمجموعه‌ای از نمادهای ارائه‌شده توسط شیء \fIname\fR استفاده کرد. .Sp برخی از پیونددهنده‌های قدیمی‌تر از گزینه \fB\-F\fR در سرتاسر زنجیره ابزار کامپایل برای تعیین قالب فایل شیء برای هر دو فایل شیء ورودی و خروجی استفاده می‌کردند. پیونددهنده گنو از سازوکارهای دیگری برای این منظور استفاده می‌کند: گزینه‌های \fB\-b\fR، \fB\-\-format\fR، \fB\-\-oformat\fR، دستور \f(CW\*(C`TARGET\*(C'\fR در اسکریپت‌های پیونددهنده، و متغیر محیطی \f(CW\*(C`GNUTARGET\*(C'\fR. پیونددهنده گنو هنگامی که یک شیء اشتراکی ELF ایجاد نمی‌شود گزینه \fB\-F\fR را نادیده خواهد گرفت. .IP \fB\-fini=\fR\fIname\fR 4 .IX Item "-fini=name" هنگام ایجاد یک فایل اجرایی یا شیء اشتراکی ELF، با تنظیم DT_FINI روی آدرس تابع، نام NAME را هنگام تخلیه شدن فایل اجرایی یا شیء اشتراکی فراخوانی می‌کند. به طور پیش‌فرض، پیونددهنده از \f(CW\*(C`_fini\*(C'\fR به عنوان تابع فراخوانی استفاده می‌نماید. .IP \fB\-g\fR 4 .IX Item "-g" نادیده گرفته می‌شود. برای سازگاری با سایر ابزارها ارائه شده است. .IP "\fB\-G\fR \fIvalue\fR" 4 .IX Item "-G value" .PD 0 .IP \fB\-\-gpsize=\fR\fIvalue\fR 4 .IX Item "--gpsize=value" .PD حداکثر اندازه اشیایی را که باید با استفاده از ثبات GP بهینه‌سازی شوند روی \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" انجام یک پیوند افزایشی (مشابه گزینه \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 آغاز شود، این پیشوند با پیشوند sysroot که توسط گزینه \fB\-\-sysroot\fR کنترل می‌شود یا هنگام پیکربندی پیونددهنده مشخص شده است، جایگزین می‌گردد. .Sp مجموعه پیش‌فرض مسیرهای جستجوشده (بدون تعیین با \fB\-L\fR) به این بستگی دارد که \fBld\fR از چه حالت شبیه‌سازی استفاده می‌کند و در برخی موارد به نحوه پیکربندی آن نیز وابسته است. .Sp مسیرها را می‌توان در یک اسکریپت پیوند با دستور \f(CW\*(C`SEARCH_DIR\*(C'\fR نیز مشخص کرد. دایرکتوری‌هایی که به این شیوه مشخص می‌شوند، در نقطه‌ای که اسکریپت پیونددهنده در خط فرمان ظاهر می‌شود جستجو خواهند شد. .IP "\fB\-m\fR \fIemulation\fR" 4 .IX Item "-m emulation" شبیه‌سازی پیونددهنده \fIemulation\fR. می‌توانید شبیه‌سازی‌های موجود را با گزینه‌های \fB\-\-verbose\fR یا \fB\-V\fR فهرست کنید. .Sp اگر از گزینه \fB\-m\fR استفاده نشود، در صورت تعریف بودن متغیر محیطی \f(CW\*(C`LDEMULATION\*(C'\fR، شبیه‌سازی از آن گرفته می‌شود. .Sp در غیر این صورت، شبیه‌سازی پیش‌فرض به نحوه پیکربندی پیونددهنده بستگی دارد. .IP \fB\-\-remap\-inputs=\fR\f(BIpattern\fR\fB=\fR\f(BIfilename\fR 4 .IX Item "--remap-inputs=pattern=filename" .PD 0 .IP \fB\-\-remap\-inputs\-file=\fR\f(BIfile\fR 4 .IX Item "--remap-inputs-file=file" .PD این گزینه‌ها به نام‌های فایل‌های ورودی اجازه می‌دهند قبل از تلاش پیونددهنده برای باز کردن آن‌ها تغییر کنند. گزینه \fB\-\-remap\-inputs=foo.o=bar.o\fR باعث می‌شود هر تلاشی برای بارگذاری فایلی به نام \fIfoo.o\fR در عوض تلاش کند فایلی با نام \fIbar.o\fR را بارگذاری نماید. الگوهای عام (wildcard) در اولین نام فایل مجاز هستند، بنابراین \fB\-\-remap\-inputs=foo*.o=bar.o\fR هر فایل ورودی را که با \fIfoo*.o\fR مطابقت دارد به \fIbar.o\fR تغییر نام می‌دهد. .Sp شکل جایگزین این گزینه یعنی \fB\-\-remap\-inputs\-file=filename\fR امکان خواندن بازنگاشت‌ها از یک فایل را فراهم می‌سازد. هر خط در فایل می‌تواند حاوی یک بازنگاشت واحد باشد. خطوط خالی نادیده گرفته می‌شوند. هر چیزی از یک کاراکتر هش (\fB#\fR) تا انتهای خط به عنوان یک توضیح در نظر گرفته شده و نادیده گرفته می‌شود. الگوی نگاشت را می‌توان با فاصله یا علامت مساوی (\fB=\fR) از نام فایل جدا کرد. .Sp این گزینه‌ها می‌توانند چندین بار مشخص شوند. محتوای آن‌ها انباشته می‌شود. بازنگاشت‌ها به همان ترتیبی که در خط فرمان آمده‌اند پردازش می‌شوند، و اگر از یک فایل بیایند، به همان ترتیبی که در فایل آمده‌اند پردازش خواهند شد. در صورت یافتن تطابق، بررسی بیشتری برای آن نام فایل انجام نمی‌شود. .Sp اگر نام فایل جایگزین \fI/dev/null\fR یا فقط \fINUL\fR باشد، بازنگاشت در عمل باعث نادیده گرفته شدن فایل ورودی خواهد شد. این می‌تواند روشی مناسب برای آزمایش حذف فایل‌های ورودی از یک محیط ساخت پیچیده باشد. .Sp توجه داشته باشید که این گزینه وابسته به موقعیت است و تنها بر نام فایل‌هایی تأثیر می‌گذارد که بعد از آن در خط فرمان می‌آیند. بنابراین: .Sp .Vb 1 \& ld foo.o \-\-remap\-inputs=foo.o=bar.o .Ve .Sp هیچ اثری نخواهد داشت، در حالی که: .Sp .Vb 1 \& ld \-\-remap\-inputs=foo.o=bar.o foo.o .Ve .Sp نام فایل ورودی \fIfoo.o\fR را به \fIbar.o\fR تغییر خواهد داد. .Sp توجه \- این گزینه‌ها همچنین بر فایل‌هایی که توسط گزاره‌های \fIINPUT\fR در اسکریپت‌های پیونددهنده ارجاع داده شده‌اند تأثیر می‌گذارند. اما از آنجا که اسکریپت‌های پیونددهنده پس از خواندن کل خط فرمان پردازش می‌شوند، موقعیت گزینه‌های بازنگاشت در خط فرمان اهمیت چندانی ندارد. .Sp اگر گزینه \fBverbose\fR فعال باشد، هرگونه نگاشت مطابق گزارش داده می‌شود، هرچند مجدداً گزینه \fBverbose\fR باید در خط فرمان \fIقبل\fR از ظاهر شدن نام فایل‌های بازنگاشت‌شده فعال گردد. .Sp اگر گزینه‌های \fB\-Map\fR یا \fB\-\-print\-map\fR فعال باشند، فهرست بازنگاشت در خروجی مپ گنجانده خواهد شد. .IP \fB\-M\fR 4 .IX Item "-M" .PD 0 .IP \fB\-\-print\-map\fR 4 .IX Item "--print-map" .PD چاپ یک نقشه پیوند (link map) در خروجی استاندارد. نقشه پیوند اطلاعاتی در مورد پیوند فراهم می‌کند، از جمله موارد زیر: .RS 4 .IP \(bu 4 محل نگاشت فایل‌های شیء در حافظه. .IP \(bu 4 نحوه تخصیص نمادهای عمومی (common symbols). .IP \(bu 4 تمام اعضای آرشیو که در پیوند گنجانده شده‌اند، به همراه ذکر نمادی که باعث وارد شدن آن عضو آرشیو شده است. .IP \(bu 4 مقادیر اختصاص‌یافته به نمادها. .Sp توجه \- نمادهایی که مقادیر آن‌ها توسط عبارتی محاسبه می‌شود که شامل ارجاع به مقدار قبلی همان نماد است، ممکن است نتیجه صحیحی در نقشه پیوند نمایش ندهند. این بدان دلیل است که پیونددهنده نتایج میانی را دور می‌ریزد و تنها مقدار نهایی یک عبارت را حفظ می‌کند. در چنین شرایطی پیونددهنده مقدار نهایی را درون کروشه نمایش می‌دهد. بنابراین برای مثال یک اسکریپت پیونددهنده شامل: .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 properties). .Sp هنگامی که پیونددهنده بخش‌های ورودی .note.gnu.property را در یک بخش خروجی .note.gnu.property ادغام می‌کند، برخی از ویژگی‌ها حذف یا به‌روزرسانی می‌شوند. این اقدامات در نقشه پیوند گزارش می‌گردند. برای مثال: .Sp .Vb 1 \& Removed property 0xc0000002 to merge foo.o (0x1) and bar.o (not found) .Ve .Sp این نشان می‌دهد که ویژگی 0xc0000002 هنگام ادغام ویژگی‌ها در \fIfoo.o\fR (که مقدار ویژگی 0xc0000002 آن 0x1 است) و \fIbar.o\fR (که فاقد ویژگی 0xc0000002 است) از خروجی حذف شده است. .Sp .Vb 1 \& Updated property 0xc0010001 (0x1) to merge foo.o (0x1) and bar.o (0x1) .Ve .Sp این نشان می‌دهد که مقدار ویژگی 0xc0010001 هنگام ادغام ویژگی‌ها در \fIfoo.o\fR (که مقدار ویژگی 0xc0010001 آن 0x1 است) و \fIbar.o\fR (که مقدار ویژگی 0xc0010001 آن 0x1 است) به 0x1 در خروجی به‌روزرسانی شده است. .IP \(bu 4 در برخی اهداف ELF، فهرستی از اصلاحات درج‌شده توسط \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)، و غیرفعال کردن پیوند در برابر کتابخانه‌های اشتراکی. اگر قالب خروجی از اعداد جادویی (magic numbers) به سبک یونیکس پشتیبانی کند، خروجی را با \f(CW\*(C`NMAGIC\*(C'\fR علامت‌گذاری می‌نماید. .IP \fB\-N\fR 4 .IX Item "-N" .PD 0 .IP \fB\-\-omagic\fR 4 .IX Item "--omagic" .PD بخش‌های text و data را به صورت خواندنی و نوشتنی تنظیم می‌کند. همچنین قطعه data را تراز صفحه‌ای نمی‌کند و پیوند با کتابخانه‌های اشتراکی را غیرفعال می‌سازد. اگر قالب خروجی از اعداد جادویی سبک یونیکس پشتیبانی کند، خروجی را به عنوان \f(CW\*(C`OMAGIC\*(C'\fR علامت‌گذاری می‌نماید. توجه: اگرچه بخش text قابل‌نوشتن برای اهداف PE\-COFF مجاز است، اما با مشخصات قالبی که توسط مایکروسافت منتشر شده مطابقت ندارد. .IP \fB\-\-no\-omagic\fR 4 .IX Item "--no-omagic" این گزینه بیشتر اثرات گزینه \fB\-N\fR را خنثی می‌کند. بخش text را به صورت فقط‌خواندنی تنظیم کرده و قطعه data را وادار به تراز صفحه‌ای می‌کند. توجه \- این گزینه پیوند با کتابخانه‌های اشتراکی را فعال نمی‌کند. برای این منظور از \fB\-Bdynamic\fR استفاده کنید. .IP "\fB\-o\fR \fIoutput\fR" 4 .IX Item "-o output" .PD 0 .IP \fB\-\-output=\fR\fIoutput\fR 4 .IX Item "--output=output" .PD استفاده از \fIoutput\fR به عنوان نام برنامه تولیدشده توسط \fBld\fR؛ اگر این گزینه مشخص نشود، نام \fIa.out\fR به صورت پیش‌فرض استفاده می‌شود. دستور اسکریپت \f(CW\*(C`OUTPUT\*(C'\fR نیز می‌تواند نام فایل خروجی را مشخص کند. .Sp توجه \- پیونددهنده پیش از شروع به نوشتن در فایل خروجی، آن را حذف خواهد کرد. این کار حتی اگر به دلیل خطاها مشخص شود که پیوند نمی‌تواند کامل شود، انجام خواهد گرفت. .Sp توجه \- پیونددهنده بررسی خواهد کرد که نام فایل خروجی با نام هیچ‌یک از فایل‌های ورودی مطابقت نداشته باشد، اما تمام بررسی همین است. به ویژه اگر فایل خروجی یک فایل منبع یا فایل مهم دیگری را رونویسی کند، هشداری صادر نمی‌کند. بنابراین در سیستم‌های ساخت توصیه می‌شود از گزینه \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" نوشتن یک فایل وابستگی (dependency file) در \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 با نسخه‌های پیشین سازگار هستند، بنابراین کپی کردن جدیدترین افزونه کافی است. .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" واداشتن فایل خروجی به داشتن بخش‌های پویا. این گزینه مختص اهداف VxWorks است. .IP \fB\-r\fR 4 .IX Item "-r" .PD 0 .IP \fB\-\-relocatable\fR 4 .IX Item "--relocatable" .PD تولید خروجی جابه‌جاشونده (relocatable)\-\-\-یعنی تولید فایل خروجی که می‌تواند به نوبه خود به عنوان ورودی برای \fBld\fR عمل کند. این عمل اغلب \fIپیوند جزئی\fR (partial linking) نامیده می‌شود. به عنوان یک اثر جانبی، در محیط‌هایی که از اعداد جادویی استاندارد یونیکس پشتیبانی می‌کنند، این گزینه همچنین عدد جادویی فایل خروجی را روی \f(CW\*(C`OMAGIC\*(C'\fR تنظیم می‌کند. اگر این گزینه مشخص نشود، یک فایل مطلق تولید می‌شود. هنگام پیوند برنامه‌های ++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، پیونددهنده این بخش را به عنوان یک ورودی مجزا استخراج خواهد کرد. .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 تلاش برای اطمینان از اینکه تنها یک قطعه فقط‌خواندنی غیرکدی واحد ایجاد می‌شود. تنها زمانی مفید است که همراه با گزینه \fB\-z separate\-code\fR استفاده شود. باینری‌های حاصل باید کوچک‌تر از زمانی باشند که \fB\-z separate\-code\fR به تنهایی استفاده می‌شود. بدون این گزینه یا اگر \fB\-\-no\-rosegment\fR مشخص شود، گزینه \fB\-z separate\-code\fR دو قطعه فقط‌خواندنی ایجاد می‌کند: یکی قبل از قطعه کد و دیگری بعد از آن. .Sp نام این گزینه‌ها ممکن است گمراه‌کننده باشد، اما به منظور سازگاری پیونددهنده با پیونددهنده‌های LLD و GOLD انتخاب شده‌اند. .Sp این گزینه‌ها تنها توسط اهداف ELF پشتیبانی می‌شوند. .IP \fB\-s\fR 4 .IX Item "-s" .PD 0 .IP \fB\-\-strip\-all\fR 4 .IX Item "--strip-all" .PD حذف تمام اطلاعات نمادها از فایل خروجی. .IP \fB\-S\fR 4 .IX Item "-S" .PD 0 .IP \fB\-\-strip\-debug\fR 4 .IX Item "--strip-debug" .PD حذف اطلاعات نمادهای دیباگر (اما نه تمام نمادها) از فایل خروجی. .IP \fB\-\-strip\-discarded\fR 4 .IX Item "--strip-discarded" .PD 0 .IP \fB\-\-no\-strip\-discarded\fR 4 .IX Item "--no-strip-discarded" .PD حذف (یا عدم حذف) نمادهای سراسری تعریف‌شده در بخش‌های دور ریخته‌شده. به طور پیش‌فرض فعال است. .IP \fB\-plugin\-save\-temps\fR 4 .IX Item "-plugin-save-temps" ذخیره دائمی فایل‌های میانی موقت مربوط به افزونه. .IP \fB\-t\fR 4 .IX Item "-t" .PD 0 .IP \fB\-\-trace\fR 4 .IX Item "--trace" .PD چاپ نام فایل‌های ورودی هم‌زمان با پردازش آن‌ها توسط \fBld\fR. اگر \fB\-t\fR دو بار داده شود، اعضای درون آرشیوها نیز چاپ می‌شوند. خروجی \fB\-t\fR برای تولید فهرستی از تمام فایل‌های شیء و اسکریپت‌های دخیل در پیوند مفید است، به عنوان مثال، هنگام بسته‌بندی فایل‌ها برای یک گزارش باگ پیونددهنده. .IP "\fB\-T\fR \fIscriptfile\fR" 4 .IX Item "-T scriptfile" .PD 0 .IP \fB\-\-script=\fR\fIscriptfile\fR 4 .IX Item "--script=scriptfile" .PD استفاده از \fIscriptfile\fR به عنوان اسکریپت پیونددهنده. این اسکریپت جایگزین اسکریپت پیش‌فرض \fBld\fR می‌شود (به جای اضافه شدن به آن)، مگر اینکه اسکریپت حاوی \f(CW\*(C`INSERT\*(C'\fR باشد؛ بنابراین \fIcommandfile\fR باید هر آنچه را برای توصیف فایل خروجی لازم است مشخص کند. .Sp اگر \fIscriptfile\fR در پوشه جاری وجود نداشته باشد، \f(CW\*(C`ld\*(C'\fR آن را در پوشه‌های مشخص‌شده توسط هر گزینه قبلی \fB\-L\fR جستجو می‌کند. .Sp گزینه‌های خط فرمان که قبل از گزینه \fB\-T\fR ظاهر می‌شوند می‌توانند بر اسکریپت تأثیر بگذارند، اما گزینه‌های خط فرمان پس از آن تأثیری ندارند. .Sp گزینه‌های چندگانه \fB\-T\fR در صورتی که اسکریپت فعلی را تقویت کنند انباشته می‌شوند، در غیر این صورت آخرین گزینه غیرتقویت‌کننده \fB\-T\fR استفاده خواهد شد. .Sp روش‌های دیگری نیز برای مشخص کردن اسکریپت‌های پیونددهنده وجود دارد. .IP "\fB\-dT\fR \fIscriptfile\fR" 4 .IX Item "-dT scriptfile" .PD 0 .IP \fB\-\-default\-script=\fR\fIscriptfile\fR 4 .IX Item "--default-script=scriptfile" .PD استفاده از \fIscriptfile\fR به عنوان اسکریپت پیش‌فرض پیونددهنده. .Sp این گزینه شبیه گزینه \fB\-\-script\fR است، با این تفاوت که پردازش اسکریپت تا بعد از پردازش بقیه خط فرمان به تعویق می‌افتد. این به گزینه‌هایی که بعد از گزینه \fB\-\-default\-script\fR در خط فرمان قرار گرفته‌اند اجازه می‌دهد بر رفتار اسکریپت پیونددهنده تأثیر بگذارند، که می‌تواند زمانی که خط فرمان پیونددهنده به طور مستقیم توسط کاربر کنترل نمی‌شود مهم باشد (مثلاً به این دلیل که خط فرمان توسط ابزار دیگری مانند \fBgcc\fR ساخته می‌شود). .IP "\fB\-u\fR \fIsymbol\fR" 4 .IX Item "-u symbol" .PD 0 .IP \fB\-\-undefined=\fR\fIsymbol\fR 4 .IX Item "--undefined=symbol" .PD واداشتن \fIsymbol\fR به وارد شدن در فایل خروجی به عنوان یک نماد تعریف‌نشده. انجام این کار ممکن است، برای مثال، پیوند دادن ماژول‌های اضافی از کتابخانه‌های استاندارد را فعال کند. \fB\-u\fR می‌تواند با آرگومان‌های مختلف تکرار شود تا نمادهای تعریف‌نشده بیشتری وارد شوند. این گزینه معادل دستور اسکریپت پیونددهنده \f(CW\*(C`EXTERN\*(C'\fR است. .Sp اگر این گزینه برای واداشتن ماژول‌های اضافی به کشیده شدن به درون پیوند استفاده می‌شود، و اگر باقی ماندن نماد به عنوان تعریف‌نشده یک خطا محسوب می‌شود، باید به جای آن از گزینه \fB\-\-require\-defined\fR استفاده کرد. .IP \fB\-\-require\-defined=\fR\fIsymbol\fR 4 .IX Item "--require-defined=symbol" الزام به اینکه \fIsymbol\fR در فایل خروجی تعریف شده باشد. این گزینه مشابه گزینه \fB\-\-undefined\fR است با این تفاوت که اگر \fIsymbol\fR در فایل خروجی تعریف نشده باشد، پیونددهنده یک خطا صادر کرده و خارج می‌شود. همین اثر را می‌توان در یک اسکریپت پیونددهنده با استفاده از \f(CW\*(C`EXTERN\*(C'\fR، \f(CW\*(C`ASSERT\*(C'\fR و \f(CW\*(C`DEFINED\*(C'\fR در کنار یکدیگر به دست آورد. این گزینه را می‌توان چندین بار برای الزام به نمادهای اضافی به کار برد. .IP \fB\-Ur\fR 4 .IX Item "-Ur" برای برنامه‌هایی که از سازنده‌ها یا نابودکننده‌ها (constructors یا destructors) استفاده نمی‌کنند، یا برای سیستم‌های مبتنی بر ELF، این گزینه معادل \fB\-r\fR است: خروجی جابه‌جاشونده تولید می‌کند\-\-\-یعنی یک فایل خروجی که به نوبه خود می‌تواند به عنوان ورودی برای \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 ایجاد می‌کند، یا در صورتی که آرگومان عام اختیاری \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 تعیین ۱ بایت لایه درونی \f(CW\*(C`NOP\*(C'\fR (padding) هنگام تبدیل فراخوانی غیرمستقیم به یک تابع محلی تعریف‌شده 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 ترکیب چندین بخش بازنشانی پویا و مرتب‌سازی آن‌ها برای بهبود کش جستجوی نمادهای پویا. در صورت استفاده از \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 تبدیل نمادهای ضعیف تعریف‌نشده (undefined weak symbols) به نمادهای پویا هنگام ساخت یک شیء پویا، مشروط بر اینکه از یک فایل شیء معمولی ارجاع داده شده باشند و به دلیل دیده‌شدن نماد (visibility) یا نسخه‌بندی محلی نشده باشند. در صورت استفاده از \fBnodynamic\-undefined\-weak\fR آن‌ها را پویا نکنید. اگر هیچ‌یک از گزینه‌ها داده نشود، یک هدف ممکن است به صورت پیش‌فرض هر کدام را در نظر بگیرد یا انتخاب دیگری از نمادهای ضعیف تعریف‌نشده را پویا سازد. همه اهداف از این گزینه‌ها پشتیبانی نمی‌کنند. .IP \fBexecstack\fR 4 .IX Item "execstack" علامت‌گذاری شیء به عنوان نیازمند پشته اجرایی (executable stack). .IP \fBglobal\fR 4 .IX Item "global" این گزینه فقط هنگام ساخت یک شیء اشتراکی معنادار است. این گزینه نمادهای تعریف‌شده توسط این شیء اشتراکی را برای حل نمادهای کتابخانه‌هایی که بعداً بارگذاری می‌شوند در دسترس قرار می‌دهد. .IP \fBglobalaudit\fR 4 .IX Item "globalaudit" این گزینه فقط هنگام ساخت یک فایل اجرایی پویا معنادار است. این گزینه با تنظیم بیت \f(CW\*(C`DF_1_GLOBAUDIT\*(C'\fR در برچسب پویای \f(CW\*(C`DT_FLAGS_1\*(C'\fR، فایل اجرایی را به عنوان نیازمند حسابرسی سراسری علامت‌گذاری می‌کند. حسابرسی سراسری مستلزم این است که هر کتابخانه حسابرسی تعریف‌شده از طریق گزینه‌های خط فرمان \fB\-\-depaudit\fR یا \fB\-P\fR برای تمام اشیای پویای بارگذاری‌شده توسط برنامه اجرا شود. .IP \fBibtplt\fR 4 .IX Item "ibtplt" تولید مدخل‌های PLT مجهز به ردگیری انشعاب غیرمستقیم اینتل (Intel Indirect Branch Tracking یا IBT). برای Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBibt\fR 4 .IX Item "ibt" تولید GNU_PROPERTY_X86_FEATURE_1_IBT در بخش .note.gnu.property برای نشان دادن سازگاری با IBT. این گزینه همچنین مستلزم \fBibtplt\fR است. برای Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBindirect\-extern\-access\fR 4 .IX Item "indirect-extern-access" .PD 0 .IP \fBnoindirect\-extern\-access\fR 4 .IX Item "noindirect-extern-access" .PD تولید GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS در بخش .note.gnu.property تا نشان دهد فایل شیء نیازمند اشاره‌گرهای متعارف تابع است و نمی‌تواند با بازنشانی کپی (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)، نه زمان بارگذاری. اتصال تنبل (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 ذخیره می‌کند، باینری‌های حاصل با پیونددهنده‌های پویای قدیمی ناسازگارند (مانند نسخه‌های قدیمی 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" مشخص می‌کند که شیء نباید در زمان اجرا تخلیه (unload) شود. .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" غیرفعال کردن بررسی سرریز بازنشانی (relocation overflow). اگر در زمان اجرا سرریز بازنشانی پویا وجود نداشته باشد، می‌توان از این گزینه استفاده کرد. برای x86_64 پشتیبانی می‌شود. .IP \fBmemory\-seal\fR 4 .IX Item "memory-seal" .PD 0 .IP \fBnomemory\-seal\fR 4 .IX Item "nomemory-seal" .PD دستور به فایل اجرایی یا کتابخانه اشتراکی مبنی بر اینکه تمام قطعات PT_LOAD باید مهر و موم شوند (sealed) تا از دستکاری‌های بعدی (مانند تغییر پرچم‌های حفاظت، اندازه قطعه، یا حذف نگاشت) جلوگیری شود. این یک مقاوم‌سازی امنیتی است که نیازمند پشتیبانی سیستم است. این گزینه 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 تولید بازنشانی نسبی فشرده در فایل‌های اجرایی مستقل از موقعیت (PIE) و کتابخانه‌های اشتراکی. این گزینه مدخل‌های \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 است که بازنشانی نسبی فشرده را غیرفعال می‌سازد. هنگام پیوند با کتابخانه GNU C، یک وابستگی نسخه نماد GLIBC_ABI_DT_RELR بر روی کتابخانه اشتراکی C به خروجی اضافه می‌شود. برای i386 و x86\-64 پشتیبانی می‌شود. .IP \fBrelro\fR 4 .IX Item "relro" .PD 0 .IP \fBnorelro\fR 4 .IX Item "norelro" .PD ایجاد یک سرآیند قطعه \f(CW\*(C`PT_GNU_RELRO\*(C'\fR از نوع ELF در شیء. این سرآیند یک قطعه حافظه را مشخص می‌کند که در صورت پشتیبانی، باید پس از بازنشانی به صورت فقط‌خواندنی درآید. تعیین \fBcommon\-page\-size\fR کوچکتری از اندازه صفحه سیستم این حفاظت را بی‌اثر می‌کند. اگر از \fBnorelro\fR استفاده شود، این قطعه ایجاد نخواهد شد. .IP \fBreport\-relative\-reloc\fR 4 .IX Item "report-relative-reloc" گزارش بازنشانی‌های نسبی پویای تولیدشده توسط پیونددهنده. برای Linux/i386 و Linux/x86_64 پشتیبانی می‌شود. .IP \fBsectionheader\fR 4 .IX Item "sectionheader" .PD 0 .IP \fBnosectionheader\fR 4 .IX Item "nosectionheader" .PD تولید سرآیند بخش (section header). در صورت استفاده از \fBnosectionheader\fR سرآیند بخش تولید نمی‌شود. مقدار پیش‌فرض \fBsectionheader\fR است. .IP \fBseparate\-code\fR 4 .IX Item "separate-code" .PD 0 .IP \fBnoseparate\-code\fR 4 .IX Item "noseparate-code" .PD ایجاد سرآیند قطعه \f(CW\*(C`PT_LOAD\*(C'\fR مجزا برای کد در شیء. این گزینه قطعه‌ای از حافظه را مشخص می‌کند که فقط باید شامل دستورالعمل‌ها باشد و باید در صفحاتی کاملاً مجزا از هرگونه داده دیگر قرار گیرد. در صورت استفاده از \fBnoseparate\-code\fR این قطعه مجزا ایجاد نمی‌شود. .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" تعیین اندازه پشته برای قطعه \f(CW\*(C`PT_GNU_STACK\*(C'\fR در ELF. مشخص کردن صفر، ایجاد هرگونه قطعه پیش‌فرض با اندازه غیرصفر \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 این اثر را غیرفعال می‌کند و اجازه می‌دهد بخش‌ها مانند زمانی که نمادهای ترکیبی خاص تعریف نشده‌اند، توسط جمع‌آوری زباله دور ریخته شوند. این گزینه تأثیری بر تعاریف موجود در فایل شیء یا اسکریپت پیونددهنده ندارد. .IP \fBstart\-stop\-visibility=\fR\fIvalue\fR 4 .IX Item "start-stop-visibility=value" تعیین میزان دیده‌شدن نماد ELF (visibility) برای نمادهای ترکیبی \f(CW\*(C`_\|_start_SECNAME\*(C'\fR و \f(CW\*(C`_\|_stop_SECNAME\*(C'\fR. مقدار \fIvalue\fR باید دقیقاً یکی از موارد \fBdefault\fR، \fBinternal\fR، \fBhidden\fR یا \fBprotected\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 را در فایل‌های ورودی گزارش نمی‌کند. \&\fBisa\-level\-report=all\fR سطوح مورد نیاز و استفاده‌شده را گزارش می‌دهد. \&\fBisa\-level\-report=needed\fR سطوح مورد نیاز را گزارش می‌دهد. \&\fBisa\-level\-report=used\fR سطوح استفاده‌شده را گزارش می‌دهد. برای 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 افزودن وابستگی برچسب نسخه \f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fR در برنامه‌ها و کتابخانه‌های اشتراکی خروجی هنگام پیوند در برابر glibc در صورتی که فایل‌های شیء جابه‌جاشونده ورودی \f(CW\*(C`_\|_\|_tls_get_addr\*(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 را تعریف کند، پیونددهنده این وابستگی برچسب نسخه را اضافه خواهد کرد. برای 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 افزودن وابستگی برچسب نسخه \f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fR در برنامه‌ها و کتابخانه‌های اشتراکی خروجی هنگام پیوند در برابر glibc در صورتی که فایل‌های شیء جابه‌جاشونده ورودی دارای بازنشانی \f(CW\*(C`R_386_TLS_DESC_CALL\*(C'\fR یا \f(CW\*(C`R_X86_64_TLSDESC_CALL\*(C'\fR باشند. خروجی در زمان اجرا بر روی glibc که این برچسب نسخه را تعریف نکرده باشد اجرا نخواهد شد. برای 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 به پیونددهنده می‌گوید فایل‌های ورودی را که معماری آن‌ها قابل شناسایی نیست بپذیرد. فرض بر این است که کاربر می‌داند چه می‌کند و عمداً می‌خواهد این فایل‌های ورودی ناشناخته را پیوند دهد. این رفتار پیش‌فرض پیونددهنده قبل از نسخه ۲.۱۴ بود. رفتار پیش‌فرض از نسخه ۲.۱۴ به بعد رد چنین فایل‌های ورودی است و بنابراین گزینه \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 یک ارجاع نماد غیرضعیف تعریف‌نشده از یک فایل شیء معمولی را برآورده کند یا یک ارجاع از یک کتابخانه پویای مورد نیاز دیگر را. فایل‌های شیء یا کتابخانه‌هایی که \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 در بخش پویا. این باعث می‌شود که پیونددهنده زمان اجرا جستجوها را در این شیء و وابستگی‌های آن فقط درون گروه انجام دهد. این گزینه مستلزم \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" هنگام ایجاد یک کتابخانه اشتراکی، ارجاعات به نمادهای سراسری را به تعاریف درون همان کتابخانه اشتراکی (در صورت وجود) پیوند می‌دهد. به طور معمول برای برنامه‌ای که با یک کتابخانه اشتراکی پیوند شده، امکان بازنویسی تعاریف درون کتابخانه اشتراکی وجود دارد. این گزینه تنها در بسترهای 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 قالب لیست پویا همانند گره نسخه بدون نام گره و محدوده است. برای اطلاعات بیشتر \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 تا ببیند آیا هم‌پوشانی وجود دارد یا خیر. به طور معمول پیونددهنده این بررسی را انجام می‌دهد و در صورت یافتن هرگونه هم‌پوشانی پیام‌های خطای مناسبی تولید می‌کند. پیونددهنده بخش‌های موجود در overlayها را می‌شناسد و برای آن‌ها استثنا قائل می‌شود. رفتار پیش‌فرض را می‌توان با سوییچ خط فرمان \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 به سایر کتابخانه‌ها برای حل نمادهای مورد نیاز باینری خروجی جستجو خواهند شد. اما با تنظیمات پیش‌فرض جستجو در خود کتابخانه متوقف می‌شود. .IP \fB\-\-cref\fR 4 .IX Item "--cref" خروجی جدول ارجاع متقابل (cross reference table). اگر یک فایل نقشه پیونددهنده در حال تولید باشد، جدول ارجاع متقابل در فایل نقشه چاپ می‌شود؛ در غیر این صورت در خروجی استاندارد چاپ خواهد شد. .Sp قالب جدول عمداً ساده است تا در صورت نیاز به راحتی توسط یک اسکریپت پردازش شود. نمادها بر اساس نام مرتب و چاپ می‌شوند. برای هر نماد فهرستی از نام‌های فایل ارائه می‌شود. اگر نماد تعریف شده باشد، اولین فایل ذکرشده محل تعریف است. اگر نماد به عنوان مقدار عمومی تعریف شده باشد، فایل‌هایی که این اتفاق در آن‌ها رخ داده در ادامه می‌آیند. در نهایت فایل‌هایی که به آن نماد ارجاع داده‌اند فهرست می‌شوند. .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" تنظیم روش مورد استفاده برای اشتراک‌گذاری انواع میان واحدهای ترجمه (translation units) در CTF. .RS 4 .IP \fBshare\-unconflicted\fR 4 .IX Item "share-unconflicted" قرار دادن تمام انواعی که تعاریف مبهم ندارند در فرهنگ لغت مشترک، جایی که دیباگرها می‌توانند به راحتی به آن‌ها دسترسی داشته باشند، حتی اگر تنها در یک واحد ترجمه رخ دهند. این حالت پیش‌فرض است. .IP \fBshare\-duplicated\fR 4 .IX Item "share-duplicated" قرار دادن تنها انواعی که در چندین واحد ترجمه رخ می‌دهند در فرهنگ لغت مشترک: انواع با تنها یک تعریف وارد فرهنگ لغت‌های اختصاصی هر واحد ترجمه می‌شوند. انواعی با تعاریف مبهم در چندین واحد ترجمه همواره وارد فرهنگ لغت‌های اختصاصی واحد ترجمه می‌شوند. این کار تمایل دارد حجم 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 امکان جدا کردن تصمیم‌گیری برای تخصیص آدرس به نمادهای عمومی از نوع فایل خروجی را فراهم می‌سازد؛ در غیر این صورت یک نوع خروجی غیرجابه‌جاشونده وادار به تخصیص آدرس به نمادهای عمومی می‌شود. استفاده از این گزینه اجازه می‌دهد نمادهای عمومی که از یک کتابخانه اشتراکی ارجاع داده شده‌اند، تنها در برنامه اصلی آدرس‌دهی شوند. این امر فضای تکراری بدون استفاده را در کتابخانه اشتراکی حذف کرده و از هرگونه سردرگمی در حل به نمونه تکراری نادرست در زمان اجرا جلوگیری می‌نماید. .IP \fB\-\-force\-group\-allocation\fR 4 .IX Item "--force-group-allocation" این گزینه باعث می‌شود پیونددهنده اعضای گروه بخش را مانند بخش‌های ورودی عادی قرار داده و گروه‌های بخش را حذف کند. این رفتار پیش‌فرض برای یک پیوند نهایی است اما این گزینه می‌تواند برای تغییر رفتار یک پیوند جابه‌جاشونده (\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 نباید هیچ فاصله خالی میان \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 نماد را پس از پردازش اسکریپت تعریف خواهد کرد. .IP \fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR 4 .IX Item "--demangle[=style]" .PD 0 .IP \fB\-\-no\-demangle\fR 4 .IX Item "--no-demangle" .PD این گزینه‌ها کنترل می‌کنند که آیا نام نمادها در پیام‌های خطا و سایر خروجی‌ها ناهموارزدایی (demangle) شوند یا خیر. هنگامی که به پیونددهنده گفته می‌شود نمادها را ناهموارزدایی کند، تلاش می‌کند نام نمادها را به شیوه‌ای خوانا ارائه دهد: زیرخط‌های آغازین را در صورتی که توسط قالب فایل شیء استفاده شوند حذف کرده و نام‌های درهم‌ریخته (mangled) نمادهای ++C را به نام‌های خوانا برای کاربر تبدیل می‌کند. کامپایلرهای مختلف سبک‌های درهم‌ریزی متفاوتی دارند. آرگومان سبک اختیاری ناهموارزدایی می‌تواند برای انتخاب یک سبک مناسب برای کامپایلر شما به کار رود. پیونددهنده به طور پیش‌فرض ناهموارزدایی را انجام می‌دهد مگر اینکه متغیر محیطی \fBCOLLECT_NO_DEMANGLE\fR تنظیم شده باشد. این گزینه‌ها می‌توانند برای بازنویسی حالت پیش‌فرض استفاده شوند. .IP \fB\-I\fR\fIfile\fR 4 .IX Item "-Ifile" .PD 0 .IP \fB\-\-dynamic\-linker=\fR\fIfile\fR 4 .IX Item "--dynamic-linker=file" .PD تنظیم نام پیونددهنده پویا. این گزینه تنها هنگام تولید فایل‌های اجرایی ELF با پیوند پویا معنادار است. پیونددهنده پویای پیش‌فرض معمولاً صحیح است؛ از این گزینه استفاده نکنید مگر اینکه بدانید چه می‌کنید. .IP \fB\-\-no\-dynamic\-linker\fR 4 .IX Item "--no-dynamic-linker" هنگام تولید یک فایل اجرایی، درخواست استفاده از یک پیونددهنده پویا در زمان بارگذاری را حذف می‌کند. این مورد فقط برای باینری‌های ELF که دارای بازنشانی‌های پویا هستند معنادار است و معمولاً به کد نقطه ورودی نیاز دارد که قادر به پردازش این بازنشانی‌ها باشد. .IP \fB\-\-embedded\-relocs\fR 4 .IX Item "--embedded-relocs" این گزینه شبیه به گزینه \fB\-\-emit\-relocs\fR است، با این تفاوت که بازنشانی‌ها در یک بخش مختص به هدف ذخیره می‌شوند. این گزینه تنها توسط اهداف \fBBFIN\fR، \fBCR16\fR و \fIM68K\fR پشتیبانی می‌شود. .IP \fB\-\-disable\-multiple\-abs\-defs\fR 4 .IX Item "--disable-multiple-abs-defs" عدم اجازه به تعاریف چندگانه با نمادهای گنجانده‌شده در نام فایل فراخوانی‌شده توسط \-R یا \-\-just\-symbols. .IP \fB\-\-fatal\-warnings\fR 4 .IX Item "--fatal-warnings" .PD 0 .IP \fB\-\-no\-fatal\-warnings\fR 4 .IX Item "--no-fatal-warnings" .PD برخورد با تمام هشدارها به عنوان خطا. رفتار پیش‌فرض را می‌توان با گزینه \fB\-\-no\-fatal\-warnings\fR بازگرداند. .IP \fB\-w\fR 4 .IX Item "-w" .PD 0 .IP \fB\-\-no\-warnings\fR 4 .IX Item "--no-warnings" .PD عدم نمایش هرگونه پیام هشدار یا خطا. در صورت فعال بودن \fB\-\-fatal\-warnings\fR، آن را باطل می‌کند. این گزینه می‌تواند زمانی استفاده شود که مشخص است باینری خروجی کار نخواهد کرد، اما همچنان نیاز به ایجاد آن وجود دارد. .IP \fB\-\-force\-exe\-suffix\fR 4 .IX Item "--force-exe-suffix" اطمینان از اینکه فایل خروجی دارای پسوند .exe است. .Sp اگر یک فایل خروجی کاملاً پیوندیافته موفقیت‌آمیز فاقد پسوند \f(CW\*(C`.exe\*(C'\fR یا \f(CW\*(C`.dll\*(C'\fR باشد، این گزینه پیونددهنده را وادار می‌کند تا فایلی با همان نام و پسوند \f(CW\*(C`.exe\*(C'\fR کپی کند. این گزینه هنگام استفاده از makefileهای اصلاح‌نشده یونیکس روی میزبان مایکروسافت ویندوز مفید است، زیرا برخی نسخه‌های ویندوز تصویری را که به پسوند \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 به عنوان یک افزونه گنو، بخش‌های ورودی 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 فعال است، این گزینه از جمع‌آوری زباله بخش‌های ورودی استفاده‌نشده که حاوی نمادهای سراسری با دیده‌شدن پیش‌فرض یا محافظت‌شده هستند، جلوگیری می‌کند. این گزینه برای فایل‌های اجرایی در نظر گرفته شده است که در آن‌ها بخش‌های ارجاع‌نشده بدون در نظر گرفتن دیده‌شدن خارجی نمادهای موجود در آن‌ها جمع‌آوری زباله می‌شدند. توجه داشته باشید که این گزینه هنگام پیوند اشیای اشتراکی اثری ندارد زیرا قبلاً رفتار پیش‌فرض است. این گزینه تنها برای اهداف با قالب ELF پشتیبانی می‌شود. .IP \fB\-\-print\-output\-format\fR 4 .IX Item "--print-output-format" چاپ نام قالب خروجی پیش‌فرض (که شاید تحت تأثیر سایر گزینه‌های خط فرمان قرار گرفته باشد). این همان رشته‌ای است که در دستور اسکریپت پیونددهنده \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR ظاهر می‌شود. .IP \fB\-\-print\-memory\-usage\fR 4 .IX Item "--print-memory-usage" چاپ اندازه استفاده‌شده، اندازه کل و درصد استفاده‌شده نواحی حافظه ایجادشده با دستور \fBMEMORY\fR. این گزینه در اهداف تعبیه‌شده برای داشتن دیدی سریع از میزان حافظه آزاد مفید است. قالب خروجی دارای یک خط عنوان و یک خط برای هر ناحیه است. هم برای انسان خوانا است و هم به راحتی توسط ابزارها قابل تجزیه است. در اینجا نمونه‌ای از خروجی آورده شده است: .Sp .Vb 3 \& Memory region Used Size Region Size %age Used \& ROM: 256 KB 1 MB 25.00% \& RAM: 32 B 2 GB 0.00% .Ve .Sp توجه: اگر می‌خواهید از میزان مصرف حافظه خود پیونددهنده مطلع شوید، گزینه \fB\-\-stats\fR این کار را انجام می‌دهد. .IP \fB\-\-help\fR 4 .IX Item "--help" چاپ خلاصه‌ای از گزینه‌های خط فرمان در خروجی استاندارد و خروج. .IP \fB\-\-target\-help\fR 4 .IX Item "--target-help" چاپ خلاصه‌ای از تمام گزینه‌های مختص به هدف در خروجی استاندارد و خروج. .IP \fB\-Map=\fR\fImapfile\fR 4 .IX Item "-Map=mapfile" چاپ نقشه پیوند در فایل \fImapfile\fR. توضیحات گزینه \fB\-M\fR را در بالا ببینید. اگر \fImapfile\fR فقط نویسه \f(CW\*(C`\-\*(C'\fR باشد، نقشه در stdout نوشته می‌شود. .Sp مشخص کردن یک پوشه به عنوان \fImapfile\fR باعث می‌شود نقشه پیونددهنده به صورت فایلی درون آن پوشه نوشته شود. معمولاً نام فایل درون پوشه به عنوان نام پایه فایل \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" رد کردن آرشیوهایی که فاقد نمایه یا نقشه نماد برای تمام آرشیوهای بعدی ذکرشده در خط فرمان هستند. اگر با چنین فایلی مواجه شود، خطای پیوند رخ می‌دهد. این رفتار سنتی است. .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 باید طوری پیکربندی شده باشد که معمول‌ترین قالب را در هر ماشین تولید کند. شناسه \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" ایجاد یک کتابخانه وارداتی (import library) در \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 ایجاد یک فایل اجرایی مستقل از موقعیت (PIE). این مورد در حال حاضر تنها روی بسترهای ELF پشتیبانی می‌شود. فایل‌های اجرایی مستقل از موقعیت توسط پیونددهنده پویا به آدرس مجازی که سیستم‌عامل برای آن‌ها انتخاب می‌کند (که می‌تواند بین دفعات فراخوانی متفاوت باشد) بازنشانی می‌شوند. آن‌ها در سرآیند فایل ELF با ET_DYN مشخص می‌شوند، اما از جهات متعددی با کتابخانه‌های اشتراکی تفاوت دارند. به ویژه، نمادهای تعریف‌شده در یک PIE به طور پیش‌فرض نمی‌توانند توسط شیء دیگری لغو (override) شوند، آن‌گونه که در یک کتابخانه اشتراکی امکان‌پذیر است. .IP \fB\-no\-pie\fR 4 .IX Item "-no-pie" ایجاد یک فایل اجرایی وابسته به موقعیت. این حالت پیش‌فرض است. .IP \fB\-qmagic\fR 4 .IX Item "-qmagic" این گزینه برای سازگاری با لینوکس نادیده گرفته می‌شود. .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 library search path). این مورد هنگام پیوند دادن یک فایل اجرایی ELF با اشیای اشتراکی استفاده می‌شود. تمام آرگومان‌های \fB\-rpath\fR به یکدیگر متصل شده و به پیونددهنده زمان اجرا منتقل می‌شوند که از آن‌ها برای یافتن اشیای اشتراکی در زمان اجرا استفاده می‌کند. .Sp گزینه \fB\-rpath\fR همچنین هنگام مکان‌یابی اشیای اشتراکی مورد نیاز توسط اشیای اشتراکی که صراحتاً در پیوند گنجانده شده‌اند استفاده می‌شود؛ توضیحات گزینه \fB\-rpath\-link\fR را ببینید. جستجوی \fB\-rpath\fR به این روش تنها توسط پیونددهنده‌های محلی (native) و پیونددهنده‌های متقاطع (cross) که با گزینه \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 گنجانده شده‌اند (جستجو برای کتابخانه‌های \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 تنها در زمان پیوند مؤثر است. .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، فهرست پوشه‌های یافت‌شده در آن فایل. .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 اگر کتابخانه اشتراکی مورد نیاز یافت نشود، پیونددهنده هشداری صادر کرده و پیوند را ادامه می‌دهد. .RE .IP \fB\-\-section\-ordering\-file=\fR\fIscript\fR 4 .IX Item "--section-ordering-file=script" این گزینه برای تقویت اسکریپت فعلی پیونددهنده با نگاشت اضافی بخش‌های ورودی به بخش‌های خروجی استفاده می‌شود. این فایل باید از نحوی مشابه برای \f(CW\*(C`SECTIONS\*(C'\fR که در اسکریپت‌های عادی استفاده می‌شود پیروی کند، اما نباید کاری جز قرار دادن بخش‌های ورودی در بخش‌های خروجی انجام دهد. .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 می‌گوید هنگام قرار دادن نمادهای عمومی در بخش‌های خروجی مناسب، آن‌ها را بر اساس تراز به ترتیب صعودی یا نزولی مرتب کند. ترازهای نمادهای مورد بررسی عبارتند از ۱۶ بایتی یا بزرگ‌تر، ۸ بایتی، ۴ بایتی، ۲ بایتی و ۱ بایتی. این کار برای جلوگیری از ایجاد شکاف میان نمادها به دلیل محدودیت‌های تراز است. اگر ترتیبی مشخص نشود، ترتیب نزولی فرض می‌شود. .IP \fB\-\-sort\-section=name\fR 4 .IX Item "--sort-section=name" اعمال \f(CW\*(C`SORT_BY_NAME\*(C'\fR بر تمام الگوهای عام بخش در اسکریپت پیونددهنده. .IP \fB\-\-sort\-section=alignment\fR 4 .IX Item "--sort-section=alignment" اعمال \f(CW\*(C`SORT_BY_ALIGNMENT\*(C'\fR بر تمام الگوهای عام بخش در اسکریپت پیونددهنده. .IP \fB\-\-spare\-dynamic\-tags=\fR\fIcount\fR 4 .IX Item "--spare-dynamic-tags=count" مشخص کردن تعداد اسلات‌های خالی برای باقی گذاشتن در بخش .dynamic اشیای اشتراکی ELF. اسلات‌های خالی ممکن است توسط ابزارهای پس‌پردازش مانند prelinker مورد نیاز باشند. مقدار پیش‌فرض ۵ است. .IP \fB\-\-split\-by\-file[=\fR\fIsize\fR\fB]\fR 4 .IX Item "--split-by-file[=size]" مشابه \fB\-\-split\-by\-reloc\fR اما هنگام رسیدن به \fIsize\fR یک بخش خروجی جدید برای هر فایل ورودی ایجاد می‌کند. مقدار \fIsize\fR در صورت داده نشدن به طور پیش‌فرض ۱ است. .IP \fB\-\-split\-by\-reloc[=\fR\fIcount\fR\fB]\fR 4 .IX Item "--split-by-reloc[=count]" تلاش می‌کند بخش‌های اضافی در فایل خروجی ایجاد کند تا هیچ بخش خروجی واحدی در فایل حاوی بیش از \fIcount\fR بازنشانی نباشد. این گزینه هنگام تولید فایل‌های جابه‌جاشونده عظیم برای بارگیری در هسته‌های بلادرنگ خاص با قالب فایل شیء COFF مفید است، زیرا COFF نمی‌تواند بیش از ۶۵۵۳۵ بازنشانی را در یک بخش واحد نمایش دهد. مقدار پیش‌فرض ۳۲۷۶۸ است. .IP \fB\-\-stats[=\fR\fIfilename\fR\fB]\fR 4 .IX Item "--stats[=filename]" محاسبه و نمایش آمار درباره عملکرد پیونددهنده، مانند زمان اجرا و مصرف حافظه. .Sp اگر آرگومان اختیاری \fIfilename\fR ارائه نشود، تنها اطلاعات اولیه گزارش شده و به جریان خروجی خطای استاندارد (stderr) ارسال می‌شود. اگر آرگومان \fIfilename\fR ارائه شود، اطلاعات گسترده در فایل نام‌گذاری‌شده نوشته می‌شود. اگر \fIfilename\fR صرفاً نماد \fI\-\fR باشد، اطلاعات گسترده به stdout ارسال خواهد شد. اگر \fIfilename\fR با \fI+\fR شروع شود، فایل در حالت الحاق (append) باز می‌شود. .Sp اگر متغیر محیطی \f(CW\*(C`LD_STATS\*(C'\fR تعریف شده باشد، همانند گزینه \fB\-\-stats\fR عمل می‌کند. در صورت تعارض بین متغیر محیطی و گزینه، گزینه \fB\-\-stats\fR اولویت دارد. .Sp اطلاعات گسترده شامل زمان CPU استفاده‌شده، اندازه حداکثر مجموعه مقیم (RSS)، زمان اجرای کاربری و سیستمی، و مصرف کل حافظه است. خروجی گسترده شبیه به نمونه زیر است: .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، با باطل کردن پیش‌فرض زمان پیکربندی. این گزینه تنها توسط پیونددهنده‌هایی پشتیبانی می‌شود که با \fB\-\-with\-sysroot\fR پیکربندی شده‌اند. .IP \fB\-\-task\-link\fR 4 .IX Item "--task-link" توسط اهداف مبتنی بر COFF/PE برای ایجاد یک فایل شیء task-linked استفاده می‌شود که در آن تمام نمادهای سراسری به ایستا تبدیل شده‌اند. .IP \fB\-\-traditional\-format\fR 4 .IX Item "--traditional-format" برای برخی اهداف، خروجی \fBld\fR از جهاتی با خروجی پیونددهنده‌های سنتی متفاوت است. این سوییچ از \fBld\fR می‌خواهد از قالب سنتی استفاده کند. برای مثال در SunOS، پیونددهنده ورودی‌های تکراری را در جدول رشته نمادها ترکیب می‌کند که می‌تواند اندازه فایل خروجی را با اطلاعات اشکال‌زدایی تا بیش از ۳۰ درصد کاهش دهد، اما برنامه \f(CW\*(C`dbx\*(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 آغازین را حذف کنید. نباید هیچ فاصله خالی میان \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، از \fIorg\fR به عنوان آدرس پایه برنامه یا dll خود استفاده کنید. این پایین‌ترین مکان حافظه است که هنگام بارگذاری برنامه یا dll استفاده خواهد شد. پیش‌فرض 0x400000 برای فایل‌های اجرایی و 0x10000000 برای dllها است. .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، آدرس اولین بایت قطعه اول را تنظیم می‌کند. .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" تعیین نحوه مدیریت نمادهای حل‌نشده. چهار مقدار ممکن برای \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 کنترل شود. گزینه \fB\-\-warn\-unresolved\-symbols\fR می‌تواند خطاها را به هشدار تبدیل کند. .RE .IP \fB\-\-dll\-verbose\fR 4 .IX Item "--dll-verbose" .PD 0 .IP \fB\-\-verbose[=\fR\fINUMBER\fR\fB]\fR 4 .IX Item "--verbose[=NUMBER]" .PD نمایش شماره نسخه برای \fBld\fR و فهرست کردن شبیه‌سازی‌های پیونددهنده پشتیبانی‌شده. نمایش اینکه کدام فایل‌های ورودی باز می‌شوند یا نمی‌شوند. نمایش اسکریپت پیونددهنده مورد استفاده. اگر آرگومان اختیاری \fINUMBER\fR بزرگتر از ۱ باشد، وضعیت نماد افزونه نیز نمایش داده خواهد شد. .IP \fB\-\-version\-script=\fR\fIversion\-scriptfile\fR 4 .IX Item "--version-script=version-scriptfile" مشخص کردن نام یک اسکریپت نسخه برای پیونددهنده. این گزینه معمولاً هنگام ایجاد کتابخانه‌های اشتراکی برای تعیین اطلاعات تکمیلی در مورد سلسله‌مراتب نسخه برای کتابخانه در حال ایجاد استفاده می‌شود. این گزینه فقط در بسترهای ELF که از کتابخانه‌های اشتراکی پشتیبانی می‌کنند به طور کامل پشتیبانی می‌شود؛ \fBVERSION\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;" یک تعریف (definition)، که در بخش داده‌های مقداردهی‌شده (initialized data) فایل خروجی قرار می‌گیرد. .IP "\fBextern int i;\fR" 4 .IX Item "extern int i;" یک ارجاع تعریف‌نشده، که فضایی اختصاص نمی‌دهد. باید در جایی یک تعریف یا یک نماد عمومی برای متغیر وجود داشته باشد. .IP "\fBint i;\fR" 4 .IX Item "int i;" یک نماد عمومی (common symbol). اگر برای یک متغیر فقط نماد(های) عمومی وجود داشته باشد، در ناحیه داده‌های مقداردهی‌نشده فایل خروجی قرار می‌گیرد. پیونددهنده چندین نماد عمومی برای یک متغیر را در یک نماد واحد ادغام می‌کند. اگر اندازه‌های متفاوتی داشته باشند، بزرگترین اندازه را انتخاب می‌کند. اگر تعریفی از همان متغیر وجود داشته باشد، پیونددهنده نماد عمومی را به یک اعلان تبدیل می‌نماید. .RE .RS 4 .Sp گزینه \fB\-\-warn\-common\fR می‌تواند پنج نوع هشدار تولید کند. هر هشدار شامل یک جفت خط است: خط اول نمادی را که به تازگی با آن مواجه شده توصیف می‌کند، و خط دوم نماد قبلی با همان نام را توصیف می‌کند. یک یا هر دو نماد یک نماد عمومی خواهند بود: .IP 1. 4 تبدیل یک نماد عمومی به یک ارجاع، زیرا از قبل تعریفی برای نماد وجود دارد. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& overridden by definition \& (
): warning: defined here .Ve .IP 2. 4 تبدیل یک نماد عمومی به یک ارجاع، زیرا تعریفی بعدی برای نماد پیدا شده است. .Sp .Vb 3 \& (
): warning: definition of \`\*(Aq \& overriding common \& (
): warning: common is here .Ve .IP 3. 4 ادغام یک نماد عمومی با یک نماد عمومی هم‌اندازه قبلی. .Sp .Vb 3 \& (
): warning: multiple common \& of \`\*(Aq \& (
): warning: previous common is here .Ve .IP 4. 4 ادغام یک نماد عمومی با یک نماد عمومی بزرگتر قبلی. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& overridden by larger common \& (
): warning: larger common is here .Ve .IP 5. 4 ادغام یک نماد عمومی با یک نماد عمومی کوچکتر قبلی. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& overriding smaller common \& (
): warning: smaller common is here .Ve .RE .RS 4 .RE .IP \fB\-\-warn\-constructors\fR 4 .IX Item "--warn-constructors" هشدار در صورت استفاده از هر سازنده سراسری. این گزینه تنها برای چند قالب فایل شیء مفید است. برای قالب‌هایی مانند COFF یا ELF، پیونددهنده نمی‌تواند استفاده از سازنده‌های سراسری را تشخیص دهد. .IP \fB\-\-warn\-execstack\fR 4 .IX Item "--warn-execstack" .PD 0 .IP \fB\-\-warn\-execstack\-objects\fR 4 .IX Item "--warn-execstack-objects" .IP \fB\-\-no\-warn\-execstack\fR 4 .IX Item "--no-warn-execstack" .PD در بسترهای ELF اگر از پیونددهنده خواسته شود فایل خروجی حاوی پشته اجرایی (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 پیونددهنده را در حالت هشدار فقط برای فایل‌های شیء قرار می‌دهد. .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 آن هشدار را به خطا تبدیل می‌کند. گزینه \fB\-\-no\-error\-execstack\fR رفتار پیش‌فرض تولید پیام‌های هشدار را بازیابی خواهد کرد. .IP \fB\-\-warn\-multiple\-gp\fR 4 .IX Item "--warn-multiple-gp" هشدار در صورتی که مقادیر چندگانه اشاره‌گر سراسری (global pointer) در فایل خروجی مورد نیاز باشد. این فقط برای پردازنده‌های خاصی مانند Alpha معنادار است. .IP \fB\-\-warn\-once\fR 4 .IX Item "--warn-once" تنها یک بار هشدار دادن برای هر نماد تعریف‌نشده، به جای یک بار به ازای هر ماژولی که به آن ارجاع می‌دهد. .IP \fB\-\-warn\-rwx\-segments\fR 4 .IX Item "--warn-rwx-segments" .PD 0 .IP \fB\-\-no\-warn\-rwx\-segments\fR 4 .IX Item "--no-warn-rwx-segments" .PD هشدار در صورتی که پیونددهنده یک قطعه قابل‌بارگذاری با اندازه غیرصفر ایجاد کند که هر سه پرچم دسترسی خواندن، نوشتن و اجرا را داشته باشد. چنین قطعه‌ای یک آسیب‌پذیری امنیتی بالقوه به شمار می‌رود. علاوه بر این، اگر یک قطعه حافظه محلی رشته (TLS) با پرچم مجوز اجرا تنظیم‌شده ایجاد شود، بدون در نظر گرفتن اینکه آیا پرچم‌های خواندن و/یا نوشتن تنظیم شده‌اند یا خیر، هشدارها صادر خواهند شد. .Sp این هشدارها به طور پیش‌فرض فعال هستند. می‌توان آن‌ها را با گزینه \fB\-\-no\-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 رفتار پیش‌فرض صدور پیام هشدار را بازیابی می‌کند. .IP \fB\-\-warn\-section\-align\fR 4 .IX Item "--warn-section-align" هشدار در صورتی که آدرس یک بخش خروجی به دلیل تراز تغییر کند. .IP \fB\-\-warn\-textrel\fR 4 .IX Item "--warn-textrel" هشدار در صورتی که پیونددهنده DT_TEXTREL را به یک باینری اجرایی مستقل از موقعیت یا شیء اشتراکی اضافه کند. .IP \fB\-\-warn\-alternate\-em\fR 4 .IX Item "--warn-alternate-em" هشدار در صورتی که یک شیء دارای کد ماشین جایگزین ELF باشد. .IP \fB\-\-warn\-unresolved\-symbols\fR 4 .IX Item "--warn-unresolved-symbols" اگر پیونددهنده بخواهد یک نماد حل‌نشده را گزارش دهد (گزینه \fB\-\-unresolved\-symbols\fR را ببینید)، به طور معمول یک خطا ایجاد می‌کند. این گزینه باعث می‌شود به جای آن یک هشدار تولید کند. .IP \fB\-\-error\-unresolved\-symbols\fR 4 .IX Item "--error-unresolved-symbols" رفتار پیش‌فرض پیونددهنده مبنی بر تولید خطا هنگام گزارش نمادهای حل‌نشده را بازیابی می‌کند. .IP \fB\-\-whole\-archive\fR 4 .IX Item "--whole-archive" برای هر آرشیو ذکرشده در خط فرمان پس از گزینه \fB\-\-whole\-archive\fR، تمام فایل‌های شیء موجود در آرشیو را در پیوند قرار می‌دهد، به جای اینکه آرشیو را برای یافتن فایل‌های شیء مورد نیاز جستجو کند. این گزینه معمولاً برای تبدیل یک فایل آرشیو به یک کتابخانه اشتراکی استفاده می‌شود و وادار می‌کند که هر شیء در کتابخانه اشتراکی حاصل گنجانده شود. این گزینه می‌تواند بیش از یک بار استفاده شود. .Sp این گزینه در داخل یک جفت گزینه \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" پذیرش آرشیوهایی که فاقد نمایه یا نقشه نماد برای تمام آرشیوهای بعدی ذکرشده در خط فرمان هستند. در صورت مفقود بودن، چنین نمایه‌ای به صورت داخلی در لحظه با هزینه عملکردی ساخته می‌شود. این حالت پیش‌فرض است. .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 تنها ارجاعات تعریف‌نشده توسط پیونددهنده جایگزین می‌شوند. بنابراین ارجاعات داخلی واحد ترجمه به \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 و سرآیند قطعه \f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fR در ELF. .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" دور ریختن اطلاعات ردگیری پشته \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 را مشخص کنید، هیچ برچسب پویای جدیدی ایجاد نمی‌شود. به طور پیش‌فرض برچسب‌های جدید ایجاد نمی‌شوند. .IP \fB\-\-hash\-size=\fR\fInumber\fR 4 .IX Item "--hash-size=number" تنظیم اندازه پیش‌فرض جداول هش پیونددهنده روی یک عدد اول نزدیک به \fInumber\fR. افزایش این مقدار می‌تواند مدت زمان انجام وظایف پیونددهنده را به بهای افزایش نیازهای حافظه‌ای پیونددهنده کاهش دهد. کاهش این مقدار نیز نیاز به حافظه را به بهای کاهش سرعت کم می‌کند. مقدار پیش‌فرض در شرایط عادی ۴۰۵۱ و در صورت استفاده از گزینه خط فرمان \fB\-\-reduce\-memory\-overheads\fR برابر ۱۰۲۱ است. .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 برای هر دو جدول هش باشد. پیش‌فرض در اکثر سیستم‌های مبتنی بر لینوکس \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 یا zstd کنترل می‌کنند. .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 این گزینه هرگونه فشرده‌سازی در بخش‌های اشکال‌زدایی ورودی را لغو می‌کند. .IP \fB\-\-reduce\-memory\-overheads\fR 4 .IX Item "--reduce-memory-overheads" این گزینه نیازهای حافظه در زمان اجرای ld را به بهای سرعت پیوند کاهش می‌دهد. این گزینه برای انتخاب الگوریتم قدیمی O(n^2) جهت تولید فایل نقشه پیوند به جای الگوریتم جدید O(n) (که حدود ۴۰ درصد حافظه بیشتری برای ذخیره‌سازی نمادها مصرف می‌کند) معرفی شد. .Sp اثر دیگر این سوییچ تنظیم اندازه پیش‌فرض جدول هش روی ۱۰۲۱ است که باز هم به بهای طولانی‌تر شدن زمان اجرای پیونددهنده در مصرف حافظه صرفه‌جویی می‌کند. .IP \fB\-\-max\-cache\-size=\fR\fIsize\fR 4 .IX Item "--max-cache-size=size" برنامه \fBld\fR معمولاً اطلاعات بازنشانی و جداول نمادهای فایل‌های ورودی را در حافظه با اندازه نامحدود کش می‌کند. این گزینه حداکثر اندازه کش را روی \fIsize\fR تنظیم می‌کند. اگر از گزینه خط فرمان \fB\-\-no\-keep\-memory\fR استفاده شده باشد، پیونددهنده طوری عمل می‌کند که گویی حداکثر اندازه کش روی ۰ تنظیم شده است، یعنی چیزی حفظ نمی‌شود. .IP \fB\-\-build\-id\fR 4 .IX Item "--build-id" .PD 0 .IP \fB\-\-build\-id=\fR\fIstyle\fR 4 .IX Item "--build-id=style" .PD درخواست ایجاد یک بخش یادداشت ELF به نام \f(CW\*(C`.note.gnu.build\-id\*(C'\fR یا یک بخش COFF به نام \f(CW\*(C`.buildid\*(C'\fR. محتویات این یادداشت بیت‌های یکتایی هستند که این فایل پیوندیافته را مشخص می‌کنند. پارامتر \fIstyle\fR می‌تواند \f(CW\*(C`uuid\*(C'\fR (برای استفاده از ۱۲۸ بیت تصادفی)، \f(CW\*(C`sha1\*(C'\fR (برای استفاده از هش ۱۶۰ بیتی SHA1)، \f(CW\*(C`md5\*(C'\fR (برای استفاده از هش ۱۲۸ بیتی MD5)، یا \f(CW\*(C`xx\*(C'\fR (برای استفاده از هش ۱۲۸ بیتی XXHASH بر روی بخش‌های هنجاری خروجی)، یا \f(CW\*(C`0x\fR\f(CIhexstring\fR\f(CW\*(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 شناسه‌ای تولید می‌کنند که در یک فایل خروجی همسان همواره یکسان است، اما تقریباً به طور قطع در میان تمام فایل‌های خروجی غیرهمسان یکتا خواهد بود. .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 .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) را مجاز می‌سازد. به طور پیش‌فرض، این نام‌ها فقط در فایل‌های شیء مجاز هستند. به عنوان یک افزونه گنو، می‌توان با استفاده از این دو گزینه اجازه استفاده از آن‌ها را در تصاویر اجرایی نیز صادر کرد یا در فایل‌های شیء غیرمجاز ساخت. [این گزینه مختص به اهداف 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) می‌کند و نماد را با پیوند به تطابق پیدا شده حل می‌نماید. اگر \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 برای بیشتر اهداف پیشوند نماد پیش‌فرض یک زیرخط (underscore) است. با این گزینه می‌توان پیشوند زیرخط پیش‌فرض را غیرفعال یا فعال کرد. [این گزینه مختص به اهداف PE پیونددهنده است] .IP \fB\-\-export\-all\-symbols\fR 4 .IX Item "--export-all-symbols" در صورت تعیین، تمام نمادهای سراسری موجود در اشیای استفاده‌شده برای ساخت یک DLL صادر خواهند شد. توجه داشته باشید که اگر نماد صادرشده دیگری وجود نداشته باشد، این حالت پیش‌فرض است. [این گزینه مختص به اهداف 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" تعیین تراز فایل. بخش‌ها در فایل همواره در آفست‌های فایلی که مضاربی از این عدد هستند آغاز می‌شوند. پیش‌فرض ۵۱۲ است. [این گزینه مختص به اهداف 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 تنظیم می‌شود تا نشان دهد این باینری اجرایی از آدرس‌های مجازی بزرگتر از ۲ گیگابایت پشتیبانی می‌کند. [این گزینه مختص به هدف i386 PE پیونددهنده است] .IP \fB\-\-disable\-large\-address\-aware\fR 4 .IX Item "--disable-large-address-aware" اثر گزینه قبلی \fB\-\-large\-address\-aware\fR را لغو می‌کند. [این گزینه مختص به هدف i386 PE پیونددهنده است] .IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4 .IX Item "--major-image-version value" تنظیم شماره اصلی (major) نسخه تصویر ("image version"). پیش‌فرض ۱ است. [این گزینه مختص به اهداف PE پیونددهنده است] .IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4 .IX Item "--major-os-version value" تنظیم شماره اصلی نسخه سیستم‌عامل. پیش‌فرض ۴ است. [این گزینه مختص به اهداف PE پیونددهنده است] .IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4 .IX Item "--major-subsystem-version value" تنظیم شماره اصلی نسخه زیرسیستم. پیش‌فرض ۴ است. [این گزینه مختص به اهداف PE پیونددهنده است] .IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4 .IX Item "--minor-image-version value" تنظیم شماره فرعی (minor) نسخه تصویر. پیش‌فرض ۰ است. [این گزینه مختص به اهداف PE پیونددهنده است] .IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4 .IX Item "--minor-os-version value" تنظیم شماره فرعی نسخه سیستم‌عامل. پیش‌فرض ۰ است. [این گزینه مختص به اهداف PE پیونددهنده است] .IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4 .IX Item "--minor-subsystem-version value" تنظیم شماره فرعی نسخه زیرسیستم. پیش‌فرض ۰ است. [این گزینه مختص به اهداف 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 مشخص شده باشد. [این گزینه مختص به اهداف PE پیونددهنده است] .IP \fB\-\-disable\-auto\-image\-base\fR 4 .IX Item "--disable-auto-image-base" عدم تولید خودکار یک آدرس پایه تصویر یکتا. اگر آدرس پایه‌ای توسط کاربر تعیین نشده باشد، از پیش‌فرض بستر استفاده می‌شود. [این گزینه مختص به اهداف PE پیونددهنده است] .IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4 .IX Item "--dll-search-prefix string" هنگام پیوند پویا به یک dll بدون کتابخانه وارداتی، جستجوی \f(CW\*(C`.dll\*(C'\fR در اولویت نسبت به \f(CW\*(C`lib.dll\*(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 از DLLها، و در نتیجه امکان دور زدن سازوکار dllimport در سمت کاربر و ارجاع به نام‌های نمادهای نامتقارن. [این گزینه مختص به اهداف PE پیونددهنده است] .Sp (مثال‌ها و توضیحات تکمیلی پیرامون رفع خطای آدرس‌دهی با آفست ثابت در کدهای ++C/C): .Sp .Vb 3 \& extern type extern_array[]; \& extern_array[1] \-\-> \& { volatile type *t=extern_array; t[1] } .Ve .Sp یا: .Sp .Vb 3 \& extern struct s extern_struct; \& extern_struct.field \-\-> \& { volatile struct s *t=&extern_struct; t\->field } .Ve .IP \fB\-\-disable\-auto\-import\fR 4 .IX Item "--disable-auto-import" عدم تلاش برای انجام پیوند هوشمندانه \f(CW\*(C`_symbol\*(C'\fR به \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR برای واردات DATA از DLLها. [این گزینه مختص به اهداف PE پیونددهنده است] .IP \fB\-\-enable\-runtime\-pseudo\-reloc\fR 4 .IX Item "--enable-runtime-pseudo-reloc" اگر کد شما حاوی عبارات توصیف‌شده در بخش \-\-enable\-auto\-import باشد، این سوییچ برداری از «شبه‌بازنشانی‌های زمان اجرا» ایجاد می‌کند که می‌تواند توسط محیط زمان اجرا برای تنظیم ارجاعات به چنین داده‌هایی در کد کلاینت استفاده شود. [این گزینه مختص به اهداف 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 نمادهای واردات خودکار. [این گزینه مختص به اهداف PE پیونددهنده است] .IP \fB\-\-section\-alignment\fR 4 .IX Item "--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) برای این برنامه. پیش‌فرض ۲ مگابایت رزرو و ۴ کیلوبایت متعهد است. [این گزینه مختص به اهداف 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) جابه‌جا شود. این گزینه به طور پیش‌فرض برای اهداف MinGW فعال است. همچنین مستلزم \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 تصویر با ویژگی پیشگیری از اجرای داده‌ها (DEP) سازگار است. این گزینه برای اهداف 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 استفاده نمی‌کند. هیچ گرداننده SEH از این تصویر فراخوانی نمی‌شود. به طور پیش‌فرض غیرفعال است. .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 درایور از مدل درایور مایکروسافت ویندوز (WDM) استفاده می‌کند. به طور پیش‌فرض غیرفعال است. .IP \fB\-\-tsaware\fR 4 .IX Item "--tsaware" .PD 0 .IP \fB\-\-disable\-tsaware\fR 4 .IX Item "--disable-tsaware" .PD تصویر نسبت به سرور ترمینال (Terminal Server) آگاه است. به طور پیش‌فرض غیرفعال است. .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 تعریف شده باشد، تعداد ثانیه‌های گذشته از مبدأ زمان یونیکس خواهد بود. .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 ایجاد جدول بازنشانی پایه، که در صورتی که تصویر در یک پایه تصویر متفاوتی از آنچه در سرآیند PE مشخص شده بارگذاری شود لازم است. این گزینه به طور پیش‌فرض فعال است. .PP هدف C6X uClinux از یک قالب باینری به نام DSBT برای پشتیبانی از کتابخانه‌های اشتراکی استفاده می‌کند. هر کتابخانه اشتراکی در سیستم باید دارای نمایه یکتایی باشد؛ تمام فایل‌های اجرایی از نمایه ۰ استفاده می‌کنند. .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. پیش‌فرض ۰ است که برای تولید فایل‌های اجرایی مناسب است. .Sp سوییچ \fB\-\-no\-merge\-exidx\-entries\fR ادغام مدخل‌های مجاور exidx را در اطلاعات بازپیچی فریم غیرفعال می‌کند. .IP \fB\-\-branch\-stub\fR 4 .IX Item "--branch-stub" فعال کردن ریلکسیشن انشعاب پیونددهنده با درج بخش‌های استاب انشعاب در صورت نیاز به گسترش محدوده انشعابات. این گزینه معمولاً مورد نیاز نیست زیرا C\-SKY از دستورالعمل‌های انشعاب و فراخوانی که به کل محدوده حافظه دسترسی دارند پشتیبانی می‌کند. .IP \fB\-\-stub\-group\-size=\fR\fIN\fR 4 .IX Item "--stub-group-size=N" امکان کنترل دقیق‌تر بر ایجاد استاب انشعاب پیونددهنده. حداکثر اندازه گروهی از بخش‌های ورودی را که می‌توانند توسط یک بخش استاب مدیریت شوند روی \fIN\fR تنظیم می‌کند. .PP پیونددهنده‌های 68HC11 و 68HC12 از گزینه‌های خاصی برای کنترل نگاشت تعویض بانک حافظه و تولید کد ترامپولین پشتیبانی می‌کنند. .IP \fB\-\-no\-trampoline\fR 4 .IX Item "--no-trampoline" غیرفعال کردن تولید ترامپولین. به طور پیش‌فرض یک ترامپولین برای هر تابع دور که با استفاده از دستور \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) را کنترل می‌کنند. اگر \fB\-\-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 را کنترل می‌کنند. .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 تعریف شده است. .IP \fB\-N\fR 4 .IX Item "-N" .PD 0 .IP \fB\-\-omagic\fR 4 .IX Item "--omagic" .PD علامت‌گذاری خروجی به عنوان \f(CW\*(C`OMAGIC\*(C'\fR (0407) در سرآیند \fIa.out\fR تا نشان دهد که قطعه text نباید در برابر نوشتن محافظت شود و به اشتراک گذاشته شود. از آنجا که هر دو بخش text و data قابل خواندن و نوشتن هستند، بخش data بلافاصله پس از قطعه text تخصیص داده می‌شود. این قدیمی‌ترین قالب برای برنامه‌های اجرایی PDP11 است. .IP \fB\-n\fR 4 .IX Item "-n" .PD 0 .IP \fB\-\-nmagic\fR 4 .IX Item "--nmagic" .PD علامت‌گذاری خروجی به عنوان \f(CW\*(C`NMAGIC\*(C'\fR (0410) در سرآیند \fIa.out\fR تا نشان دهد که در هنگام اجرای فایل خروجی، بخش text فقط‌خواندنی و میان تمام فرآیندهایی که همان فایل را اجرا می‌کنند قابل اشتراک خواهد بود. این شامل انتقال نواحی داده به اولین مرز صفحه ۸ کیلوبایتی ممکن پس از پایان text است. این گزینه قالب \fIpure executable\fR ایجاد می‌کند. .IP \fB\-z\fR 4 .IX Item "-z" .PD 0 .IP \fB\-\-imagic\fR 4 .IX Item "--imagic" .PD علامت‌گذاری خروجی به عنوان \f(CW\*(C`IMAGIC\*(C'\fR (0411) در سرآیند \fIa.out\fR تا نشان دهد که در هنگام اجرای فایل خروجی، نواحی text و data برنامه با استفاده از ویژگی فضای داده و دستورالعمل مجزا در واحد مدیریت حافظه مدل‌های بزرگتر PDP11 در فضاهای آدرس جداگانه بارگذاری خواهند شد. این کار فضای آدرس در دسترس برنامه را دو برابر می‌کند. قطعه text مجدداً محض، محافظت‌شده در برابر نوشتن و قابل‌اشتراک است. این گزینه یک قالب \fIseparate executable\fR ایجاد می‌کند. .IP \fB\-\-no\-omagic\fR 4 .IX Item "--no-omagic" معادل \fB\-\-nmagic\fR برای pdp11\-aout. .SH "محیط (ENVIRONMENT)" .IX Header "محیط (ENVIRONMENT)" می‌توانید رفتار \fBld\fR را با متغیرهای محیطی \f(CW\*(C`GNUTARGET\*(C'\fR، \f(CW\*(C`LDEMULATION\*(C'\fR و \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR تغییر دهید. .PP متغیر \f(CW\*(C`GNUTARGET\*(C'\fR قالب شیء فایل ورودی را در صورتی که از \fB\-b\fR (یا مترادف آن \fB\-\-format\fR) استفاده نکنید، تعیین می‌کند. مقدار آن باید یکی از نام‌های 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 باطل شود. .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)" کپی‌رایت \(co 1991\-2026 بنیاد نرم‌افزار آزاد (Free Software Foundation, Inc.) .PP مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. یک نسخه از این مجوز در بخش با عنوان «GNU Free Documentation License» گنجانده شده است.