این دستور msp430-ld است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
ld - پیوند دهنده گنو
خلاصه
ld [گزینه های] مبهم کردن ...
شرح
ld تعدادی از شی و فایل های بایگانی را ترکیب می کند، داده های آنها را جابجا می کند و نماد را پیوند می دهد
منابع. معمولا آخرین مرحله در کامپایل یک برنامه، اجرا است ld.
ld فایلهای زبان فرمان لینکر را میپذیرد که در مجموعهای از ویرایشگر لینک AT&T نوشته شدهاند
دستور زبان دستوری، برای ارائه کنترل صریح و کامل بر فرآیند پیوند.
این صفحه مرد زبان فرمان را توصیف نمی کند. را ببینید ld ورود در "اطلاعات" برای کامل
جزئیات مربوط به زبان فرمان و سایر جنبه های پیوند دهنده گنو.
این نسخه از ld از کتابخانه های عمومی BFD برای کار بر روی فایل های شی استفاده می کند. این
اجازه می دهد تا ld برای خواندن، ترکیب، و نوشتن فایل های شی در بسیاری از فرمت های مختلف --- برای
به عنوان مثال، COFF یا "a.out". فرمت های مختلف ممکن است برای تولید هر کدام با هم مرتبط شوند
نوع فایل شی موجود
جدای از انعطافپذیری، پیوند گنو در ارائه بیشتر از سایر پیونددهندهها مفید است
اطلاعات تشخیصی بسیاری از پیوند دهنده ها بلافاصله پس از مواجهه با یک، اجرا را رها می کنند
خطا؛ هر زمانی که ممکن بود، ld به اجرا ادامه می دهد و به شما امکان می دهد سایر خطاها را شناسایی کنید
(یا در برخی موارد، با وجود خطا، یک فایل خروجی دریافت کنید).
پیوند دهنده گنو ld برای پوشش طیف وسیعی از موقعیت ها، و به همان اندازه سازگار است
تا حد امکان با سایر پیوند دهنده ها در نتیجه، شما انتخاب های زیادی برای کنترل آن دارید
رفتار.
OPTIONS
پیوند دهنده تعداد زیادی از گزینه های خط فرمان را پشتیبانی می کند، اما در عمل تعداد کمی از آنها
در هر زمینه خاص استفاده می شود. به عنوان مثال، استفاده مکرر از ld پیوند دادن است
فایل های استاندارد یونیکس روی یک سیستم استاندارد یونیکس پشتیبانی می شود. در چنین سیستمی، به
پیوند یک فایل "hello.o":
من انجام میدم /lib/crt0.o hello.o -lc
این می گوید ld برای تولید فایلی به نام تولید در نتیجه پیوند دادن فایل
"/lib/crt0.o" با "hello.o" و کتابخانه "libc.a" که از استاندارد آمده است
دایرکتوری ها را جستجو کنید (به بحث در مورد -l گزینه زیر.)
برخی از گزینه های خط فرمان به ld ممکن است در هر نقطه از خط فرمان مشخص شود.
با این حال، گزینه هایی که به فایل ها اشاره می کنند، مانند -l or -T، باعث می شود فایل در آدرس خوانده شود
نقطه ای که در آن گزینه در خط فرمان ظاهر می شود، نسبت به فایل های شی و
سایر گزینه های فایل تکرار گزینه های غیر فایلی با آرگومان متفاوت هر دو خواهد بود
بدون تأثیر بیشتر، یا نادیده گرفتن رخدادهای قبلی (آنهایی که در سمت چپ فرمان قرار دارند
خط) آن گزینه. گزینه هایی که ممکن است به طور معناداری بیش از یک بار مشخص شوند، هستند
در توضیحات زیر ذکر شده است.
آرگومان های غیر گزینه ای فایل های شی یا آرشیوهایی هستند که باید به هم مرتبط شوند. آنها
ممکن است به دنبال، قبل یا با گزینه های خط فرمان ترکیب شود، به جز اینکه یک فایل شی
ممکن است آرگومان بین گزینه و آرگومان آن قرار نگیرد.
معمولاً پیوند دهنده با حداقل یک فایل شیء فراخوانی می شود، اما می توانید دیگری را مشخص کنید
اشکال فایل های ورودی باینری با استفاده از -l, -Rو زبان دستور اسکریپت. اگر نه دوتایی
فایل های ورودی اصلا مشخص شده اند، لینک دهنده هیچ خروجی تولید نمی کند و آن را صادر می کند
پیام نه ورودی فایل ها.
اگر پیوند دهنده نتواند فرمت یک فایل شی را تشخیص دهد، فرض می کند که a است
اسکریپت پیوند دهنده یک اسکریپت مشخص شده در این روش اسکریپت پیوند دهنده اصلی مورد استفاده را تقویت می کند
پیوند (یا اسکریپت پیشفرض پیونددهنده یا آن چیزی که با استفاده از آن مشخص شده است -T) این
ویژگی به پیوند دهنده اجازه می دهد تا با فایلی که به نظر یک شی یا یک به نظر می رسد پیوند دهد
بایگانی کنید، اما در واقع فقط برخی از مقادیر نماد را تعریف می کند، یا از "INPUT" یا "GROUP" برای
بارگذاری اشیاء دیگر مشخص کردن یک اسکریپت به این روش صرفاً پیوند دهنده اصلی را تقویت می کند
اسکریپت، با دستورات اضافی که بعد از اسکریپت اصلی قرار داده شده است. استفاده کنید -T گزینه ای برای جایگزینی
اسکریپت پیوند دهنده پیش فرض را به طور کامل، اما به اثر دستور "INSERT" توجه کنید.
برای گزینه هایی که نام آنها یک حرف است، آرگومان های گزینه باید یا از آن پیروی کنند
حرف گزینه بدون فاصله میانی، یا به عنوان آرگومان جداگانه داده شود
بلافاصله پس از گزینه ای که به آنها نیاز دارد.
برای گزینه هایی که نام آنها چند حرف است، یک یا دو خط می تواند قبل از آن باشد
نام گزینه؛ مثلا، ردیابی - نماد و -- ردیابی - نماد معادل هستند. توجه --- وجود دارد
یک استثنا از این قاعده است. گزینه های چند حرفی که با حرف کوچک شروع می شوند
فقط می توان قبل از دو خط تیره. این برای کاهش سردرگمی با -o گزینه. بنابراین
مثلا -جادویی نام فایل خروجی را تنظیم می کند شعبده بازي در حالیکه -- جادویی NMAGIC را تنظیم می کند
پرچم روی خروجی
آرگومان های گزینه های چندحرفی یا باید با علامت از نام گزینه جدا شوند
علامت مساوی است یا بلافاصله پس از گزینه ای که به عنوان آرگومان های جداگانه داده می شود
آنها را می طلبد. مثلا، -- ردیابی - نماد فو و --trace-symbol=foo معادل هستند
اختصارات منحصر به فرد نام گزینه های چند حرفی پذیرفته می شود.
توجه---اگر پیوند دهنده به طور غیرمستقیم از طریق درایور کامپایلر فراخوانی شود (مثلاً gcc) سپس
تمام گزینه های خط فرمان لینکر باید با پیشوند باشد -Wl، (یا هر چیزی که مناسب است
برای درایور کامپایلر خاص) مانند این:
gcc -Wl,--start-group foo.o bar.o -Wl,--end-group
این مهم است، زیرا در غیر این صورت برنامه درایور کامپایلر ممکن است بیصدا آن را رها کند
گزینه های پیوند دهنده، که منجر به یک لینک بد می شود. همچنین ممکن است هنگام عبور از گزینه ها سردرگمی ایجاد شود
که به مقادیری از طریق درایور نیاز دارند، به عنوان استفاده از فاصله بین گزینه و آرگومان
به عنوان یک جداکننده عمل می کند و باعث می شود که درایور فقط گزینه را به لینک کننده و the ارسال کند
آرگومان به کامپایلر در این مورد، استفاده از فرم های به هم پیوسته هر دو ساده ترین کار است
گزینه های تک حرفی و چند حرفی مانند:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
در اینجا جدولی از سوئیچ های خط فرمان عمومی پذیرفته شده توسط پیوند دهنده گنو آمده است:
@پرونده
گزینه های خط فرمان را از پرونده. گزینه های خوانده شده به جای گزینه درج می شوند
اصلی @پرونده گزینه. اگر پرونده وجود ندارد، یا نمی توان آن را خواند، پس گزینه
به معنای واقعی کلمه رفتار خواهد شد و حذف نخواهد شد.
گزینه ها در پرونده با فضای خالی از هم جدا می شوند. ممکن است یک کاراکتر فضای خالی گنجانده شود
در یک گزینه با احاطه کردن کل گزینه به صورت تک یا دو گیومه. هر
کاراکتر (از جمله بک اسلش) ممکن است با پیشوند کردن کاراکتر to be گنجانده شود
همراه با اسلش. در پرونده ممکن است خود حاوی @ اضافی باشدپرونده گزینه ها؛ هر
چنین گزینه هایی به صورت بازگشتی پردازش می شوند.
-a کلمه کلیدی
این گزینه برای سازگاری HP/UX پشتیبانی می شود. در کلمه کلیدی استدلال باید یکی از
رشته ها بایگانی, به اشتراک گذاشته شده، یا به طور پیش فرض. -بایگانی از نظر عملکردی معادل است
-Bstatic، و دو کلمه کلیدی دیگر از نظر عملکردی معادل هستند -بی دینامیک. این
گزینه ممکن است هر چند بار استفاده شود.
--حسابرسی AUDITLIB
می افزاید: AUDITLIB به ورودی "DT_AUDIT" بخش پویا. AUDITLIB بررسی نمی شود
برای موجودیت، از DT_SONAME مشخص شده در کتابخانه استفاده نخواهد کرد. اگر مشخص شود
چندین بار "DT_AUDIT" حاوی یک لیست جدا شده از دو نقطه از رابط های حسابرسی خواهد بود
استفاده کنید. اگر پیوند دهنده هنگام جستجوی اشتراکگذاری شده، یک شی با ورودی ممیزی پیدا کند
کتابخانه ها، یک ورودی مربوط به "DT_DEPAUDIT" را در فایل خروجی اضافه می کند. این
این گزینه فقط در پلتفرم های ELF که از رابط rtld-audit پشتیبانی می کنند معنادار است.
-A معماری
--معماری=معماری
در نسخه فعلی از ld، این گزینه فقط برای خانواده Intel 960 مفید است
معماری ها در آن ld پیکربندی، معماری آرگومان را مشخص می کند
معماری خاص در خانواده 960، برخی از پادمان ها را قادر می سازد و آن را اصلاح می کند
مسیر جستجوی آرشیو-کتابخانه
انتشارات آینده از ld ممکن است از عملکرد مشابه برای سایر معماری ها پشتیبانی کند
خانواده ها.
-b فرمت ورودی
--فرمت=فرمت ورودی
ld ممکن است برای پشتیبانی از بیش از یک نوع فایل شی پیکربندی شود. اگر شما ld is
به این ترتیب پیکربندی شده است، می توانید از -b گزینه ای برای تعیین فرمت باینری برای ورودی
فایل های شیئی که از این گزینه در خط فرمان پیروی می کنند. حتی وقتی که ld پیکربندی شده است
برای پشتیبانی از فرمت های شی جایگزین، معمولاً نیازی به مشخص کردن آن ندارید ld
باید به گونه ای پیکربندی شود که به عنوان فرمت ورودی پیش فرض، معمول ترین قالب در هر یک از آنها انتظار می رود
ماشین فرمت ورودی یک رشته متن است، نام یک فرمت خاص که توسط آن پشتیبانی می شود
کتابخانه های BFD (می توانید فرمت های باینری موجود را با آن فهرست کنید ابجدمپ -i.)
اگر فایل ها را با یک باینری غیر معمول پیوند می دهید، ممکن است بخواهید از این گزینه استفاده کنید
قالب همچنین می توانید استفاده کنید -b برای تغییر فرمت ها به طور صریح (هنگام پیوند دادن فایل های شی
از فرمت های مختلف)، با گنجاندن -b فرمت ورودی قبل از هر گروه از فایل های شی
در یک قالب خاص
فرمت پیش فرض از متغیر محیطی "GNUTARGET" گرفته شده است.
همچنین می توانید با استفاده از دستور "TARGET" قالب ورودی را از یک اسکریپت تعریف کنید.
-c فایل دستوری MRI
--mri-script=فایل دستوری MRI
برای سازگاری با لینکرهای تولید شده توسط MRI، ld فایل های اسکریپت نوشته شده در یک را می پذیرد
زبان دستوری جایگزین و محدود، که در فایلهای اسکریپت سازگار با MRI توضیح داده شده است
بخش اسناد GNU ld. فایل های اسکریپت MRI را با گزینه معرفی کنید -c؛ استفاده کنید
la -T گزینه ای برای اجرای اسکریپت های پیوند دهنده نوشته شده در همه منظور ld برنامه نویسی
زبان اگر MRI-cmdfile وجود ندارد، ld آن را در دایرکتوری های مشخص شده جستجو می کند
توسط هر -L گزینه.
-d
دی سی
-درد این سه گزینه معادل هستند. چندین فرم برای سازگاری پشتیبانی می شوند
با لینک دهنده های دیگر آنها فضا را به نمادهای رایج اختصاص می دهند حتی اگر خروجی قابل جابجایی باشد
فایل مشخص شده است (با -r). دستور اسکریپت "FORCE_COMMON_ALLOCATION" دارای این است
همان اثر
- بازپرداخت AUDITLIB
-P AUDITLIB
می افزاید: AUDITLIB به ورودی "DT_DEPAUDIT" بخش پویا. AUDITLIB نیست
وجود آن بررسی شده است، و از DT_SONAME مشخص شده در کتابخانه استفاده نخواهد کرد. اگر
چندین بار مشخص شده است "DT_DEPAUDIT" حاوی لیستی از ممیزی جدا از دو نقطه است
رابط های مورد استفاده این گزینه فقط در پلتفرم های ELF که از آن پشتیبانی می کنند معنادار است
رابط rtld-audit. گزینه -P برای سازگاری سولاریس ارائه شده است.
-e ورود
-- ورود =ورود
استفاده کنید ورود به عنوان نماد صریح برای شروع اجرای برنامه شما، به جای
نقطه ورودی پیش فرض اگر نمادی به نام وجود ندارد ورود، پیوند دهنده سعی خواهد کرد
تجزیه ورود به عنوان یک عدد، و از آن به عنوان آدرس ورودی استفاده کنید (عدد خواهد بود
تفسیر در پایه 10; می توانید از یک پیشرو استفاده کنید 0x برای پایه 16 یا پیشرو 0 برای پایه
8).
--exclude-libs لوب,لوب، ...
فهرستی از کتابخانه های بایگانی را مشخص می کند که نمادها نباید به طور خودکار از آنها خارج شوند
صادر می شود. نام کتابخانه ممکن است با کاما یا دو نقطه مشخص شود. مشخص کردن
"--exclude-libs ALL" نمادهای موجود در تمام کتابخانه های آرشیو را از صادرات خودکار مستثنی می کند.
این گزینه فقط برای پورت هدفمند i386 PE پیوند دهنده و برای ELF در دسترس است
پورت های هدفمند برای i386 PE، نمادهایی که به صراحت در یک فایل .def فهرست شده اند، همچنان باقی می مانند
بدون توجه به این گزینه صادر می شود. برای پورت های هدف ELF، نمادهایی تحت تأثیر این قرار می گیرند
گزینه به عنوان مخفی تلقی می شود.
--exclude-modules-for-implib واحد,واحد، ...
فهرستی از فایل های شی یا اعضای بایگانی را مشخص می کند که نمادها نباید از آن ها باشند
به طور خودکار صادر می شود، اما باید به طور عمده در کتابخانه واردات کپی شود
در حین پیوند ایجاد می شود. نام ماژول ها ممکن است با کاما یا
دو نقطه، و باید دقیقاً با نام فایل های استفاده شده مطابقت داشته باشد ld برای باز کردن فایل ها؛ برای بایگانی
اعضا، این فقط نام عضو است، اما برای فایلهای شیء، نام فهرست شده باید باشد
هر مسیری را که برای تعیین فایل ورودی در پیوند دهنده استفاده می شود، شامل شود و دقیقا مطابقت دهد
خط فرمان. این گزینه فقط برای پورت i386 PE در دسترس است
پیوند دهنده نمادهایی که صریحاً در یک فایل .def فهرست شدهاند، بدون توجه به آن، همچنان صادر میشوند
این گزینه
-E
-- صادرات - پویا
--بدون صادرات پویا
هنگام ایجاد یک فایل اجرایی با پیوند پویا، با استفاده از -E گزینه یا
-- صادرات - پویا گزینه باعث می شود که پیوند دهنده تمام نمادها را به نماد پویا اضافه کند
جدول. جدول نماد پویا مجموعه ای از نمادها است که از پویا قابل مشاهده است
اشیاء در زمان اجرا
اگر از هیچ یک از این گزینه ها استفاده نمی کنید (یا از --بدون صادرات پویا گزینه ای برای
بازیابی رفتار پیشفرض)، جدول نمادهای پویا معمولاً فقط شامل میشود
آن نمادهایی که توسط برخی از شی پویا ذکر شده در پیوند ارجاع داده می شوند.
اگر از "dlopen" برای بارگذاری یک شی پویا استفاده می کنید که باید به نمادها مراجعه کند
تعریف شده توسط برنامه، به جای برخی دیگر از شی پویا، پس احتمالا شما
هنگام پیوند دادن خود برنامه باید از این گزینه استفاده کنید.
همچنین می توانید از لیست پویا برای کنترل اینکه چه نمادهایی باید به لیست اضافه شوند استفاده کنید
جدول نماد پویا در صورتی که فرمت خروجی از آن پشتیبانی کند. توضیحات را ببینید
--dynamic-list.
توجه داشته باشید که این گزینه مختص پورت های هدفمند ELF است. اهداف PE از مشابه پشتیبانی می کنند
عملکرد صادر کردن تمام نمادها از یک DLL یا EXE. توضیحات را ببینید
--صادرات همه نمادها زیر کلیک کنید.
-EB اجسام بزرگ هندی را پیوند دهید. این بر فرمت خروجی پیش فرض تأثیر می گذارد.
-The اشیاء کوچک اندین را پیوند دهید. این بر فرمت خروجی پیش فرض تأثیر می گذارد.
-f نام
--کمکی=نام
هنگام ایجاد یک شی مشترک ELF، فیلد داخلی DT_AUXILIARY را روی عدد تنظیم کنید
نام مشخص شده این به پیوند دهنده پویا می گوید که جدول نماد به اشتراک گذاشته شده است
شی باید به عنوان یک فیلتر کمکی در جدول نمادهای شی مشترک استفاده شود
نام.
اگر بعداً برنامه ای را با این شی فیلتر پیوند دهید، پس از اجرای آن،
برنامه، پیوند دهنده پویا فیلد DT_AUXILIARY را می بیند. اگر پیوند دهنده پویا
هر نمادی را از شی فیلتر حل می کند، ابتدا بررسی می کند که آیا a وجود دارد یا خیر
تعریف در شیء مشترک نام. اگر وجود داشته باشد، به جای آن استفاده می شود
تعریف در شی فیلتر شیء مشترک نام لازم نیست وجود داشته باشد بنابراین
شی مشترک نام ممکن است برای ارائه یک اجرای جایگزین از برخی استفاده شود
توابع، شاید برای اشکال زدایی یا برای عملکرد خاص ماشین.
این گزینه ممکن است بیش از یک بار مشخص شود. ورودی های DT_AUXILIARY ایجاد خواهند شد
به ترتیبی که در خط فرمان ظاهر می شوند.
-F نام
-- فیلتر =نام
هنگام ایجاد یک شی مشترک ELF، فیلد داخلی DT_FILTER را روی مقدار مشخص شده تنظیم کنید
نام. این به پیوند دهنده پویا می گوید که جدول نماد شی مشترک که
در حال ایجاد باید به عنوان یک فیلتر در جدول نماد شیء مشترک استفاده شود
نام.
اگر بعداً برنامه ای را با این شی فیلتر پیوند دهید، پس از اجرای آن،
برنامه، پیوند دهنده پویا فیلد DT_FILTER را می بیند. پیوند دهنده پویا خواهد بود
طبق جدول نمادهای شی فیلتر طبق معمول نمادها را حل کنید
در واقع به تعاریف یافت شده در شیء مشترک پیوند خواهد خورد نام. بنابراین
شی فیلتر می تواند برای انتخاب زیر مجموعه ای از نمادهای ارائه شده توسط شی مورد استفاده قرار گیرد
نام.
برخی از لینکهای قدیمیتر از آن استفاده میکردند -F گزینه در سراسر زنجیره ابزار کامپایل برای
تعیین فرمت فایل شی برای هر دو فایل شی ورودی و خروجی. پیوند دهنده گنو
از مکانیسم های دیگری برای این منظور استفاده می کند: -b, --قالب, --oformat گزینه ها،
دستور "TARGET" در اسکریپت های پیوند دهنده و متغیر محیطی "GNUTARGET". گنو
لینکر را نادیده می گیرد -F گزینه زمانی که یک شی مشترک ELF ایجاد نمی کنید.
-فینی=نام
هنگام ایجاد یک شیء اجرایی یا اشتراکگذاری شده ELF، زمانی که فایل اجرایی یا به اشتراک گذاشته میشود، NAME را فراخوانی کنید
با تنظیم DT_FINI بر روی آدرس تابع، شیء مشترک بارگیری می شود. توسط
به طور پیش فرض، پیوند دهنده از "_fini" به عنوان تابع برای فراخوانی استفاده می کند.
-g نادیده گرفته شد. برای سازگاری با ابزارهای دیگر ارائه شده است.
-G ارزش
--gpsize=ارزش
حداکثر اندازه اشیاء را که باید با استفاده از رجیستر GP بهینه شوند را تنظیم کنید اندازه. این
فقط برای فرمت های فایل شی مانند MIPS ECOFF که از قرار دادن پشتیبانی می کند معنی دارد
اجسام بزرگ و کوچک به بخش های مختلف تقسیم می شوند. این برای شی دیگر نادیده گرفته می شود
فرمت های فایل
-h نام
-سونام=نام
هنگام ایجاد یک شی مشترک ELF، فیلد داخلی DT_SONAME را روی مقدار مشخص شده تنظیم کنید
نام. هنگامی که یک فایل اجرایی با یک شی به اشتراک گذاشته شده که دارای یک فیلد DT_SONAME است پیوند داده می شود،
سپس هنگامی که فایل اجرایی اجرا می شود، پیوند دهنده پویا تلاش می کند تا اشتراک گذاری شده را بارگذاری کند
شی مشخص شده توسط فیلد DT_SONAME به جای استفاده از نام فایل داده شده به
پیوند دهنده
-i پیوند افزایشی را انجام دهید (همان گزینه -r).
-init=نام
هنگام ایجاد یک شیء اجرایی یا اشتراکگذاری شده ELF، زمانی که فایل اجرایی یا به اشتراک گذاشته میشود، NAME را فراخوانی کنید
با تنظیم DT_INIT روی آدرس تابع، شیء مشترک بارگیری می شود. توسط
به طور پیش فرض، پیوند دهنده از "_init" به عنوان تابع برای فراخوانی استفاده می کند.
-l مشخصات نام
--کتابخانه =مشخصات نام
آرشیو یا فایل شی مشخص شده توسط را اضافه کنید مشخصات نام به لیست فایل هایی که باید پیوند دهید.
این گزینه ممکن است چند بار استفاده شود. اگر مشخصات نام از فرم است :نام فایل, ld
مسیر کتابخانه را برای فایلی به نام جستجو می کند نام فایل، در غیر این صورت آن را جستجو می کند
مسیر کتابخانه برای یک فایل به نام libnamespec.a.
در سیستم هایی که از کتابخانه های مشترک پشتیبانی می کنند، ld همچنین ممکن است فایل های دیگری را جستجو کند
libnamespec.a. به طور خاص، در سیستمهای ELF و SunOS، ld دایرکتوری را جستجو می کند
کتابخانه ای به نام libnamespec.so قبل از جستجو برای یک تماس libnamespec.a. (توسط
پسوند ".so" یک کتابخانه مشترک را نشان می دهد.) توجه داشته باشید که این رفتار
اعمال نمی شود :نام فایل، که همیشه یک فایل با نام را مشخص می کند نام فایل.
پیوند دهنده تنها یک بار در بایگانی، در مکانی که در آن مشخص شده است، جستجو می کند
خط فرمان اگر بایگانی نمادی را تعریف کند که در یک شیء تعریف نشده است
که قبل از بایگانی در خط فرمان ظاهر می شود، پیوند دهنده شامل خواهد شد
فایل(های) مناسب از آرشیو با این حال، یک نماد تعریف نشده در یک شی
ظاهر شدن بعداً در خط فرمان باعث نمی شود پیوند دهنده در بایگانی جستجو کند
دوباره.
مشاهده -( گزینه ای برای راهی برای وادار کردن پیوند دهنده به جستجوی چندین بار در آرشیوها.
ممکن است یک آرشیو را چندین بار در خط فرمان فهرست کنید.
این نوع جستجوی آرشیو برای پیوند دهنده های یونیکس استاندارد است. با این حال، اگر شما هستند
با استفاده از ld در AIX، توجه داشته باشید که با رفتار پیوند دهنده AIX متفاوت است.
-L searchdir
--library-path=searchdir
اضافه کردن مسیر searchdir به لیست مسیرهایی که ld به دنبال کتابخانه های آرشیو و
ld اسکریپت های کنترلی می توانید هر چند بار از این گزینه استفاده کنید. دایرکتوری ها هستند
به ترتیبی که در خط فرمان مشخص شده اند جستجو می شوند. دایرکتوری ها
مشخص شده در خط فرمان قبل از دایرکتوری های پیش فرض جستجو می شوند. همه -L
گزینه ها برای همه اعمال می شود -l گزینه ها، صرف نظر از ترتیب ظاهر شدن گزینه ها.
-L گزینه ها بر چگونگی تأثیری ندارند ld یک اسکریپت پیوند دهنده را جستجو می کند مگر اینکه -T گزینه است
مشخص شده.
If searchdir با "="" شروع می شود، سپس "=" با علامت جایگزین می شود sysroot پیشوند، یک
مسیری که هنگام پیکربندی پیوند دهنده مشخص می شود.
مجموعه پیشفرض مسیرهای جستجو شده (بدون مشخص شدن با -L) بستگی به کدام دارد
حالت تقلید ld در حال استفاده است، و در برخی موارد همچنین نحوه پیکربندی آن.
مسیرها را نیز می توان در یک اسکریپت پیوند با دستور "SEARCH_DIR" مشخص کرد.
دایرکتوری هایی که به این روش مشخص شده اند در نقطه ای که اسکریپت پیوند دهنده در آن قرار دارد جستجو می شوند
در خط فرمان ظاهر می شود.
-m شبیه سازی
تقلید کنید شبیه سازی پیوند دهنده می توانید شبیه سازی های موجود را با
-- پرحرف or -V گزینه.
اگر -m گزینه استفاده نمی شود، شبیه سازی از "LDEMULATION" گرفته شده است.
متغیر محیطی، اگر تعریف شده باشد.
در غیر این صورت، شبیه سازی پیش فرض بستگی به نحوه پیکربندی پیوند دهنده دارد.
-M
--چاپ-نقشه
یک نقشه پیوند به خروجی استاندارد چاپ کنید. نقشه پیوند اطلاعاتی در مورد
لینک، از جمله موارد زیر:
· جایی که فایل های شی در حافظه نگاشت می شوند.
· نحوه تخصیص نمادهای رایج.
· تمامی اعضای آرشیو موجود در لینک، با ذکر نماد که
باعث شد عضو بایگانی وارد شود.
· مقادیر اختصاص داده شده به نمادها.
توجه - نمادهایی که مقادیر آنها با عبارتی محاسبه می شود که شامل a است
ارجاع به مقدار قبلی همان نماد ممکن است نتیجه درستی نداشته باشد
در نقشه پیوند نشان داده شده است. این به این دلیل است که پیوند دهنده واسطه را دور می زند
نتیجه می دهد و فقط ارزش نهایی یک عبارت را حفظ می کند. تحت چنین
در شرایطی که پیوند دهنده مقدار نهایی محصور شده توسط براکت ها را نمایش می دهد.
به عنوان مثال یک اسکریپت پیوند دهنده حاوی:
فو = 1
فو = فو * 4
فو = فو + 8
خروجی زیر را در نقشه پیوند تولید خواهد کرد اگر -M گزینه استفاده می شود:
0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)
دیدن عبارات برای اطلاعات بیشتر در مورد عبارات در اسکریپت های پیوند دهنده.
-n
--nmagic
تراز صفحه بخش ها را غیرفعال کنید و پیوند در برابر کتابخانه های مشترک را غیرفعال کنید. اگر
فرمت خروجی از اعداد جادویی سبک یونیکس پشتیبانی می کند، خروجی را به عنوان "NMAGIC" علامت گذاری کنید.
-N
-- جادویی
قسمت های متن و داده را به گونه ای تنظیم کنید که قابل خواندن و نوشتن باشند. همچنین، صفحه را تراز نکنید
بخش داده، و غیرفعال کردن پیوند در برابر کتابخانه های مشترک. اگر فرمت خروجی
از اعداد جادویی سبک یونیکس پشتیبانی می کند، خروجی را به عنوان "OMAGIC" علامت گذاری کنید. توجه: اگر چه الف
بخش متن قابل نوشتن برای اهداف PE-COFF مجاز است، با آن مطابقت ندارد
مشخصات فرمت منتشر شده توسط مایکروسافت.
-- بدون جادو
این گزینه بیشتر تأثیرات را نفی می کند -N گزینه. بخش متن را روی آن تنظیم می کند
فقط خواندنی باشد و بخش داده را مجبور می کند تا صفحه تراز شود. توجه - این گزینه انجام می دهد
پیوند در برابر کتابخانه های مشترک را فعال نمی کند. استفاده کنید -بی دینامیک برای این.
-o تولید
--خروجی=تولید
استفاده کنید تولید به عنوان نام برنامه تولید شده توسط ld; اگر این گزینه نیست
مشخص شده، نام a.out به صورت پیش فرض استفاده می شود. دستور اسکریپت "OUTPUT" نیز می تواند
نام فایل خروجی را مشخص کنید.
-O سطح
If سطح مقادیر عددی بزرگتر از صفر است ld خروجی را بهینه می کند این ممکن است
به طور قابل توجهی بیشتر طول می کشد و بنابراین احتمالا فقط باید برای مرحله نهایی فعال شود
دودویی. در حال حاضر این گزینه فقط بر تولید کتابخانه مشترک ELF تأثیر می گذارد. آینده
انتشار پیوند دهنده ممکن است از این گزینه بیشتر استفاده کند. همچنین در حال حاضر وجود ندارد
تفاوت در رفتار پیوند دهنده برای مقادیر مختلف غیر صفر این گزینه.
باز هم این ممکن است با نسخه های بعدی تغییر کند.
-q
--emit-relocs
بخشها و محتویات جابهجایی را در فایلهای اجرایی کاملاً پیوند داده شده بگذارید. لینک ارسال کنید
ابزارهای تجزیه و تحلیل و بهینه سازی ممکن است به این اطلاعات برای انجام صحیح نیاز داشته باشند
اصلاحات اجرایی این منجر به فایل های اجرایی بزرگتر می شود.
این گزینه در حال حاضر فقط در پلتفرم های ELF پشتیبانی می شود.
- نیروی پویا
فایل خروجی را مجبور کنید که بخش های پویا داشته باشد. این گزینه مخصوص VxWorks است
اهداف.
-r
--قابل جابجایی
تولید خروجی قابل جابجایی --- به عنوان مثال، یک فایل خروجی تولید کنید که به نوبه خود می تواند نقش داشته باشد
ورودی به ld. این اغلب نامیده می شود جزئي ارتباط. به عنوان یک عارضه جانبی، در محیط ها
که از اعداد جادویی استاندارد یونیکس پشتیبانی می کنند، این گزینه فایل خروجی را نیز تنظیم می کند
شماره جادویی به "OMAGIC". اگر این گزینه مشخص نشده باشد، یک فایل مطلق است
تولید شده. هنگام پیوند دادن برنامه های ++C، این گزینه اراده نه حل ارجاعات به
سازندگان؛ برای انجام آن، استفاده کنید -اور.
هنگامی که یک فایل ورودی فرمت یکسانی با فایل خروجی ندارد، پیوند بخشی است
فقط در صورتی پشتیبانی می شود که آن فایل ورودی حاوی هیچ جابجایی نباشد. ناهمسان
فرمت های خروجی می توانند محدودیت های بیشتری داشته باشند. برای مثال برخی از قالبهای مبتنی بر "a.out".
به هیچ وجه از پیوند جزئی با فایل های ورودی در فرمت های دیگر پشتیبانی نمی کند.
این گزینه همان کار را انجام می دهد -i.
-R نام فایل
--just-symbols=نام فایل
نام نمادها و آدرس آنها را از اینجا بخوانید نام فایل، اما آن را جابه جا نکنید یا آن را اضافه نکنید
آن را در خروجی این اجازه می دهد تا فایل خروجی شما به صورت نمادین به مطلق ارجاع دهد
مکان های حافظه تعریف شده در برنامه های دیگر. شما می توانید از این گزینه بیشتر از
یک بار.
برای سازگاری با سایر پیوند دهنده های ELF، اگر -R گزینه توسط یک دایرکتوری دنبال می شود
نام، به جای یک نام فایل، به عنوان تلقی می شود -rpath گزینه.
-s
-- نوار همه
تمام اطلاعات نماد را از فایل خروجی حذف کنید.
-S
-- strip-debug
اطلاعات نماد اشکال زدا (اما نه همه نمادها) را از فایل خروجی حذف کنید.
-t
--پی گیری
چاپ نام فایل های ورودی به عنوان ld آنها را پردازش می کند.
-T فایل اسکریپت
--script=فایل اسکریپت
استفاده کنید فایل اسکریپت به عنوان اسکریپت پیوند دهنده این اسکریپت جایگزین می شود ldاسکریپت پیوند دهنده پیش فرض
(به جای اضافه کردن به آن)، بنابراین فایل فرمان باید همه چیز لازم را مشخص کند
فایل خروجی را توضیح دهید اگر فایل اسکریپت در فهرست فعلی وجود ندارد،
"ld" آن را در دایرکتوری های مشخص شده توسط هر مورد قبلی جستجو می کند -L گزینه ها. چندگانه
-T گزینه ها جمع می شوند
-dT فایل اسکریپت
--default-script=فایل اسکریپت
استفاده کنید فایل اسکریپت به عنوان اسکریپت پیوند دهنده پیش فرض.
این گزینه شبیه به - متن گزینه به جز اینکه پردازش اسکریپت است
به تعویق افتاد تا زمانی که بقیه خط فرمان پردازش شود. این اجازه می دهد
گزینه های قرار داده شده بعد از -- پیش فرض اسکریپت گزینه ای در خط فرمان برای تحت تاثیر قرار دادن
رفتار اسکریپت لینکر، که می تواند در خط فرمان لینکر مهم باشد
نمی تواند مستقیماً توسط کاربر کنترل شود. (مثلاً چون خط فرمان در حال بودن است
ساخته شده توسط ابزار دیگری، مانند gcc).
-u نماد
--تعریف نشده=نماد
استحکام نماد به عنوان یک نماد تعریف نشده در فایل خروجی وارد شود. انجام این کار ممکن است،
برای مثال، پیوند ماژول های اضافی را از کتابخانه های استاندارد آغاز کنید. -u شاید
با آرگومان های گزینه های مختلف برای وارد کردن نمادهای تعریف نشده اضافی تکرار می شود. این
گزینه معادل دستور اسکریپت پیوند دهنده "EXTERN" است.
-اور برای هر چیزی غیر از برنامه های ++C، این گزینه معادل است -r: ایجاد می کند
خروجی قابل جابجایی --- به عنوان مثال، یک فایل خروجی که به نوبه خود می تواند به عنوان ورودی عمل کند ldاست. وقتی که
پیوند دادن برنامه های ++C، -اور میکند حل ارجاع به سازنده ها، بر خلاف -r. دارد
برای استفاده کار نمی کند -اور روی فایل هایی که خودشان با آنها مرتبط بودند -اور؛ از وقتی که
جدول سازنده ساخته شده است، نمی توان آن را اضافه کرد. استفاده کنید -اور فقط برای آخرین
پیوند جزئی، و -r برای بقیه
-- منحصر به فرد[=بخش]
یک بخش خروجی جداگانه برای هر بخش ورودی مطابقت ایجاد می کند بخش، یا اگر
عام اختیاری بخش برای هر بخش ورودی یتیم، آرگومان وجود ندارد. یک
بخش یتیم بخشی است که به طور خاص در اسکریپت پیوند دهنده ذکر نشده است. شما ممکن است از این استفاده کنید
گزینه چندین بار در خط فرمان. از ادغام عادی ورودی ها جلوگیری می کند
بخشهایی با همین نام، که تخصیص بخشهای خروجی را در یک اسکریپت پیوندی نادیده میگیرند.
-v
- نسخه
-V نمایش شماره نسخه برای ld. -V گزینه همچنین شبیه سازی های پشتیبانی شده را لیست می کند.
-x
- همه را کنار بگذارید
تمام نمادهای محلی را حذف کنید.
-X
-- دور انداختن-محلی ها
تمام نمادهای محلی موقت را حذف کنید. (این نمادها با محلی خاص سیستم شروع می شوند
معمولاً پیشوندهای برچسب .L برای سیستم های ELF یا L برای سیستم های سنتی a.out.)
-y نماد
--trace-symbol=نماد
نام هر فایل لینک شده را چاپ کنید نماد ظاهر می شود. این گزینه ممکن است داده شود
هر تعداد بار در بسیاری از سیستم ها لازم است که یک خط زیر نوشته شود.
این گزینه زمانی مفید است که شما یک نماد تعریف نشده در پیوند خود دارید اما نمی دانید
مرجع از کجا می آید
-Y مسیر
اضافه کردن مسیر به مسیر پیش فرض جستجوی کتابخانه. این گزینه برای سولاریس وجود دارد
سازگاری.
-z کلمه کلیدی
کلمات کلیدی شناخته شده عبارتند از:
کامبرلوک
چندین بخش reloc را ترکیب می کند و آنها را برای جستجوی نمادهای پویا مرتب می کند
ذخیره سازی امکان پذیر است.
دفاع می کند
نمادهای تعریف نشده را در فایل های شی مجاز نمی کند. نمادهای تعریف نشده به اشتراک گذاشته شده است
کتابخانه ها هنوز مجاز هستند.
execstack
شی را به عنوان نیاز به پشته اجرایی علامت گذاری می کند.
init first
این گزینه فقط در هنگام ساختن یک شیء مشترک معنادار است. شی را مشخص می کند
به طوری که مقداردهی اولیه زمان اجرا آن قبل از مقداردهی اولیه زمان اجرا رخ خواهد داد
هر شی دیگری که در همان زمان وارد فرآیند شود. به طور مشابه
نهایی شدن زمان اجرا شی بعد از نهایی شدن زمان اجرا رخ خواهد داد
هر شی دیگری
قرار دادن
شیئی را که جدول نماد آن قبل از همه نمادها به جز علامت قرار می دهد، علامت گذاری می کند
قابل اجرایی اولیه
تنبل
هنگام ایجاد یک کتابخانه اجرایی یا مشترک، آن را علامت گذاری کنید تا پویا را مشخص کنید
پیوند دهنده برای به تعویق انداختن وضوح فراخوانی تابع به نقطه ای که تابع فراخوانی می شود
(تنبلی صحافی)، به جای در زمان بارگذاری. Lazy binding پیش فرض است.
loadfltr
شی مشخص می کند که فیلترهای آن بلافاصله در زمان اجرا پردازش شوند.
مولدف
امکان تعاریف متعدد را فراهم می کند.
نوکامبرلوک
ترکیب چند بخش reloc را غیرفعال می کند.
nocopyreloc
تولید کپی relocs را غیرفعال می کند.
nodefaultlib
شیء را علامت گذاری می کند که جستجوی وابستگی های این شیء هر کدام را نادیده می گیرد
مسیرهای جستجوی کتابخانه پیش فرض
گره
علامت گذاری می کند که شی نباید در زمان اجرا بارگیری شود.
گره زدن
شیء را که در دسترس نیست برای "dlopen" علامت گذاری می کند.
گره
علامت گذاری می کند که شی را نمی توان با "dldump" انداخت.
noexecstack
شی را به عنوان عدم نیاز به پشته اجرایی علامت گذاری می کند.
نورلرو
سرصفحه بخش ELF "PT_GNU_RELRO" را در شیء ایجاد نکنید.
اکنون هنگام ایجاد یک کتابخانه اجرایی یا مشترک، آن را علامت گذاری کنید تا پویا را مشخص کنید
پیوند دهنده برای حل همه نمادها هنگام شروع برنامه یا هنگام اشتراک گذاری
کتابخانه به جای به تعویق انداختن وضوح فراخوانی تابع، به استفاده از dlopen مرتبط است
تا زمانی که تابع برای اولین بار فراخوانی می شود.
منشاء
علامت گذاری می کند که شی ممکن است حاوی $ORIGIN باشد.
relro
یک سرصفحه قطعه ELF "PT_GNU_RELRO" در شی ایجاد کنید.
max-page-size=ارزش
حداکثر اندازه صفحه شبیه سازی را روی آن تنظیم کنید ارزش.
common-page-size=ارزش
اندازه صفحه معمولی شبیه سازی را روی آن تنظیم کنید ارزش.
سایر کلمات کلیدی برای سازگاری Solaris نادیده گرفته می شوند.
-( بایگانی -)
-- شروع-گروه بایگانی --پایان-گروه
La بایگانی باید لیستی از فایل های آرشیو باشد. آنها ممکن است یا فایل صریح باشند
نام ها، یا -l گزینه.
آرشیوهای مشخص شده به طور مکرر جستجو می شوند تا زمانی که هیچ مرجع تعریف نشده جدیدی وجود نداشته باشد
ایجاد شده. به طور معمول، یک آرشیو فقط یک بار به ترتیبی که مشخص شده است جستجو می شود
در خط فرمان اگر یک نماد در آن آرشیو برای حل یک نام تعریف نشده مورد نیاز است
نمادی که توسط یک شی در بایگانی که بعداً در خط فرمان ظاهر می شود، ارجاع داده می شود.
پیوند دهنده نمی تواند آن مرجع را حل کند. با گروه بندی آرشیوها،
همه آنها به طور مکرر جستجو می شوند تا زمانی که همه مراجع ممکن حل و فصل شوند.
استفاده از این گزینه هزینه عملکرد قابل توجهی دارد. بهتر است فقط زمانی از آن استفاده کنید
ارجاعات دایره ای اجتناب ناپذیری بین دو یا چند آرشیو وجود دارد.
--accept-unknown-input-arch
--no-accept-unknown-input-arch
به پیونددهنده میگوید فایلهای ورودی را بپذیرد که معماری آنها قابل تشخیص نیست. در
فرض بر این است که کاربر می داند چه کاری انجام می دهد و عمداً می خواهد پیوند دهد
در این فایل های ورودی ناشناخته این رفتار پیشفرض پیوند دهنده قبلاً بود
انتشار 2.14. رفتار پیش فرض از نسخه 2.14 به بعد رد چنین ورودی است
فایل ها و غیره --accept-unknown-input-arch گزینه ای برای بازگردانی قدیمی اضافه شده است
رفتار - اخلاق.
--به عنوان مورد نیاز
--بدون نیاز
این گزینه بر برچسب های ELF DT_NEEDED برای کتابخانه های پویا ذکر شده در دستور تأثیر می گذارد
خط بعد از --به عنوان مورد نیاز گزینه. به طور معمول پیوند دهنده یک تگ DT_NEEDED برای اضافه می کند
هر کتابخانه پویا ذکر شده در خط فرمان، صرف نظر از اینکه آیا کتابخانه
واقعا مورد نیاز است یا نه --به عنوان مورد نیاز باعث می شود یک تگ DT_NEEDED فقط برای آن منتشر شود
کتابخانه ای که یک مرجع نماد تعریف نشده از یک فایل شی معمولی را برآورده می کند یا
اگر کتابخانه در لیست های DT_NEEDED سایر کتابخانه های مرتبط به آن یافت نشد
آن نقطه، یک مرجع نماد تعریف نشده از یک کتابخانه پویا دیگر.
--بدون نیاز رفتار پیش فرض را بازیابی می کند.
--افزودن لازم است
--بدون نیاز به افزودن
این دو گزینه به دلیل شباهت نام آنها به گزینه منسوخ شده است
--به عنوان مورد نیاز و --بدون نیاز گزینه ها. آنها جایگزین شده اند
--copy-dt-needed-entries و --no-copy-dt-needed-entries.
-اصرار کلمه کلیدی
این گزینه برای سازگاری SunOS نادیده گرفته می شود.
-بی دینامیک
-دی
-call_shared
پیوند در برابر کتابخانه های پویا. این فقط در سیستم عامل هایی که برای آنها به اشتراک گذاشته شده است معنی دار است
کتابخانه ها پشتیبانی می شوند. این گزینه معمولاً در چنین پلتفرم هایی پیش فرض است. در
انواع مختلف این گزینه برای سازگاری با سیستم های مختلف است. شما ممکن است
از این گزینه چندین بار در خط فرمان استفاده کنید: بر جستجوی کتابخانه تأثیر می گذارد
-l گزینه هایی که از آن پیروی می کنند.
-بگروه
پرچم "DF_1_GROUP" را در ورودی "DT_FLAGS_1" در بخش پویا تنظیم کنید. این
باعث می شود که لینکر زمان اجرا جستجوها در این شی و وابستگی های آن را مدیریت کند
فقط در داخل گروه اجرا می شود. --unresolved-symbols=گزارش همه ضمنی است. این
این گزینه فقط در پلتفرم های ELF که از کتابخانه های مشترک پشتیبانی می کنند معنادار است.
-Bstatic
-dn
-non_shared
-استاتیک
در مقابل کتابخانه های مشترک پیوند ندهید. این فقط در پلتفرم هایی که برای آنها معنادار است
کتابخانه های مشترک پشتیبانی می شوند. انواع مختلف این گزینه برای
سازگاری با سیستم های مختلف شما می توانید از این گزینه چندین بار در صفحه استفاده کنید
خط فرمان: بر جستجوی کتابخانه تأثیر می گذارد -l گزینه هایی که از آن پیروی می کنند. این
گزینه نیز دلالت دارد --unresolved-symbols=گزارش همه. این گزینه را می توان با
-به اشتراک گذاشته شده. انجام این کار به این معنی است که یک کتابخانه مشترک در حال ایجاد است اما همه اینها
ارجاعات خارجی کتابخانه باید با کشیدن ورودی ها از استاتیک حل شود
کتابخانه ها
-نمادین
هنگام ایجاد یک کتابخانه مشترک، ارجاع به نمادهای جهانی را به تعریف متصل کنید
در کتابخانه مشترک، در صورت وجود. به طور معمول، برای یک برنامه لینک شده امکان پذیر است
در برابر یک کتابخانه مشترک برای لغو تعریف در کتابخانه مشترک. این
این گزینه فقط در پلتفرم های ELF که از کتابخانه های مشترک پشتیبانی می کنند معنادار است.
توابع نمادین
هنگام ایجاد یک کتابخانه مشترک، ارجاعات به نمادهای تابع سراسری را به آن متصل کنید
تعریف در کتابخانه مشترک، در صورت وجود. این گزینه فقط در ELF معنی دارد
پلتفرم هایی که از کتابخانه های مشترک پشتیبانی می کنند.
--dynamic-list=dynamic-list-file
نام یک فایل لیست پویا را به پیوند دهنده مشخص کنید. این معمولا زمانی استفاده می شود که
ایجاد کتابخانه های مشترک برای تعیین لیستی از نمادهای جهانی که مراجع آنها
نباید به تعریف موجود در کتابخانه مشترک یا ایجاد محدود شود
فایل های اجرایی مرتبط به صورت پویا برای تعیین لیستی از نمادها که باید به آن ها اضافه شود
جدول نمادها در فایل اجرایی این گزینه فقط در پلتفرم های ELF معنی دارد
که از کتابخانه های مشترک پشتیبانی می کنند.
قالب لیست پویا مانند گره نسخه بدون محدوده و گره است
نام. دیدن نسخه برای اطلاعات بیشتر.
--dynamic-list-data
همه نمادهای داده های جهانی را به لیست پویا اضافه کنید.
--dynamic-list-cpp-new
لیست پویا داخلی را برای اپراتور C++ new ارائه و حذف کنید. عمدتا مفید است
برای ساختن libstdc++ مشترک.
--dynamic-list-cpp-typeinfo
لیست پویا داخلی را برای شناسایی نوع زمان اجرا C++ ارائه دهید.
--بررسی بخش ها
--بدون بررسی بخش
از لینک دهنده می پرسد نه برای بررسی آدرسهای بخش پس از اختصاص یافتن به آنها
هر گونه همپوشانی وجود دارد به طور معمول پیوند دهنده این بررسی را انجام می دهد، و اگر پیدا کند
هر گونه همپوشانی باعث ایجاد پیام های خطای مناسب می شود. پیوند دهنده در مورد و می داند
برای بخشها در روکشها هزینههایی در نظر میگیرد. رفتار پیش فرض قابل بازیابی است
با استفاده از سوئیچ خط فرمان --بررسی بخش ها. همپوشانی بخش معمولاً وجود ندارد
برای پیوندهای قابل جابجایی بررسی شد. با استفاده از
--بررسی بخش ها گزینه.
--copy-dt-needed-entries
--no-copy-dt-needed-entries
این گزینه بر درمان کتابخانههای پویا که توسط تگهای DT_NEEDED ارجاع شدهاند، تأثیر میگذارد
داخل کتابخانه های پویا ELF ذکر شده در خط فرمان. به طور معمول لینک دهنده خواهد شد
برای هر کتابخانه ذکر شده در تگ DT_NEEDED یک تگ DT_NEEDED به باینری خروجی اضافه کنید
در یک کتابخانه دینامیک ورودی با --no-copy-dt-needed-entries مشخص شده در
خط فرمان با این حال، هر کتابخانه پویایی که از آن پیروی می کند، DT_NEEDED خود را خواهد داشت
ورودی ها نادیده گرفته شدند رفتار پیش فرض را می توان با بازیابی کرد --copy-dt-needed-entries.
این گزینه روی وضوح نمادها در کتابخانه های پویا نیز تاثیر دارد.
با تنظیم پیش فرض کتابخانه های پویا ذکر شده در خط فرمان خواهد بود
به صورت بازگشتی، به دنبال برچسبهای DT_NEEDED آنها به کتابخانههای دیگر، به منظور جستجو
نمادهای مورد نیاز باینری خروجی را حل کنید. با --no-copy-dt-needed-entries
مشخص شده است، اما جستجوی کتابخانه های پویا که به دنبال آن هستند، با عبارت متوقف می شود
خود کتابخانه پویا هیچ پیوند DT_NEEDED برای حل نمادها عبور نخواهد کرد.
--کرف
خروجی جدول مرجع متقاطع اگر یک فایل نقشه پیوند دهنده در حال تولید است، متقاطع
جدول مرجع در فایل نقشه چاپ می شود. در غیر این صورت روی استاندارد چاپ می شود
خروجی.
قالب جدول عمدا ساده است، به طوری که ممکن است به راحتی توسط آن پردازش شود
در صورت لزوم یک اسکریپت نمادها چاپ شده و بر اساس نام مرتب شده اند. برای هر نماد،
لیستی از نام فایل ها داده شده است. اگر نماد تعریف شده باشد، اولین فایل لیست شده همان است
محل تعریف فایل های باقی مانده حاوی ارجاع به نماد هستند.
--بدون-تعریف-مشترک
این گزینه از تخصیص آدرس ها به نمادهای رایج جلوگیری می کند. فیلمنامه
فرمان "INHIBIT_COMMON_ALLOCATION" همین اثر را دارد.
La --بدون-تعریف-مشترک این گزینه اجازه می دهد تا تصمیم برای تخصیص آدرس به آن جدا شود
نمادهای رایج از انتخاب نوع فایل خروجی. در غیر این صورت غیر قابل جابجایی
نوع خروجی باعث تخصیص آدرس به نمادهای مشترک می شود. استفاده كردن --بدون-تعریف-مشترک
اجازه می دهد تا نمادهای مشترکی که از یک کتابخانه مشترک به آنها ارجاع داده می شود اختصاص داده شوند
آدرس ها فقط در برنامه اصلی این باعث حذف فضای تکراری استفاده نشده در می شود
کتابخانه مشترک، و همچنین از هرگونه سردرگمی احتمالی در مورد رفع اشتباه جلوگیری می کند
زمانی که تعداد زیادی ماژول پویا با مسیرهای جستجوی تخصصی برای آنها وجود دارد، تکرار کنید
وضوح نماد زمان اجرا
--defsym=نماد=بیان
یک نماد سراسری در فایل خروجی ایجاد کنید که حاوی آدرس مطلق داده شده توسط
بیان. می توانید از این گزینه هر چند بار که لازم است برای تعریف چندگانه استفاده کنید
نمادها در خط فرمان شکل محدودی از محاسبات برای
بیان در این زمینه: می توانید یک ثابت هگزادسیمال یا نام یک را بدهید
نماد موجود، یا از "+" و "-" برای اضافه یا تفریق ثابت های هگزا دسیمال یا استفاده کنید
نمادها اگر به عبارات دقیق تری نیاز دارید، از دستور linker استفاده کنید
زبان از یک خط توجه داشته باشید: هیچ فضای سفیدی بین آنها وجود ندارد نماداز
علامت مساوی ("=") ، و بیان.
--demangle[=سبک]
-- بدون درهم ریختن
این گزینه ها کنترل می کنند که آیا نام نمادها در پیام های خطا و موارد دیگر جدا شود
خروجی وقتی به پیوند دهنده گفته می شود که جدا شود، سعی می کند نام نمادها را در a ارائه کند
مد قابل خواندن: اگر زیرخط های پیشرو توسط فایل شی مورد استفاده قرار گیرند، حذف می شود
فرمت، و نام نمادهای مخدوش شده C++ را به نام های قابل خواندن توسط کاربر تبدیل می کند. ناهمسان
کامپایلرها سبکهای مانگلینگ متفاوتی دارند. آرگومان سبک جداسازی اختیاری می تواند
برای انتخاب یک سبک جداسازی مناسب برای کامپایلر خود استفاده شود. پیوند دهنده خواهد شد
جداسازی به طور پیش فرض مگر اینکه متغیر محیطی باشد COLLECT_NO_DEMANGLE تنظیم شده است. اینها
ممکن است از گزینه ها برای لغو پیش فرض استفاده شود.
-Iپرونده
--dynamic-linker=پرونده
نام پیوند دهنده پویا را تنظیم کنید. این فقط در هنگام تولید معنادار است
فایل های اجرایی ELF متصل به صورت پویا پیوند دهنده پویا پیش فرض معمولا درست است.
از این استفاده نکنید مگر اینکه بدانید در حال انجام چه کاری هستید.
- هشدارهای کشنده
--بدون هشدارهای کشنده
همه هشدارها را به عنوان خطا در نظر بگیرید. رفتار پیش فرض را می توان با این گزینه بازیابی کرد
--بدون هشدارهای کشنده.
--force-exe-پسوند
مطمئن شوید که یک فایل خروجی دارای پسوند exe است.
اگر یک فایل خروجی کاملاً پیوند شده با موفقیت ساخته شده است "exe." یا ".dll" نداشته باشد.
پسوند، این گزینه پیوند دهنده را مجبور می کند تا فایل خروجی را به یکی از همین نام ها کپی کند
با پسوند ".exe". این گزینه زمانی مفید است که از فایل های اصلاح نشده یونیکس بر روی a استفاده کنید
میزبان مایکروسافت ویندوز، زیرا برخی از نسخههای ویندوز تصویری را اجرا نمیکنند مگر اینکه آن را اجرا کنند
به پسوند ".exe" ختم می شود.
--gc-sections
--no-gc-sections
جمع آوری زباله از بخش های ورودی استفاده نشده را فعال کنید. در اهدافی که انجام می دهند نادیده گرفته می شود
این گزینه را پشتیبانی نمی کند رفتار پیشفرض (عدم اجرای این زباله
مجموعه) را می توان با مشخص کردن بازیابی کرد --no-gc-sections در خط فرمان
--gc-sections تصمیم می گیرد که کدام بخش های ورودی با بررسی نمادها و
جابجایی ها بخش حاوی نماد ورودی و تمام بخش های حاوی
نمادهای تعریف نشده در خط فرمان و همچنین بخشهایی که شامل میشوند، حفظ خواهند شد
نمادهای ارجاع شده توسط اشیاء پویا توجه داشته باشید که هنگام ساخت کتابخانه های مشترک،
پیوند دهنده باید فرض کند که هر نماد قابل مشاهده ای ارجاع داده شده است. هنگامی که این مجموعه اولیه از
بخش ها مشخص شده است، پیوند دهنده به صورت بازگشتی هر بخش را به عنوان استفاده شده علامت گذاری می کند
با جابجایی آنها اشاره شده است. دیدن -- ورود و -- تعریف نشده.
این گزینه را می توان هنگام انجام یک پیوند جزئی تنظیم کرد (فعال با گزینه -r) در این
در صورتي كه ريشه نمادهاي نگهداري شده بايد صريحاً توسط a مشخص شود -- ورود or
-- تعریف نشده گزینه یا با دستور "ENTRY" در اسکریپت پیوند دهنده.
--print-gc-sections
--no-print-gc-sections
لیست تمام بخش های حذف شده توسط جمع آوری زباله. لیست در stderr چاپ شده است.
این گزینه فقط در صورتی موثر است که جمع آوری زباله از طریق فعال باشد
--gc-sections) گزینه. رفتار پیشفرض (از فهرست نشدن بخشهایی که هستند
حذف) را می توان با مشخص کردن بازیابی کرد --no-print-gc-sections در خط فرمان
--کمک
خلاصه ای از گزینه های خط فرمان را در خروجی استاندارد چاپ کنید و از آن خارج شوید.
--هدف-کمک
خلاصه ای از تمام گزینه های خاص هدف را در خروجی استاندارد چاپ کنید و از آن خارج شوید.
-نقشه=نقشه فایل
یک نقشه پیوند به فایل چاپ کنید نقشه فایل. توضیحات را ببینید -M گزینه، بالا
-حافظه بدون نگه داشتن
ld معمولاً با ذخیره کردن جداول نمادها، سرعت بیش از مصرف حافظه را بهینه می کند
فایل های ورودی در حافظه این گزینه می گوید ld به جای بهینه سازی برای استفاده از حافظه، توسط
در صورت لزوم جداول نمادها را دوباره بخوانید. این ممکن است مورد نیاز باشد اگر ld تمام می شود
فضای حافظه در حالی که یک فایل اجرایی بزرگ را پیوند می دهد.
--بدون تعریف نشده
-z دفاع می کند
ارجاعات نماد حل نشده را از فایل های شی معمولی گزارش کنید. این کار حتی اگر انجام شود
پیوند دهنده در حال ایجاد یک کتابخانه مشترک غیر نمادین است. سوئیچ
--[no-]allow-shlib-undefined رفتار را برای گزارش حل نشده کنترل می کند
ارجاعات یافت شده در کتابخانه های مشترک در حال پیوند هستند.
--allow-multiple-definition
-z مولدف
معمولاً وقتی یک نماد چندین بار تعریف می شود، پیوند دهنده یک فاجعه را گزارش می دهد
خطا این گزینه ها تعاریف متعددی را امکان پذیر می کنند و از اولین تعریف استفاده می شود.
--allow-shlib-undefined
--no-allow-shlib-undefined
نمادهای تعریف نشده را در کتابخانه های مشترک مجاز یا غیرمجاز می کند. این سوئیچ مشابه است
--بدون تعریف نشده به جز اینکه وقتی نمادهای تعریف نشده هستند رفتار را تعیین می کند
در یک کتابخانه مشترک به جای یک فایل شی معمولی. تاثیری در چگونگی آن ندارد
نمادهای تعریف نشده در فایل های شی معمولی مدیریت می شوند.
رفتار پیش فرض این است که خطاها را برای هر نماد تعریف نشده ای که در آن ارجاع داده شده است گزارش کنید
اگر از پیوند دهنده برای ایجاد یک فایل اجرایی استفاده می شود، اما برای اجازه دادن، کتابخانه های به اشتراک گذاشته شده است
اگر از پیوند دهنده برای ایجاد یک کتابخانه مشترک استفاده شود.
دلایل مجاز بودن ارجاع نمادهای تعریف نشده در کتابخانه های مشترک مشخص شده در
زمان پیوند عبارتند از:
· یک کتابخانه مشترک مشخص شده در زمان پیوند ممکن است با کتابخانه ای که هست یکسان نباشد
در زمان بارگذاری موجود است، بنابراین نماد ممکن است در زمان بارگذاری قابل حل باشد.
· برخی از سیستم عامل ها، به عنوان مثال BeOS و HPPA، که نمادهای تعریف نشده در آنها وجود دارد
کتابخانه های مشترک عادی هستند.
برای مثال، هسته BeOS کتابخانههای مشترک را در زمان بارگذاری وصله میکند تا انتخاب شود
هر تابعی که برای معماری فعلی مناسبتر است. این هست
برای مثال برای انتخاب پویا یک تابع memset مناسب استفاده می شود.
-نسخه بدون تعریف نشده
معمولاً وقتی نماد دارای نسخه تعریف نشده باشد، پیوند دهنده آن را نادیده می گیرد. این
گزینه نمادهای با نسخه تعریف نشده را غیرمجاز می کند و یک خطای کشنده صادر می شود
به جای آن.
--پیش فرض-symver
برای نمادهای صادرشده بدون نسخه، یک نسخه نماد پیشفرض (Soname) ایجاد و استفاده کنید.
--پیش فرض-وارداتی-سیمور
برای نمادهای وارد شده بدون نسخه، یک نسخه نماد پیشفرض (Soname) ایجاد و استفاده کنید.
--بدون هشدار-عدم تطابق
به طور معمول ld اگر بخواهید فایل های ورودی را به هم پیوند دهید، خطا می دهد
به دلایلی با هم تطابق ندارند، شاید به این دلیل که برای موارد مختلف گردآوری شده اند
پردازنده ها یا برای endianness های مختلف. این گزینه می گوید ld که باید
بی سر و صدا اجازه چنین خطاهای احتمالی را بدهید. این گزینه فقط باید با دقت استفاده شود، در
مواردی که شما اقدامات خاصی انجام داده اید که اطمینان حاصل می کند که خطاهای پیوند دهنده وجود دارد
نامناسب است.
--بدون هشدار-جستجو-عدم تطابق
به طور معمول ld اگر در طول یک کتابخانه کتابخانه ناسازگاری پیدا کند، هشدار می دهد
جستجو کردن. این گزینه اخطار را خاموش می کند.
--بدون کل آرشیو
افکت را خاموش کنید --کل-بایگانی گزینه ای برای فایل های آرشیو بعدی
--noinhibit-exec
فایل خروجی اجرایی را هر زمان که هنوز قابل استفاده است، نگه دارید. به طور معمول، پیوند دهنده
اگر در طول فرآیند پیوند با خطا مواجه شود، فایل خروجی تولید نمی کند. آی تی
بدون نوشتن یک فایل خروجی زمانی که هر گونه خطایی صادر می کند خارج می شود.
-nostdlib
فقط دایرکتوری های کتابخانه را جستجو کنید که به صراحت در خط فرمان مشخص شده است. کتابخانه
دایرکتوری های مشخص شده در اسکریپت های پیوند دهنده (از جمله اسکریپت های پیوند دهنده مشخص شده در
خط فرمان) نادیده گرفته می شوند.
--oformat=فرمت خروجی
ld ممکن است برای پشتیبانی از بیش از یک نوع فایل شی پیکربندی شود. اگر شما ld is
به این ترتیب پیکربندی شده است، می توانید از --oformat گزینه ای برای تعیین فرمت باینری برای
فایل شی خروجی حتی وقتی که ld برای پشتیبانی از شی جایگزین پیکربندی شده است
فرمتها، معمولاً نیازی به مشخص کردن این نیست ld باید برای تولید پیکربندی شود
به عنوان یک فرمت خروجی پیش فرض معمول ترین فرمت در هر دستگاه. فرمت خروجی هست یک
رشته متنی، نام یک قالب خاص که توسط کتابخانه های BFD پشتیبانی می شود. (تو می توانی
لیست فرمت های باینری موجود با ابجدمپ -i.) دستور اسکریپت
"OUTPUT_FORMAT" همچنین می تواند قالب خروجی را مشخص کند، اما این گزینه آن را لغو می کند.
- پای
--pic-executable
یک موقعیت اجرایی مستقل ایجاد کنید. این در حال حاضر فقط در ELF پشتیبانی می شود
بستر، زمینه. فایل های اجرایی مستقل از موقعیت مشابه کتابخانه های مشترک هستند
آنها توسط پیوند دهنده پویا به آدرس مجازی که سیستم عامل برای آن انتخاب می کند منتقل می شود
آنها (که می تواند بین فراخوان ها متفاوت باشد). مانند فایل های اجرایی با پیوند پویا معمولی
آنها را می توان اجرا کرد و نمادهای تعریف شده در فایل اجرایی نمی توانند توسط آنها لغو شوند
کتابخانه های مشترک
-qmagic
این گزینه برای سازگاری با لینوکس نادیده گرفته می شود.
-کی این گزینه برای سازگاری SVR4 نادیده گرفته می شود.
--آروم باش
-- بدون آرامش
گزینه ای با افکت های وابسته به ماشین. این گزینه فقط در چند مورد پشتیبانی می شود
اهداف.
در برخی از سیستم عامل ها --آروم باش گزینه بهینه سازی های جهانی و خاص هدف را انجام می دهد
که زمانی امکان پذیر می شود که پیوند دهنده آدرس دهی را در برنامه حل کند، مانند
حالتهای آدرس راحت، ترکیب دستورالعملهای جدید، انتخاب نسخه کوتاهتر
دستورالعمل های جاری و ترکیب مقادیر ثابت.
در برخی از پلتفرمها، این بهینهسازیهای جهانی زمان پیوند ممکن است اشکالزدایی نمادین را ایجاد کنند
در نتیجه اجرایی غیر ممکن است. این امر در مورد ماتسوشیتا شناخته شده است
خانواده پردازنده های MN10200 و MN10300.
در پلتفرم هایی که این پشتیبانی نمی شود، --آروم باش پذیرفته می شود، اما نادیده گرفته می شود.
روی سکوهایی که در آن --آروم باش گزینه پذیرفته شده است -- بدون آرامش می توان برای غیر فعال کردن استفاده کرد
ویژگی
--retain-symbols-file=نام فایل
حفظ فقط نمادهای لیست شده در فایل نام فایل، همه چیزهای دیگر را دور می اندازد. نام فایل
به سادگی یک فایل مسطح، با یک نام نماد در هر خط است. این گزینه به ویژه است
در محیط هایی (مانند VxWorks) که در آن یک جدول نماد جهانی بزرگ وجود دارد، مفید است
انباشته شده به تدریج، برای حفظ حافظه زمان اجرا.
--retain-symbols-file میکند نه نمادهای تعریف نشده یا نمادهای مورد نیاز را دور بریزید
جابجایی ها
شما فقط می توانید مشخص کنید --retain-symbols-file یک بار در خط فرمان نادیده می گیرد -s
و -S.
-rpath=دیر
یک دایرکتوری به مسیر جستجوی کتابخانه زمان اجرا اضافه کنید. این در هنگام پیوند دادن یک ELF استفاده می شود
قابل اجرا با اشیاء مشترک همه -rpath آرگومان ها به هم پیوسته و به آن منتقل می شوند
پیوند دهنده زمان اجرا، که از آنها برای مکان یابی اشیاء مشترک در زمان اجرا استفاده می کند. را -rpath
این گزینه همچنین برای مکان یابی اشیاء مشترک مورد نیاز اشیاء مشترک استفاده می شود
به صراحت در پیوند گنجانده شده است. توضیحات را ببینید -rpath-link گزینه. اگر
-rpath هنگام پیوند دادن یک فایل اجرایی ELF، محتویات محیط استفاده نمی شود
متغیر "LD_RUN_PATH" در صورت تعریف استفاده خواهد شد.
La -rpath گزینه ممکن است در SunOS نیز استفاده شود. به طور پیشفرض، در SunOS، پیوند دهنده این کار را انجام میدهد
یک پچ جستجوی زمان اجرا از همه موارد تشکیل دهید -L گزینه های آن داده شده است. اگر یک -rpath انتخاب
استفاده می شود، مسیر جستجوی زمان اجرا منحصرا با استفاده از -rpath گزینه ها،
نادیده گرفتن -L گزینه ها. این می تواند هنگام استفاده از gcc مفید باشد، که بسیاری را اضافه می کند -L
گزینه هایی که ممکن است در سیستم های فایل نصب شده NFS باشند.
برای سازگاری با سایر پیوند دهنده های ELF، اگر -R گزینه توسط یک دایرکتوری دنبال می شود
نام، به جای یک نام فایل، به عنوان تلقی می شود -rpath گزینه.
-rpath-link=دیر
هنگام استفاده از ELF یا SunOS، یک کتابخانه مشترک ممکن است به کتابخانه دیگری نیاز داشته باشد. این زمانی اتفاق می افتد که یک
پیوند "ld -shared" شامل یک کتابخانه مشترک به عنوان یکی از فایل های ورودی است.
هنگامی که پیوند دهنده هنگام انجام یک کار غیر اشتراکی و غیرقابل جابجایی با چنین وابستگی مواجه می شود
پیوند، به طور خودکار سعی می کند کتابخانه مشترک مورد نیاز را پیدا کرده و آن را شامل شود
در لینک، اگر به صراحت درج نشده باشد. در چنین حالتی، -rpath-link انتخاب
اولین مجموعه دایرکتوری ها را برای جستجو مشخص می کند. در -rpath-link گزینه ممکن است مشخص کند
دنباله ای از نام های دایرکتوری یا با تعیین لیستی از نام های جدا شده توسط
کولون، یا با ظاهر شدن چندین بار.
این گزینه باید با احتیاط مورد استفاده قرار گیرد زیرا مسیر جستجوی احتمالی را نادیده می گیرد
به سختی در یک کتابخانه مشترک کامپایل شده است. در چنین شرایطی امکان استفاده وجود دارد
به طور ناخواسته یک مسیر جستجو متفاوت از پیوند دهنده زمان اجرا انجام می شود.
پیوند دهنده از مسیرهای جستجوی زیر برای یافتن کتابخانه های مشترک مورد نیاز استفاده می کند:
1. هر دایرکتوری مشخص شده توسط -rpath-link گزینه.
2. هر دایرکتوری مشخص شده توسط -rpath گزینه ها. تفاوت میان -rpath و
-rpath-link این است که دایرکتوری ها توسط -rpath گزینه ها در
قابل اجرا و استفاده در زمان اجرا، در حالی که -rpath-link گزینه فقط موثر است
در زمان پیوند جستجوکردن -rpath در این روش فقط توسط لینکرهای بومی و پشتیبانی می شود
اتصال دهنده های متقابل که با پیکربندی شده اند --with-sysroot گزینه.
3. در یک سیستم ELF، برای پیوند دهنده های بومی، اگر -rpath و -rpath-link گزینه ها بودند
استفاده نشده است، محتویات متغیر محیطی "LD_RUN_PATH" را جستجو کنید.
4. در SunOS، اگر -rpath گزینه استفاده نشد، هر دایرکتوری مشخص شده را جستجو کنید
با استفاده از -L گزینه.
5. برای پیوند دهنده بومی، محتویات متغیر محیط را جستجو کنید
"LD_LIBRARY_PATH".
6. برای پیوند دهنده بومی ELF، دایرکتوری های موجود در "DT_RUNPATH" یا "DT_RPATH" یک اشتراک گذاری شده
کتابخانه برای کتابخانه های مشترک مورد نیاز آن جستجو می شود. ورودی های "DT_RPATH" هستند
در صورت وجود ورودی های "DT_RUNPATH" نادیده گرفته می شود.
7. دایرکتوری های پیش فرض، به طور معمول / lib و / usr / معاونت.
8. برای یک پیوند دهنده بومی در یک سیستم ELF، اگر فایل /etc/ld.so.conf وجود دارد، فهرست
دایرکتوری های موجود در آن فایل
اگر کتابخانه مشترک مورد نیاز پیدا نشد، پیوند دهنده یک هشدار و
با لینک ادامه دهید
-به اشتراک گذاشته شده
-قابل اشتراک گذاری
یک کتابخانه مشترک ایجاد کنید. این در حال حاضر فقط در ELF، XCOFF و SunOS پشتیبانی میشود
بستر، زمینه. در SunOS، پیوند دهنده به طور خودکار یک کتابخانه مشترک ایجاد می کند -e
گزینه استفاده نمی شود و نمادهای تعریف نشده ای در پیوند وجود دارد.
--مرتب کردن-مشترک
--sort-common=صعودی
--sort-common=نزولی
این گزینه می گوید ld برای مرتب کردن نمادهای رایج بر اساس تراز صعودی یا
ترتیب نزولی زمانی که آنها را در بخش های خروجی مناسب قرار می دهد. نشانه
ترازهای در نظر گرفته شده شانزده بایت یا بزرگتر، هشت بایت، چهار بایت، دو بایت و
یک بایتی این برای جلوگیری از شکاف بین نمادها به دلیل محدودیت های تراز است. اگر نه
ترتیب مرتب سازی مشخص می شود، سپس ترتیب نزولی در نظر گرفته می شود.
--sort-section=نام
این گزینه "SORT_BY_NAME" را برای همه الگوهای بخش عام در پیوند دهنده اعمال می کند
اسکریپت
--sort-section=تراز کردن
این گزینه "SORT_BY_ALIGNMENT" را برای همه الگوهای بخش عام در قسمت اعمال می کند
اسکریپت پیوند دهنده
-- تقسیم بر فایل[=اندازه]
مشابه -- تقسیم با تغییر مکان اما زمانی که برای هر فایل ورودی یک بخش خروجی جدید ایجاد می کند
اندازه رسیده است اندازه در صورت عدم ارائه به اندازه پیش فرض 1 است.
--تقسیم-با-reloc[=تعداد دفعات مشاهده]
سعی می کند بخش های اضافی در فایل خروجی ایجاد کند تا هیچ بخش خروجی واحدی وارد نشود
فایل شامل بیش از تعداد دفعات مشاهده جابجایی ها این در هنگام تولید عظیم مفید است
فایل های قابل جابجایی برای دانلود در هسته های زمان واقعی خاص با شی COFF
فرمت فایل؛ زیرا COFF نمی تواند بیش از 65535 جابجایی را در یک واحد نشان دهد
بخش. توجه داشته باشید که این با فرمت های فایل شی که این کار را نمی کنند کار نمی کند
پشتیبانی از بخش های دلخواه پیوند دهنده بخش های ورودی جداگانه را تقسیم نمی کند
برای توزیع مجدد، بنابراین اگر یک بخش ورودی واحد بیش از تعداد دفعات مشاهده جابجایی ها
یک بخش خروجی حاوی این تعداد جابجایی خواهد بود. تعداد دفعات مشاهده به صورت پیش فرض مقداری از
32768.
--آمار
محاسبه و نمایش آمار مربوط به عملکرد پیوند دهنده، مانند اجرا
استفاده از زمان و حافظه
--sysroot=فهرست راهنما
استفاده کنید فهرست راهنما به عنوان محل sysroot، نادیده گرفتن تنظیمات زمان پیشفرض.
این گزینه فقط توسط پیوند دهنده هایی پشتیبانی می شود که با استفاده از آن پیکربندی شده اند --with-sysroot.
- قالب سنتی
برای برخی از اهداف، خروجی از ld از برخی جهات با خروجی برخی متفاوت است
پیوند دهنده موجود این سوئیچ درخواست می کند ld به جای آن از قالب سنتی استفاده کنید.
به عنوان مثال، در SunOS، ld ورودی های تکراری را در جدول رشته نمادها ترکیب می کند. این
می تواند اندازه یک فایل خروجی را با اطلاعات کامل اشکال زدایی بیش از 30 کاهش دهد
درصد متاسفانه، برنامه SunOS "dbx" نمی تواند برنامه حاصل را بخواند
("gdb" مشکلی ندارد). در - قالب سنتی سوئیچ می گوید ld برای ترکیب نشدن
ورودی های تکراری
--section-start=نام بخش=سازمان
بخشی را در فایل خروجی در آدرس مطلق داده شده توسط سازمان. شما ممکن است استفاده کنید
این گزینه هر چند بار که لازم است برای مکان یابی چندین بخش در دستور لازم است
خط. سازمان باید یک عدد صحیح هگزادسیمال باشد. برای سازگاری با سایر لینکرها،
شما ممکن است پیشرو را حذف کنید 0x معمولاً با مقادیر هگزادسیمال همراه است. توجه داشته باشید: آنجا
نباید بین آنها فضای خالی وجود داشته باشد نام بخش، علامت مساوی ("=") ، و سازمان.
-Tbss=سازمان
-Tdata=سازمان
-متن=سازمان
مثل --بخش-شروع، با ".bss"، ".data" یا ".text" به عنوان نام بخش.
-Ttext-Segment=سازمان
هنگام ایجاد یک شیء اجرایی یا اشتراک گذاری شده ELF، آدرس مورد اول را تنظیم می کند
بایت بخش متن
--unresolved-symbols=روش
نحوه برخورد با نمادهای حل نشده را تعیین کنید. چهار مقدار ممکن برای وجود دارد
روش:
نادیده گرفتن-همه
هیچ نماد حل نشده ای را گزارش نکنید.
گزارش همه
همه نمادهای حل نشده را گزارش کنید. این پیش فرض است.
ignore-in-object-files
نمادهای حل نشده ای را که در کتابخانه های مشترک موجود است گزارش کنید، اما آنها را نادیده بگیرید
اگر از فایل های شی معمولی آمده باشند.
ignore-in-shared-libs
نمادهای حل نشده را گزارش کنید که از فایل های شی معمولی می آیند، اما اگر آنها را نادیده بگیرید
آنها از کتابخانه های مشترک می آیند. این می تواند هنگام ایجاد یک پویا مفید باشد
باینری و مشخص است که تمام کتابخانه های مشترک که باید به آنها ارجاع داده شود
در خط فرمان پیوند دهنده گنجانده شده اند.
رفتار کتابخانههای اشتراکگذاری شده به خودی خود نیز میتواند توسط آن کنترل شود
--[no-]allow-shlib-undefined گزینه.
به طور معمول پیوند دهنده برای هر نماد حل نشده گزارش شده یک پیام خطا ایجاد می کند
اما گزینه --warn-un-solved-symbols می تواند این را به یک هشدار تغییر دهد.
--dll-verbose
-- پرحرف[=عدد]
نمایش شماره نسخه برای ld و شبیه سازی های پیوند دهنده پشتیبانی شده را فهرست کنید. نمایش دادن
کدام فایل های ورودی را می توان و نمی توان باز کرد. نمایش اسکریپت پیوند دهنده در حال استفاده توسط
پیوند دهنده اگر اختیاری است عدد آرگومان > 1، وضعیت نماد افزونه نیز خواهد بود
نمایش داده.
--version-script=نسخه-اسکریپت فایل
نام اسکریپت نسخه را برای پیوند دهنده مشخص کنید. این معمولا زمانی استفاده می شود که
ایجاد کتابخانه های مشترک برای مشخص کردن اطلاعات اضافی در مورد نسخه
سلسله مراتب برای کتابخانه در حال ایجاد این گزینه فقط در ELF به طور کامل پشتیبانی می شود
پلتفرم هایی که از کتابخانه های مشترک پشتیبانی می کنند. دیدن نسخه. این تا حدی پشتیبانی می شود
پلتفرم های پلی اتیلن، که می توانند از اسکریپت های نسخه برای فیلتر نمودن نمادها در صادرات خودکار استفاده کنند
حالت: هر نماد علامت گذاری شده است محلی در اسکریپت نسخه صادر نخواهد شد.
-- هشدار - مشترک
هنگامی که یک نماد مشترک با یک نماد مشترک دیگر یا با یک نماد ترکیب می شود هشدار دهید
تعریف. لینککنندههای یونیکس این تمرین تا حدی نامرتب را امکانپذیر میسازند، اما لینککنندهها در برخی
سیستم عامل های دیگر این کار را نمی کنند. این گزینه به شما امکان می دهد مشکلات احتمالی را پیدا کنید
از ترکیب نمادهای جهانی متأسفانه، برخی از کتابخانه های C از این تمرین استفاده می کنند، بنابراین
ممکن است در مورد نمادها در کتابخانه ها و همچنین در برنامه های خود هشدارهایی دریافت کنید.
سه نوع نماد جهانی وجود دارد که در اینجا با مثال های C نشان داده شده است:
INT i = 1;
تعریفی که در بخش داده های اولیه فایل خروجی قرار می گیرد.
بیرونی INT i;
یک مرجع تعریف نشده، که فضا را اختصاص نمی دهد. باید یکی وجود داشته باشد
تعریف یا نماد مشترک برای متغیر در جایی.
INT i;
یک نماد مشترک اگر فقط (یک یا چند) نماد مشترک برای یک متغیر وجود داشته باشد،
در قسمت داده های اولیه فایل خروجی قرار می گیرد. پیوند دهنده ادغام می شود
چند نماد مشترک برای یک متغیر به یک نماد واحد. اگر آنها هستند
در اندازه های مختلف، بزرگترین اندازه را انتخاب می کند. پیوند دهنده یک نماد مشترک را تبدیل می کند
اگر تعریفی از همان متغیر وجود داشته باشد، در یک اعلان قرار گیرد.
La -- هشدار - مشترک گزینه می تواند پنج نوع هشدار ایجاد کند. هر هشدار شامل
یک جفت خط: اولی نمادی را که به تازگی با آن مواجه شده است توصیف می کند و دومی
نماد قبلی را که با همین نام مواجه شده بود توصیف می کند. یکی یا هر دوی این دو
نمادها یک نماد مشترک خواهند بود.
1. تبدیل یک نماد مشترک به یک مرجع، زیرا قبلاً یک تعریف وجود دارد
برای نماد
( ): هشدار: مشترک از ` '
بر اساس تعریف نادیده گرفته شده است
( ): هشدار: در اینجا تعریف شده است
2. تبدیل یک نماد مشترک به یک مرجع، زیرا تعریف بعدی برای
نماد مواجه می شود. این همان مورد قبلی است، با این تفاوت که
نمادها به ترتیب متفاوتی مواجه می شوند.
( ): هشدار: تعریف ` '
مشترک غالب
( ): هشدار: مشترک اینجاست
3. ادغام یک نماد مشترک با یک نماد مشترک هم اندازه قبلی.
( ): هشدار: چندگانه مشترک
از ` '
( ): هشدار: مشترک قبلی اینجاست
4. ادغام یک نماد مشترک با یک نماد مشترک بزرگتر قبلی.
( ): هشدار: مشترک از ` '
نادیده گرفته شده توسط مشترک بزرگتر
( ): هشدار: مشترک بزرگتر اینجاست
5. ادغام یک نماد مشترک با یک نماد مشترک کوچکتر قبلی. این هم همینطور است
مانند مورد قبلی، با این تفاوت که نمادها در حالت متفاوتی مواجه می شوند
سفارش.
( ): هشدار: مشترک از ` '
نادیده گرفتن مشترک کوچکتر
( ): هشدار: مشترک کوچکتر اینجاست
--warn-constructors
در صورت استفاده از سازنده جهانی هشدار دهید. این فقط برای چند فایل شی مفید است
فرمت ها برای فرمت هایی مانند COFF یا ELF، پیوند دهنده نمی تواند استفاده از جهانی را تشخیص دهد
سازندگان
--warn-multiple-gp
در صورت نیاز به چندین مقدار اشاره گر سراسری در فایل خروجی هشدار دهید. این فقط
برای پردازنده های خاصی مانند آلفا معنی دار است. به طور خاص، برخی از پردازنده ها
ثابت های با ارزش بزرگ را در یک بخش خاص قرار دهید. ثبت ویژه (جهانی
اشاره گر) به وسط این بخش اشاره می کند تا بتوان ثابت ها را بارگذاری کرد
به طور موثر از طریق یک حالت آدرس دهی نسبی ثبت پایه. از آنجایی که افست در پایه
حالت نسبی ثبت ثابت و نسبتاً کوچک است (مثلاً 16 بیت)، این امر را محدود می کند
حداکثر اندازه استخر ثابت بنابراین، در برنامه های بزرگ، اغلب لازم است
از چندین مقدار اشاره گر سراسری استفاده کنید تا بتوانید همه موارد ممکن را آدرس دهی کنید
ثابت ها این گزینه باعث می شود که هر زمان که این مورد اتفاق بیفتد اخطار داده شود.
-- هشدار یک بار
فقط یک بار برای هر نماد تعریف نشده هشدار دهید، نه یک بار در هر ماژول که به آن اشاره دارد
آن است.
--warn-section-align
اگر آدرس یک بخش خروجی به دلیل تراز بودن تغییر کرد، هشدار دهید. معمولا،
تراز توسط یک بخش ورودی تنظیم می شود. آدرس فقط در صورتی تغییر می کند
به صراحت مشخص نشده است؛ یعنی اگر دستور "SECTIONS" شروعی را مشخص نکند
آدرس بخش
--warn-shared-textrel
اگر پیوند دهنده یک DT_TEXTREL را به یک شی مشترک اضافه کند، هشدار دهید.
--warn-alternate-em
اگر یک شی دارای کد ماشین ELF جایگزین است، هشدار دهید.
--warn-un-solved-symbols
اگر پیوند دهنده قرار است یک نماد حل نشده را گزارش کند (به گزینه مراجعه کنید
- نمادهای حل نشده) معمولاً یک خطا ایجاد می کند. این گزینه باعث می شود
در عوض یک هشدار ایجاد کنید.
-- error-un-solved-symbols
این رفتار پیشفرض پیوند دهنده در ایجاد خطا در هنگام گزارش را بازیابی میکند
نمادهای حل نشده
--کل-بایگانی
برای هر آرشیو ذکر شده در خط فرمان بعد از --کل-بایگانی گزینه،
هر فایل شی در بایگانی را به جای جستجو در پیوند درج کنید
بایگانی فایل های شی مورد نیاز این معمولاً برای تبدیل یک فایل آرشیو استفاده می شود
در یک کتابخانه مشترک، هر شی را مجبور می کند تا در اشتراک گذاری شده در نتیجه گنجانده شود
کتابخانه این گزینه ممکن است بیش از یک بار استفاده شود.
دو نکته هنگام استفاده از این گزینه از gcc: اول اینکه gcc از این گزینه اطلاعی ندارد،
پس باید استفاده کنید -Wl،-کل-بایگانی. دوم، استفاده را فراموش نکنید
-Wl،-بدون-کل-بایگانی بعد از لیست بایگانی های شما، زیرا gcc لیست خود را اضافه می کند
از آرشیوهای پیوند شما و ممکن است نخواهید این پرچم روی آنها نیز تأثیر بگذارد.
--wrap=نماد
استفاده از تابع wrapper برای نماد. هرگونه اشاره تعریف نشده به نماد حل خواهد شد
پیچیدن_سمبل". هرگونه ارجاع تعریف نشده به "__real_سمبل" حل خواهد شد تا
نماد.
این می تواند برای ارائه یک پوشش برای عملکرد سیستم استفاده شود. عملکرد بسته بندی
باید "__wrap_ نامیده شودسمبل". اگر بخواهد تابع سیستم را فراخوانی کند، باید
با "__واقعی_ تماس بگیریدسمبل".
در اینجا یک مثال بی اهمیت است:
خالی *
__wrap_malloc (اندازه_t c)
{
printf ("malloc با %zu\n نامیده می شود"، c);
بازگشت __real_malloc (c)؛
}
اگر کد دیگری را با این فایل پیوند دهید با استفاده از --بسته بندی کردن از malloc، سپس همه تماس ها به "malloc"
در عوض تابع "__wrap_malloc" را فراخوانی خواهد کرد. تماس با "__real_malloc" در
"__wrap_malloc" تابع واقعی "malloc" را فراخوانی خواهد کرد.
ممکن است بخواهید یک تابع "__real_malloc" نیز ارائه دهید، به طوری که پیوندها بدون آن
--بسته بندی کردن گزینه موفق خواهد شد اگر این کار را انجام می دهید، نباید تعریفی از
"__real_malloc" در همان فایل "__wrap_malloc"؛ اگر این کار را انجام دهید، اسمبلر ممکن است
قبل از اینکه پیوند دهنده فرصتی برای بستن آن به "malloc" داشته باشد، تماس را حل کنید.
--eh-frame-hdr
درخواست ایجاد بخش ".eh_frame_hdr" و سرصفحه بخش ELF "PT_GNU_EH_FRAME".
--enable-new-dtags
--غیرفعال کردن-new-dtags
این لینکر می تواند تگ های پویا جدید را در ELF ایجاد کند. اما سیستم های قدیمی ELF ممکن است اینطور نباشند
آنها را درک کنید اگر مشخص کنید --enable-new-dtags، تگ های پویا ایجاد خواهند شد
به عنوان مورد نیاز. اگر مشخص کنید --غیرفعال کردن-new-dtags، هیچ برچسب پویا جدیدی ایجاد نخواهد شد.
به طور پیش فرض، تگ های پویا جدید ایجاد نمی شوند. توجه داشته باشید که آن گزینه ها فقط هستند
برای سیستم های ELF موجود است.
--hash-size=عدد
اندازه پیشفرض جداول هش پیوند دهنده را روی عدد اول نزدیک به تنظیم کنید عدد.
افزایش این مقدار می تواند مدت زمانی را که پیوند دهنده برای انجام آن نیاز دارد کاهش دهد
وظایف، به قیمت افزایش نیازهای حافظه پیوند دهنده. به همین ترتیب
کاهش این مقدار می تواند نیاز به حافظه را به قیمت کاهش سرعت کاهش دهد.
--hash-style=سبک
نوع جدول(های) هش پیوند دهنده را تنظیم کنید. سبک می تواند برای ELF کلاسیک "sysv" باشد
بخش ".hash"، "gnu" برای سبک جدید گنو بخش ".gnu.hash" یا "هر دو" برای هر دو
ELF کلاسیک ".hash" و سبک جدید گنو ".gnu.hash" جداول هش. پیش فرض "sysv" است.
--کاهش-سربار-حافظه
این گزینه نیاز به حافظه را در زمان اجرا ld کاهش می دهد و این به هزینه پیوند دادن است
سرعت. این برای انتخاب الگوریتم قدیمی O(n^2) برای فایل نقشه پیوند معرفی شد
تولید، به جای الگوریتم جدید O(n) که از حدود 40 درصد حافظه بیشتر استفاده می کند
ذخیره نماد
یکی دیگر از اثرات سوئیچ تنظیم اندازه جدول هش پیش فرض روی 1021 است که
مجدداً حافظه را به قیمت طولانی شدن زمان اجرای پیوند دهنده ذخیره می کند. این کار انجام نمی شود
با این حال اگر - اندازه هش سوئیچ استفاده شده است.
La --کاهش-سربار-حافظه سوئیچ ممکن است برای فعال کردن سایر مبادلات نیز مورد استفاده قرار گیرد
نسخه های آینده پیوند دهنده
--build-id
--build-id=سبک
درخواست ایجاد بخش یادداشت ELF ".note.gnu.build-id". محتویات یادداشت
بیت های منحصر به فردی هستند که این فایل پیوندی را شناسایی می کنند. سبک می تواند "uuid" برای استفاده از 128 تصادفی باشد
بیت ها، "sha1" برای استفاده از هش 160 بیتی SHA1 در بخش های استاندارد محتویات خروجی،
"md5" برای استفاده از هش MD128 5 بیتی بر روی بخش های استاندارد محتویات خروجی، یا
"0xhexstring" برای استفاده از یک رشته بیت انتخاب شده که به عنوان یک عدد زوج هگزادسیمال مشخص شده است
ارقام (کاراکترهای "-" و ":" بین جفت رقم نادیده گرفته می شوند). اگر سبک حذف شده است،
"sha1" استفاده می شود.
سبک های "md5" و "sha1" یک شناسه تولید می کنند که همیشه در an یکسان است
فایل خروجی یکسان است، اما در بین همه فایل های خروجی غیر یکسان منحصر به فرد خواهد بود. این است
در نظر گرفته نشده است که به عنوان جمع کنترلی برای محتویات فایل مقایسه شود. یک فایل پیوندی ممکن است
بعداً توسط ابزارهای دیگر تغییر می کند، اما رشته بیت شناسه ساخت که اصل را مشخص می کند
فایل لینک شده تغییر نمی کند
عبور از "هیچ" برای سبک تنظیمات را از هر گزینه "--build-id" قبلاً غیرفعال می کند
خط فرمان
لینکر PE i386 پشتیبانی می کند -به اشتراک گذاشته شده گزینه ای که باعث می شود خروجی a باشد
کتابخانه پیوندی پویا (DLL) به جای یک فایل اجرایی معمولی. شما باید نام ببرید
خروجی "*.dll" زمانی که از این گزینه استفاده می کنید. علاوه بر این، لینکر به طور کامل پشتیبانی می کند
فایل های استاندارد "*.def" که ممکن است مانند یک شی در خط فرمان لینکر مشخص شوند
فایل (در واقع، باید قبل از آرشیوهایی باشد که نمادها را از آنها صادر می کند تا اطمینان حاصل شود که آنها دریافت می کنند
پیوند داده شده، درست مانند یک فایل شی معمولی).
علاوه بر گزینه های مشترک برای همه اهداف، i386 PE لینکر اضافی پشتیبانی می کند
گزینه های خط فرمان که مخصوص هدف i386 PE هستند. گزینه هایی که مقادیر می گیرند
ممکن است با یک فاصله یا علامت تساوی از مقادیر آنها جدا شود.
--add-stdcall-نام مستعار
در صورت داده شدن، نمادهایی با پسوند stdcall (@nn) همانطور که هست و همچنین با
پسوند stripped. [این گزینه مختص پورت هدفمند i386 PE لینکر است]
--base-file پرونده
استفاده کنید پرونده به عنوان نام فایلی که در آن آدرس های پایه همه فایل ها ذخیره می شود
جابجایی های مورد نیاز برای تولید DLL با dlltool. [این یک PE مخصوص i386 است
گزینه]
--dll
به جای یک فایل اجرایی معمولی یک DLL ایجاد کنید. شما همچنین می توانید استفاده کنید -به اشتراک گذاشته شده یا الف را مشخص کنید
"LIBRARY" در یک فایل ".def" داده شده. [این گزینه مختص i386 PE هدفمند است
پورت پیوند دهنده]
--enable-long-section-names
- غیرفعال کردن نامهای بخش طولانی
انواع PE فرمت شی Coff پسوندی را اضافه می کند که استفاده از آن را مجاز می کند
نام بخش بیش از هشت کاراکتر، حد طبیعی برای Coff. به صورت پیش فرض،
این نامها فقط در فایلهای شی مجاز هستند، زیرا تصاویر اجرایی کاملاً پیوندی مجاز نیستند
جدول رشته Coff مورد نیاز برای پشتیبانی از نام های طولانی تر را حمل کنید. به عنوان یک پسوند گنو،
امکان استفاده از آنها در تصاویر اجرایی نیز وجود دارد یا به (احتمالا
بیهوده!) با استفاده از این دو گزینه، آن را در فایل های شی غیر مجاز نکنید. قابل اجرا
تصاویری که با این نامهای بخش طولانی تولید میشوند، کمی غیر استاندارد هستند و بهعنوان نشان داده میشوند
آنها یک جدول رشته ای را انجام می دهند و ممکن است هنگام بررسی با غیر گنو خروجی گیج کننده ایجاد کنند
ابزارهای آگاه از PE، مانند نمایشگر فایل و دامپر. با این حال، GDB به استفاده از
نام بخش های طولانی PE برای یافتن بخش های اطلاعات اشکال زدایی Dwarf-2 در یک فایل اجرایی
تصویر در زمان اجرا، و بنابراین اگر هیچ گزینه ای در خط فرمان مشخص نشده باشد، ld اراده
فعال کردن نام بخش های طولانی، نادیده گرفتن رفتار پیش فرض و از نظر فنی صحیح،
هنگامی که هنگام پیوند دادن یک تصویر اجرایی، وجود اطلاعات اشکال زدایی را پیدا می کند و
عدم حذف نمادها [این گزینه برای همه پورت های هدفمند PE لینکر معتبر است]
--enable-stdcall-fixup
--disable-stdcall-fixup
اگر پیوند نمادی پیدا کند که نمی تواند آن را حل کند، سعی می کند "فازی" را انجام دهد
پیوند" با جستجوی نماد تعریف شده دیگری که فقط در قالب آن متفاوت است
نام نماد (cdecl در مقابل stdcall) و آن نماد را با پیوند دادن به مسابقه حل می کند.
به عنوان مثال، نماد تعریف نشده "_foo" ممکن است به تابع "_foo@12" پیوند داده شود، یا
نماد تعریف نشده "_bar@16" ممکن است به تابع "_bar" مرتبط باشد. وقتی که
لینکر این کار را انجام می دهد، یک اخطار چاپ می کند، زیرا معمولاً باید پیوند داده نمی شد،
اما گاهی اوقات کتابخانه های وارداتی تولید شده از dll های شخص ثالث ممکن است به این ویژگی نیاز داشته باشند
قابل استفاده بودن اگر مشخص کنید --enable-stdcall-fixup، این ویژگی به طور کامل فعال است
و هشدارها چاپ نمی شوند. اگر مشخص کنید --disable-stdcall-fixup، این ویژگی است
غیرفعال شده و این گونه عدم تطابق ها به عنوان خطا در نظر گرفته می شود. [این گزینه مختص به
پورت هدفمند i386 PE پیوند دهنده]
--پیشرو-تاکید
--------------------------
برای اکثر اهداف پیشوند نماد پیش فرض یک خط زیر است و در هدف تعریف می شود
شرح. با این گزینه می توان زیرخط پیش فرض را غیرفعال/فعال کرد
نماد-پیشوند
--صادرات همه نمادها
اگر داده شود، تمام نمادهای سراسری در اشیاء مورد استفاده برای ساختن یک DLL توسط صادر می شود
DLL توجه داشته باشید که اگر در غیر این صورت هیچ صادراتی وجود ندارد، این پیشفرض است
نمادها وقتی نمادها به طور صریح از طریق فایل های DEF صادر می شوند یا به طور ضمنی صادر می شوند
از طریق ویژگی های تابع، پیش فرض این است که هیچ چیز دیگری صادر نشود مگر اینکه این گزینه باشد
داده شده است. توجه داشته باشید که نمادهای "DllMain@12"، "DllEntryPoint@0"،
"DllMainCRTStartup@12" و "impure_ptr" به طور خودکار صادر نمی شوند. همچنین،
نمادهای وارد شده از سایر DLL ها مجددا صادر نمی شوند، همچنین نمادهای مشخص کننده نیز مجددا صادر نمی شوند
طرحبندی داخلی DLL مانند آنهایی که با "_head_" شروع میشوند یا با آن ختم میشوند
"_iname". علاوه بر این، هیچ نمادی از "libgcc"، "libstd++"، "libmingw32"، یا
"crtX.o" صادر خواهد شد. نمادهایی که نام آنها با "__rtti_" یا "__builtin_" شروع می شود
برای کمک به DLL های C++ صادر نمی شود. در نهایت، لیست گسترده ای از وجود دارد
نمادهای cygwin-private که صادر نمی شوند (بدیهی است که این مورد در هنگام ساخت اعمال می شود
DLL برای اهداف cygwin). این cygwin-excludes عبارتند از: "_cygwin_dll_entry@12"،
"_cygwin_crt0_common@8"، "_cygwin_noncygwin_dll_entry@12"، "_fmode"، "_impure_ptr"،
"cygwin_attach_dll"، "cygwin_premain0"، "cygwin_premain1"، "cygwin_premain2"،
"cygwin_premain3"، و "environ". [این گزینه مختص i386 PE هدفمند است
پورت پیوند دهنده]
-- استثناء-نمادها نماد,نماد، ...
فهرستی از نمادها را مشخص می کند که نباید به طور خودکار صادر شوند. نشانه
نام ها ممکن است با کاما یا دو نقطه مشخص شوند. [این گزینه مخصوص i386 PE است
پورت هدف پیوند دهنده]
-- حذف-همه-نمادها
مشخص می کند که هیچ نمادی نباید به طور خودکار صادر شود. [این گزینه مختص به
پورت هدفمند i386 PE پیوند دهنده]
---تراز کردن فایل
تراز فایل را مشخص کنید. بخشهای موجود در فایل همیشه با آفست فایل شروع میشوند
که مضرب این عدد هستند. این به طور پیش فرض 512 است. [این گزینه خاص است
به پورت هدفمند i386 PE پیوند دهنده]
--پشته ذخیره
--پشته ذخیره,مرتکب شدن
تعداد بایتهای حافظه برای ذخیره (و به صورت اختیاری) مورد استفاده را مشخص کنید
پشته برای این برنامه پیشفرض 1 مگابایت رزرو شده، 4K متعهد است. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
---پایه تصویر ارزش
استفاده کنید ارزش به عنوان آدرس پایه برنامه یا dll شما. این کمترین حافظه است
مکانی که هنگام بارگیری برنامه یا dll شما استفاده می شود. برای کاهش نیاز به
تغییر مکان و بهبود عملکرد dll های خود، هر کدام باید یک آدرس پایه منحصر به فرد داشته باشند
و با هیچ dll دیگری همپوشانی نداشته باشند. پیش فرض برای فایل های اجرایی 0x400000 است و
0x10000000 برای dll. [این گزینه مخصوص پورت هدفمند PE i386 است
پیوند دهنده]
--کشتن
اگر داده شود، پسوند stdcall (@nn) از نمادها قبل از اینکه باشند حذف خواهند شد
صادر می شود. [این گزینه مختص پورت هدفمند i386 PE لینکر است]
--بزرگ-آدرس-آگاه
در صورت داده شدن، بیت مناسب در قسمت "Characteristics" هدر COFF تنظیم می شود
نشان می دهد که این فایل اجرایی از آدرس های مجازی بیشتر از 2 گیگابایت پشتیبانی می کند.
این باید همراه با /3GB یا /USERVA= استفاده شودارزش سوئیچ مگابایت
بخش «[سیستمهای عامل]» BOOT.INI. در غیر این صورت این بیت تاثیری ندارد.
[این گزینه مخصوص پورت های PE هدف پیوند دهنده است]
---تصویر-نسخه اصلی ارزش
شماره اصلی "نسخه تصویر" را تنظیم می کند. پیشفرض 1 است. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
--major-os-نسخه ارزش
شماره اصلی "نسخه OS" را تنظیم می کند. پیشفرض 4 است. [این گزینه خاص است
به پورت هدفمند i386 PE پیوند دهنده]
نسخه اصلی-زیر سیستم ارزش
شماره اصلی "نسخه زیرسیستم" را تنظیم می کند. پیشفرض 4 است. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
----تصویر-نسخه ارزش
تعداد جزئی "نسخه تصویر" را تنظیم می کند. پیشفرض 0 است. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
--minor-os-نسخه ارزش
تعداد جزئی "نسخه os" را تنظیم می کند. پیشفرض 0 است. [این گزینه خاص است
به پورت هدفمند i386 PE پیوند دهنده]
----subsystem-نسخه جزئی ارزش
تعداد جزئی "نسخه زیرسیستم" را تنظیم می کند. پیشفرض 0 است. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
--output-def پرونده
پیوند دهنده فایل را ایجاد می کند پرونده که حاوی یک فایل DEF مربوط به
DLL که پیوند دهنده تولید می کند. این فایل DEF (که باید "*.def" نامیده شود) ممکن است
برای ایجاد یک کتابخانه وارداتی با "dlltool" یا ممکن است به عنوان مرجع استفاده شود
نمادها به طور خودکار یا ضمنی صادر می شوند. [این گزینه مخصوص i386 PE است
پورت هدف پیوند دهنده]
--out-implib پرونده
پیوند دهنده فایل را ایجاد می کند پرونده که حاوی یک lib واردات مربوط به
DLL که پیوند دهنده ایجاد می کند. این lib import (که باید "*.dll.a" یا
"*.a" ممکن است برای پیوند دادن کلاینت ها به DLL تولید شده استفاده شود. این رفتار باعث می شود
امکان رد شدن از مرحله ایجاد کتابخانه وارداتی جداگانه "dlltool" وجود دارد. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
--enable-auto-image-base
به طور خودکار پایه تصویر را برای DLL ها انتخاب کنید، مگر اینکه یکی از آنها با استفاده از آن مشخص شده باشد
آرگومان "--image-base". با استفاده از هش تولید شده از dllname برای ایجاد منحصر به فرد
پایه های تصویر برای هر DLL، برخوردهای درون حافظه و جابجایی که می تواند برنامه را به تاخیر بیندازد
از اعدام اجتناب می شود. [این گزینه مخصوص پورت هدفمند PE i386 است
پیوند دهنده]
- غیرفعال کردن-پایه-تصویر خودکار
به طور خودکار یک پایه تصویر منحصر به فرد ایجاد نکنید. اگر کاربر مشخص نشده باشد
پایه تصویر ("--image-base") سپس از پیش فرض پلت فرم استفاده کنید. [این گزینه خاص است
به پورت هدفمند i386 PE پیوند دهنده]
--dll-search-prefix رشته
هنگامی که به صورت پویا به یک dll بدون کتابخانه وارداتی پیوند می دهید، جستجو کنید
" .dll" در اولویت به "lib dll.» این رفتار اجازه می دهد
تمایز آسان بین DLL های ساخته شده برای زیرپلتفرم های مختلف: بومی، cygwin،
uwin، pw، و غیره. برای مثال، DLL های cygwin معمولاً از "--dll-search-prefix=cyg" استفاده می کنند.
[این گزینه مختص پورت هدفمند i386 PE لینکر است]
--enable-auto-import
پیوند پیچیده "_symbol" به "__imp__symbol" را برای واردات داده از DLL انجام دهید،
و هنگام ساخت کتابخانه های وارداتی، نمادهای Thunking لازم را ایجاد کنید
آن داده ها صادر می شود. توجه: استفاده از پسوند "وارد کردن خودکار" باعث ایجاد متن می شود
بخشی از فایل تصویری که قابل نوشتن است. این با PE-COFF مطابقت ندارد
مشخصات فرمت منتشر شده توسط مایکروسافت.
توجه - استفاده از پسوند «واردات خودکار» همچنین باعث دادههای فقط خواندنی میشود
معمولاً در بخش .rdata قرار داده می شود تا در بخش .data قرار می گیرد
بجای. این به منظور حل یک مشکل با const است که شرح داده شده است
اینجا هستید: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
استفاده از "واردات خودکار" به طور کلی "فقط کار می کند" - اما گاهی اوقات ممکن است این را ببینید
پیام:
"متغیر " " را نمی توان به صورت خودکار وارد کرد. لطفاً اسناد ld را بخوانید
"--enable-auto-import" برای جزئیات."
این پیام زمانی رخ می دهد که برخی از (زیر)عبارت ها به آدرسی که در نهایت توسط آن داده شده است دسترسی پیدا می کند
مجموع دو ثابت (جدول واردات Win32 فقط یک مورد را مجاز میداند). مواردی که این
ممکن است شامل دسترسی به فیلدهای عضو متغیرهای ساختار وارد شده از یک DLL باشد،
و همچنین استفاده از یک شاخص ثابت در یک متغیر آرایه وارد شده از یک DLL. هر
متغیر چند کلمه ای (آرایه ها، ساختارها، طولانی طولانی و غیره) ممکن است باعث ایجاد این شرایط خطا شود.
با این حال، صرف نظر از نوع دقیق داده متغیر صادر شده متخلف، ld خواهد شد
همیشه آن را شناسایی کنید، اخطار را صادر کنید و خارج شوید.
راه های مختلفی برای رفع این مشکل، صرف نظر از نوع داده وجود دارد
متغیر صادر شده:
یکی از راه ها استفاده از سوئیچ --enable-runtime-pseudo-reloc است. این وظیفه را رها می کند
تنظیم مراجع در کد مشتری خود برای محیط زمان اجرا، بنابراین این روش کار می کند
فقط زمانی که محیط زمان اجرا از این ویژگی پشتیبانی می کند.
راه حل دوم این است که یکی از «ثابت ها» را مجبور کنیم که متغیر باشد -- یعنی
ناشناخته و در زمان کامپایل غیر قابل بهینه سازی برای آرایه ها دو احتمال وجود دارد:
الف) نمایه گیرنده (آدرس آرایه) را به یک متغیر تبدیل کنید، یا ب) شاخص "ثابت" را ایجاد کنید.
یک متغیر بدین ترتیب:
نوع خارجی extern_array[];
آرایه_خارجی[1] -->
{ نوع فرار *t=extern_array; t[1] }
or
نوع خارجی extern_array[];
آرایه_خارجی[1] -->
{ volatile int t=1; آرایه_خارجی[t]}
برای ساختارها (و اکثر انواع داده های چند کلمه ای دیگر) تنها گزینه ساختن است
متغیر خود ساختار (یا long long یا ...)
extern struct s extern_struct;
extern_struct.field -->
{ ساختار فرار s *t=&extern_struct; t->field }
or
extern long long extern_ll;
extern_ll -->
{ volatile long long * local_ll=&extern_ll; *local_ll }
روش سوم برای مقابله با این مشکل، کنار گذاشتن «واردات خودکار» است
نماد توهین آمیز و علامت گذاری آن با "__declspec(dllimport)". با این حال، در عمل که
نیاز به استفاده از compile-time #defines برای نشان دادن اینکه آیا در حال ساخت یک DLL هستید،
ساخت کد کلاینت که به DLL یا صرفاً ایجاد/پیوند دادن به یک استاتیک لینک می شود
کتابخانه در انتخاب بین روش های مختلف حل و فصل 'مستقیم
آدرس با مشکل آفست ثابت، باید استفاده معمولی در دنیای واقعی را در نظر بگیرید:
مقاله:
--فو.ه
extern int arr[];
--foo.c
#شامل "foo.h"
void main(int argc، char **argv){
printf("%d\n", arr[1]);
}
راه حل 1:
--فو.ه
extern int arr[];
--foo.c
#شامل "foo.h"
void main(int argc، char **argv){
/* این راه حل برای win32 و cygwin است. "بهینه سازی" نکنید */
فرار int *parr = arr;
printf("%d\n",parr[1]);
}
راه حل 2:
--فو.ه
/* توجه: صادرات خودکار فرض شده است (بدون __declspec(dllexport)) */
#if (تعریف شده(_WIN32) || تعریف شده(__CYGWIN__)) && \
!(تعریف شده(FOO_BUILD_DLL) || تعریف شده(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
# دیگر
#define FOO_IMPORT
# اندیف
خارجی FOO_IMPORT int arr[];
--foo.c
#شامل "foo.h"
void main(int argc، char **argv){
printf("%d\n", arr[1]);
}
راه چهارم برای جلوگیری از این مشکل، کدگذاری مجدد کتابخانه خود برای استفاده از یک تابع است
رابط به جای رابط داده برای متغیرهای متخلف (مانند set_foo() و
get_foo() توابع دسترسی). [این گزینه مخصوص پورت هدفمند i386 PE است
پیوند دهنده]
- غیرفعال کردن-وارد کردن خودکار
سعی نکنید پیوند پیچیده "_symbol" به "__imp__symbol" را برای داده ها انجام دهید.
واردات از DLL ها [این گزینه مخصوص پورت هدفمند PE i386 است
پیوند دهنده]
--enable-runtime-pseudo-reloc
اگر کد شما حاوی عباراتی است که در بخش --enable-auto-import توضیح داده شده است، یعنی
وارد کردن داده ها از DLL با افست غیر صفر، این سوئیچ یک بردار ایجاد می کند
'جابهجایی شبه زمان اجرا' که میتواند توسط محیط زمان اجرا برای تنظیم استفاده شود
ارجاع به چنین داده هایی در کد مشتری شما. [این گزینه مخصوص i386 PE است
پورت هدف پیوند دهنده]
--disable-runtime-pseudo-reloc
جابجایی های کاذب برای وارد کردن داده های افست غیر صفر از DLL ایجاد نکنید. این هست
پیشفرض. [این گزینه مختص پورت هدفمند i386 PE لینکر است]
--enable-extra-pe-debug
اطلاعات مربوط به اشکال زدایی اضافی مربوط به کوچک کردن نماد واردات خودکار را نشان دهید. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
---تراز بخش
تراز بخش را تنظیم می کند. بخشهای حافظه همیشه از آدرسهایی شروع میشوند که
مضربی از این عدد هستند. پیشفرض 0x1000 است. [این گزینه مختص به
پورت هدفمند i386 PE پیوند دهنده]
--پشته ذخیره
--پشته ذخیره,مرتکب شدن
تعداد بایتهای حافظه برای ذخیره (و به صورت اختیاری) مورد استفاده را مشخص کنید
پشته برای این برنامه پیشفرض 2 مگابایت رزرو شده، 4K متعهد است. [این گزینه است
مخصوص پورت هدفمند i386 PE پیوند دهنده]
--زیر سیستم که
--زیر سیستم که:عمده
--زیر سیستم که:عمده.خردسال
زیرسیستمی را مشخص می کند که برنامه شما تحت آن اجرا می شود. ارزش های قانونی برای
که عبارتند از "native"، "windows"، "console"، "posix" و "xbox". شما می توانید به صورت اختیاری تنظیم کنید
نسخه زیر سیستم نیز مقادیر عددی نیز برای آن پذیرفته شده است که. [این گزینه
مختص پورت هدفمند i386 PE پیوند دهنده است]
گزینه های زیر پرچم ها را در قسمت "DllCharacteristics" فایل PE تنظیم می کنند
هدر: [این گزینهها مختص پورتهای هدفمند PE لینکر هستند]
--دینامیک پایه
آدرس پایه تصویر ممکن است با استفاده از تصادفیسازی طرحبندی فضای آدرس تغییر مکان دهد
(ASLR). این ویژگی با MS Windows Vista برای اهداف PE i386 معرفی شد.
--forceinteg
بررسی یکپارچگی کد اجرا می شود.
--nxcompat
تصویر با Data Execution Prevention سازگار است. این ویژگی بود
با MS Windows XP SP2 برای اهداف PE i386 معرفی شد.
-- بدون انزوا
اگرچه تصویر انزوا را درک می کند، تصویر را ایزوله نکنید.
--نه-سه
تصویر از SEH استفاده نمی کند. هیچ کنترل کننده SE نمی تواند از این تصویر فراخوانی شود.
--بدون اتصال
این تصویر را مقید نکنید.
--wdmdriver
درایور از مدل درایور MS Windows استفاده می کند.
--تساوار
تصویر از ترمینال سرور آگاه است.
لینکرهای 68HC11 و 68HC12 از گزینه های خاصی برای کنترل بانک حافظه پشتیبانی می کنند
نقشه برداری سوئیچینگ و تولید کد ترامپلاین.
-- بدون ترامپولین
این گزینه تولید ترامپولین را غیرفعال می کند. به طور پیش فرض یک ترامپولین است
تولید شده برای هر تابع دور که با استفاده از یک دستورالعمل "jsr" فراخوانی می شود (این
زمانی اتفاق می افتد که یک اشاره گر به یک تابع دور گرفته شود).
--پنجره بانک نام
این گزینه نام ناحیه حافظه را به لینک دهنده نشان می دهد حافظه
مشخصاتی که پنجره بانک حافظه را توصیف می کند. تعریف چنین منطقه ای است
سپس توسط پیوند دهنده برای محاسبه صفحه بندی و آدرس ها در پنجره حافظه استفاده می شود.
گزینه های زیر برای کنترل مدیریت تولید GOT هنگام پیوند دادن برای پشتیبانی می شوند
اهداف 68K
--got=نوع
این گزینه به پیوند دهنده می گوید که از کدام طرح تولید GOT استفاده کند. نوع باید یکی باشد
of تنها, منفی, چند رگه or هدف. برای اطلاعات بیشتر به ورودی اطلاعات مراجعه کنید
برای ld.
محیط زیست
شما می توانید رفتار را تغییر دهید ld با متغیرهای محیطی "GNUTARGET"،
"LDEMULATION" و "COLLECT_NO_DEMANGLE".
"GNUTARGET" فرمت شی فایل ورودی را در صورت عدم استفاده تعیین می کند -b (یا مترادف آن
--قالب). مقدار آن باید یکی از نام های BFD برای قالب ورودی باشد. اگر وجود ندارد
"GNUTARGET" در محیط، ld از قالب طبیعی هدف استفاده می کند. اگر "GNUTARGET"
روی «پیشفرض» تنظیم میشود، سپس BFD سعی میکند با بررسی باینری، فرمت ورودی را کشف کند
فایل های ورودی؛ این روش اغلب موفق است، اما ابهامات بالقوه وجود دارد، زیرا وجود دارد
هیچ روشی برای اطمینان از اینکه عدد جادویی مورد استفاده برای تعیین فرمتهای فایل شی نیست
منحصر بفرد. با این حال، روش پیکربندی برای BFD در هر سیستم قرار میدهد
فرمت معمولی برای آن سیستم ابتدا در لیست جستجو، بنابراین ابهامات برطرف می شود
به نفع کنوانسیون
اگر از آن استفاده نکنید، "LDEMULATION" تقلید پیش فرض را تعیین می کند -m گزینه.
شبیهسازی میتواند بر جنبههای مختلف رفتار پیونددهنده، بهویژه پیوند دهنده پیشفرض تأثیر بگذارد
اسکریپت می توانید شبیه سازی های موجود را با -- پرحرف or -V گزینه ها. اگر
-m گزینه استفاده نمی شود و متغیر محیطی "LDEMULATION" تعریف نشده است
شبیه سازی پیش فرض بستگی به نحوه پیکربندی پیوند دهنده دارد.
به طور معمول، پیوند دهنده به طور پیش فرض نمادها را جدا می کند. با این حال، اگر
«COLLECT_NO_DEMANGLE» در محیط تنظیم شده است، سپس به طور پیشفرض به حالت جدا نشدن درمیآید.
نمادها این متغیر محیطی به روشی مشابه توسط پیوند دهنده "gcc" استفاده می شود
برنامه wrapper پیش فرض ممکن است توسط --دمانگل و -- بدون درهم ریختن
گزینه.
با استفاده از خدمات onworks.net از msp430-ld به صورت آنلاین استفاده کنید