англійськафранцузькаіспанська

Ad


Значок OnWorks

mips-linux-gnu-ld.bfd - онлайн у хмарі

Запустіть mips-linux-gnu-ld.bfd у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда mips-linux-gnu-ld.bfd, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS

ПРОГРАМА:

ІМ'Я


ld - компонувальник GNU

СИНТАКСИС


ld [опції] objfile ...

ОПИС


ld об’єднує ряд об’єктних та архівних файлів, переміщує їх дані та зв’язує символ
посилання. Зазвичай останнім кроком компіляції програми є її запуск ld.

ld приймає файли мови команд компонування, записані в доповненні редактора посилань AT&T
Синтаксис командної мови, щоб забезпечити явний і повний контроль над процесом зв'язування.

Ця довідкова сторінка не описує командну мову; див ld запис у «Інформація» для повного
подробиці про командну мову та інші аспекти компоновщика GNU.

ця версія ld використовує бібліотеки BFD загального призначення для роботи з об’єктними файлами. Це
дозволяє ld читати, об’єднувати та записувати об’єктні файли в різних форматах --- для
наприклад, COFF або "a.out". Різні формати можуть бути пов’язані разом, щоб створити будь-який
доступний тип об’єктного файлу.

Окрім своєї гнучкості, компонувальник GNU є більш корисним у наданні, ніж інші компонувальники
діагностична інформація. Багато компонувальників припиняють виконання відразу після зустрічі з файлом
помилка; коли можливо, ld продовжує виконуватися, дозволяючи виявити інші помилки
(або, в деяких випадках, отримати вихідний файл, незважаючи на помилку).

Компонувальник GNU ld призначений для охоплення широкого кола ситуацій та максимальної сумісності
як можна з іншими лінкерами. В результаті у вас є багато варіантів, щоб контролювати його
поведінка.

ВАРІАНТИ


Компонувальник підтримує безліч параметрів командного рядка, але на практиці їх небагато
використовуються в будь-якому конкретному контексті. Наприклад, часте використання ld є посилання
стандартні об'єктні файли Unix у стандартній підтримуваній системі Unix. На такій системі до
посилання на файл "hello.o":

ld -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
прапорець на виході.

Аргументи параметрів із кількох літер мають бути відокремлені від імені параметра символом
знак рівності або надаватися як окремі аргументи відразу після параметра that
вимагає їх. Наприклад, --слід-символ Foo та --trace-symbol=foo рівнозначні.
Приймаються унікальні скорочення назв багатобуквенних варіантів.

Примітка---якщо компонувальник викликається опосередковано, через драйвер компілятора (наприклад ПКУ) then
всі параметри командного рядка компонувальника повинні мати префікс -Wl, (або що підходить
для конкретного драйвера компілятора), наприклад:

gcc -Wl,--start-group foo.o bar.o -Wl,--end-group

Це важливо, оскільки інакше програма драйвера компілятора може безшумно скинути файл
параметри компонувальника, що призводить до поганого посилання. Також може виникнути плутанина при проходженні опцій
які вимагають значення через драйвер, як використання пробілу між параметром і аргументом
діє як роздільник і змушує драйвер передавати лише параметр компонувальнику та файлу
аргумент компілятору. У цьому випадку найпростіше використовувати об’єднані форми обох
варіанти з однієї та кількох літер, наприклад:

gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map

Ось таблиця загальних перемикачів командного рядка, прийнятих компоновщиком GNU:

@файл
Прочитайте параметри командного рядка з файл. Прочитані параметри вставляються замість
оригінальний @файл варіант. Якщо файл не існує або не може бути прочитаний, тоді параметр
будуть розглядатися буквально, а не видалятися.

Варіанти в файл розділені пробілами. Може бути включений пробіл
у варіанті, оточуючи весь параметр у одинарні або подвійні лапки. Будь-який
символ (включаючи зворотну скісну риску) можна включити, додавши до символу префікс
включено із зворотною косою рискою. The файл може містити додаткові @файл варіанти; будь-який
такі параметри будуть оброблятися рекурсивно.

-a ключове слово
Цей параметр підтримується для сумісності HP/UX. The ключове слово аргумент повинен бути одним із
струни архів, загальніабо дефолт. -аархів функціонально еквівалентний
-Бстатичний, а два інших ключових слова функціонально еквівалентні -Бдинамічний, це
опцію можна використовувати будь-яку кількість разів.

--аудит АУДИТІБ
Додає АУДИТІБ до запису "DT_AUDIT" динамічного розділу. АУДИТІБ не перевіряється
для існування, а також не використовуватиме DT_SONAME, зазначений у бібліотеці. Якщо вказано
кілька разів "DT_AUDIT" міститиме список інтерфейсів аудиту, розділених двокрапкою
використовувати. Якщо компонувальник під час пошуку спільного знаходить об’єкт із записом аудиту
бібліотек, він додасть відповідний запис "DT_DEPAUDIT" у вихідний файл. Це
Опція має значення лише на платформах ELF, які підтримують інтерфейс rtld-audit.

-A архітектура
--архітектура=архітектура
У поточному випуску о ld, ця опція корисна лише для сімейства Intel 960
архітектури. У цьому ld конфігурація, архітектура аргумент ідентифікує
особлива архітектура в сімействі 960, що забезпечує певні заходи безпеки та змінює
шлях пошуку архів-бібліотека.

Майбутні випуски ld може підтримувати подібну функціональність для іншої архітектури
сімей.

-b вхідний формат
--формат=вхідний формат
ld може бути налаштований на підтримку більш ніж одного типу об’єктних файлів. Якщо ти ld is
налаштований таким чином, ви можете використовувати -b можливість вказати двійковий формат для введення
об’єктні файли, які слідують за цим параметром у командному рядку. Навіть тоді, коли ld налаштовано
щоб підтримувати альтернативні формати об’єктів, зазвичай не потрібно вказувати це, як ld
має бути налаштовано так, щоб очікувати як формат введення за замовчуванням найбільш звичайний формат для кожного
машина вхідний формат – це текстовий рядок, назва певного формату, який підтримується
бібліотеки BFD. (Ви можете перерахувати доступні двійкові формати за допомогою objdump -i.)

Ви можете використовувати цю опцію, якщо ви зв’язуєте файли з незвичайним двійковим файлом
формат. Ви також можете використовувати -b для явного перемикання форматів (при зв’язуванні об’єктних файлів
різних форматів), в т.ч -b вхідний формат перед кожною групою об’єктних файлів
в певному форматі.

Формат за замовчуванням береться зі змінної середовища "GNUTARGET".

Ви також можете визначити формат введення зі сценарію, використовуючи команду "TARGET";

-c МРТ-командний файл
--mri-script=МРТ-командний файл
Для сумісності з лінкерами, виробленими МРТ, ld приймає файли сценаріїв, записані в an
альтернативна, обмежена мова команд, описана у файлах сценаріїв, сумісних з МРТ
розділ документації GNU ld. Введіть файли сценарію МРТ з опцією -c; використання
-T можливість запуску скриптів компоновника, написаних для загального призначення ld сценаріїв
мова. Якщо МРТ-cmd-файл не існує, ld шукає його у вказаних каталогах
будь-яким -L Варіанти.

-d
-dc
-dp Ці три варіанти еквівалентні; для сумісності підтримуються кілька форм
з іншими лінкерами. Вони призначають простір для загальних символів, навіть якщо вихід з переміщенням
вказано файл (з -r). Команда сценарію "FORCE_COMMON_ALLOCATION" має
той самий ефект.

--депаудит АУДИТІБ
-P АУДИТІБ
Додає АУДИТІБ до запису "DT_DEPAUDIT" динамічного розділу. АУДИТІБ НЕ
перевірено на наявність, а також не використовуватиме DT_SONAME, зазначений у бібліотеці. Якщо
вказано кілька разів "DT_DEPAUDIT" міститиме список аудиту, розділений двокрапкою
інтерфейси для використання. Цей параметр має значення лише на платформах ELF, які підтримують
інтерфейс rtld-аудит. Параметр -P надається для сумісності Solaris.

-e запис
--вхід=запис
Скористайтесь запис як явний символ для початку виконання вашої програми, а не
точка входу за замовчуванням. Якщо символ не названий запис, компонувальник спробує це зробити
розбору запис як число, і використовуйте це як адресу входу (число буде
інтерпретується в основі 10; ви можете використовувати провідний 0x для бази 16, або провідного 0 для бази
8).

--exclude-libs либ,либ, ...
Вказує список архівних бібліотек, символи з яких не повинні бути автоматично
експортується. Імена бібліотеки можуть бути розділені комами або двокрапками. Уточнення
"--exclude-libs ALL" виключає символи в усіх архівних бібліотеках з автоматичного експорту.
Ця опція доступна лише для цільового порту i386 PE компоновщика та для ELF
цільові порти. Для i386 PE символи, явно перераховані у файлі .def, залишаються
експортовано, незалежно від цього параметра. Для портів, орієнтованих на ELF, символи, на які це впливає
параметр буде розглядатися як прихований.

--exclude-modules-for-implib Модулі,Модулі, ...
Вказує список об’єктних файлів або членів архіву, з яких не повинно бути символів
автоматично експортується, але який слід скопіювати оптом до бібліотеки імпорту
створюється під час посилання. Назви модулів можуть бути розділені комами або
двокрапки і повинні точно відповідати іменам файлів, які використовуються ld відкрити файли; для архіву
Members, це просто ім'я члена, але для об'єктних файлів ім'я в переліку обов'язково
включати і точно відповідати будь-якому шляху, який використовується для вказівки вхідного файлу на компоновщику
командний рядок. Ця опція доступна лише для цільового порту i386 PE
компонувальник. Символи, явно зазначені у файлі .def, все ще експортуються, незалежно від
цей варіант.

-E
--експортно-динамічний
--no-export-dynamic
При створенні динамічно зв'язаного виконуваного файлу, використовуючи файл -E опція або
--експортно-динамічний Параметр змушує компонувальник додавати всі символи до динамічного символу
стіл. Таблиця динамічних символів — це набір символів, які видно з динамічних
об'єкти під час виконання.

Якщо ви не використовуєте жодну з цих опцій (або скористайтеся --no-export-dynamic варіант до
відновити поведінку за замовчуванням), динамічна таблиця символів зазвичай містить тільки
ті символи, на які посилається якийсь динамічний об'єкт, згаданий у посиланні.

Якщо ви використовуєте "dlopen" для завантаження динамічного об'єкта, який має звернутися до символів
визначено програмою, а не якимось іншим динамічним об'єктом, то ви, ймовірно, будете
потрібно використовувати цю опцію під час підключення самої програми.

Ви також можете використовувати динамічний список, щоб контролювати, які символи слід додати до
динамічна таблиця символів, якщо формат виведення її підтримує. Дивіться опис
--динамічний список.

Зауважте, що ця опція специфічна для цільових портів ELF. Цілі PE підтримують подібне
функція експорту всіх символів з DLL або EXE; дивіться опис
--експортувати всі символи нижче.

-EB Зв’яжіть об’єкти з великим порядком. Це впливає на вихідний формат за замовчуванням.

-ТО Зв’яжіть об’єкти з маленьким байтом. Це впливає на вихідний формат за замовчуванням.

-f ім'я
--допоміжний=ім'я
При створенні спільного об’єкта ELF встановіть для внутрішнього поля DT_AUXILIARY значення
вказана назва. Це повідомляє динамічному компоновщику, що таблиця символів є спільною
об’єкт слід використовувати як допоміжний фільтр у таблиці символів спільного об’єкта
ім'я.

Якщо пізніше ви зв’яжете програму з цим об’єктом фільтра, то під час запуску файлу
програми, динамічний компонувальник побачить поле DT_AUXILIARY. Якщо динамічний компонувальник
розв’язує будь-які символи з об’єкта фільтра, він спочатку перевірить, чи є a
визначення в спільному об’єкті ім'я. Якщо він є, він буде використовуватися замість
визначення в об'єкті фільтра. Спільний об’єкт ім'я не обов'язково існувати. Таким чином,
спільний об'єкт ім'я може використовуватися для забезпечення альтернативної реалізації певних
функції, можливо, для налагодження або для конкретної роботи машини.

Цей параметр можна вказати кілька разів. Буде створено записи DT_AUXILIARY
у тому порядку, в якому вони відображаються в командному рядку.

-F ім'я
--фільтр=ім'я
При створенні спільного об’єкта ELF встановіть для внутрішнього поля DT_FILTER вказане значення
ім'я. Це повідомляє динамічному компонувальнику, що таблиця символів спільного об’єкта
створюється, слід використовувати як фільтр у таблиці символів спільного об’єкта
ім'я.

Якщо пізніше ви зв’яжете програму з цим об’єктом фільтра, то під час запуску файлу
програми, динамічний компонувальник побачить поле DT_FILTER. Динамічний компонувальник буде
розв’язувати символи відповідно до таблиці символів об’єкта фільтра як зазвичай, але це
насправді буде посилатися на визначення, знайдені в спільному об’єкті ім'я. Таким чином
Об'єкт фільтра можна використовувати для вибору підмножини символів, наданих об'єктом
ім'я.

Деякі старіші лінкери використовували -F опція для всієї ланцюжка інструментів компіляції для
визначення формату об’єктного файлу як для вхідних, так і для вихідних об’єктних файлів. Компонувальник GNU
використовує для цієї мети інші механізми: -b, --формат, --оформат варіанти,
Команда "TARGET" у сценаріях компоновщика та змінна середовища "GNUTARGET". GNU
компонувальник буде ігнорувати -F параметр, коли не створюється спільний об’єкт ELF.

-fini=ім'я
Створюючи виконуваний файл або спільний об’єкт ELF, викликайте NAME, коли виконуваний файл або
спільний об’єкт вивантажується шляхом встановлення DT_FINI на адресу функції. За
за замовчуванням компонувальник використовує "_fini" як функцію для виклику.

-g Проігноровано. Забезпечується сумісність з іншими інструментами.

-G значення
--gpsize=значення
Встановіть максимальний розмір об’єктів, які підлягають оптимізації за допомогою регістра GP розмір, це
має значення лише для форматів об’єктних файлів, таких як MIPS ELF, які підтримують введення великих розмірів
і дрібні предмети на різні секції. Це ігнорується для іншого об’єктного файлу
форматах.

-h ім'я
-sonname=ім'я
При створенні спільного об’єкта 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" вказує на спільну бібліотеку.) Зауважте, що така поведінка
не поширюється на :ім'я файлу, який завжди визначає файл з назвою ім'я файлу.

Компонувальник шукатиме архів лише один раз, у тому місці, де він вказаний
командний рядок. Якщо архів визначає символ, який не визначено в якомусь об’єкті
який з'явився перед архівом у командному рядку, компонувальник буде включати файл
відповідний(і) файл(и) з архіву. Однак невизначений символ в об’єкті
що з'являється пізніше в командному рядку, не змусить компонувальник шукати в архіві
знову.

Див -( опція для способу змусити компонувальник шукати архіви кілька разів.

Ви можете перерахувати один і той самий архів кілька разів у командному рядку.

Цей тип пошуку в архіві є стандартним для компонувальників Unix. Однак, якщо ви
використання ld на AIX, зауважте, що це відрізняється від поведінки компоновщика AIX.

-L searchdir
--бібліотека-шлях=searchdir
Додати шлях searchdir до списку шляхів, які ld шукатиме архівні бібліотеки та
ld контрольні скрипти. Ви можете використовувати цю опцію будь-яку кількість разів. Довідники є
шукати в тому порядку, в якому вони вказані в командному рядку. Довідники
визначені в командному рядку, шукаються перед каталогами за замовчуванням. всі -L
опції застосовуються до всіх -l параметри, незалежно від того, в якому порядку відображаються параметри.
-L варіанти не впливають на те, як ld шукає сценарій компонування, якщо -T опція
вказано.

If searchdir починається з "=", потім "=" буде замінено на sysroot префікс,
контролюється --sysroot або вказано, коли компонувальник налаштовано.

Набір шляхів для пошуку за замовчуванням (без вказівки за допомогою -L) залежить від якого
режим емуляції ld використовує, а в деяких випадках також від того, як він був налаштований.

Шляхи також можна вказати в сценарії посилання за допомогою команди "SEARCH_DIR".
Каталоги, зазначені таким чином, шукаються в точці, в якій працює скрипт компонувальника
з'являється в командному рядку.

-m емуляція
Емулювати емуляція компонувальник. Ви можете перерахувати доступні емуляції за допомогою
-багатослівний or -V Варіанти.

Якщо -m параметр не використовується, емуляція береться з "LDEMULATION"
змінна середовища, якщо вона визначена.

В іншому випадку емуляція за замовчуванням залежить від того, як був налаштований компонувальник.

-M
--друк-карта
Роздрукуйте карту посилань на стандартний вихід. Карта посилань містить інформацію про
посилання, включаючи наступне:

· Де об'єктні файли відображаються в пам'яті.

· Як розподіляються загальні символи.

· Усі члени архіву, включені в посилання, із зазначенням символу котрий
змусила доставити члена архіву.

· Значення, присвоєні символам.

Примітка – символи, значення яких обчислюються за допомогою виразу, що включає a
посилання на попереднє значення того самого символу може не мати правильних результатів
відображається на карті посилань. Це відбувається тому, що лінкер відкидає проміжний продукт
результатів і зберігає лише кінцеве значення виразу. Під такими
обставини, компонувальник відобразить кінцеве значення, узяте в квадратні дужки.
Наприклад, скрипт компонувальника, що містить:

foo = 1
фу = фу * 4
foo = foo + 8

видасть наступний вихід у карті посилань, якщо -M використовується варіант:

0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)

Читати Вирази для отримання додаткової інформації про вирази в сценаріях компоновщика.

-n
--nmagic
Вимкніть вирівнювання сторінок розділів і вимкніть посилання на спільні бібліотеки. Якщо
формат виведення підтримує магічні числа в стилі Unix, позначте вихід як "NMAGIC".

-N
-- омагічний
Налаштуйте розділи тексту та даних, щоб вони були доступними для читання та запису. Також не вирівнюйте сторінку
сегменту даних і вимкнути зв’язування зі спільними бібліотеками. Якщо вихідний формат
підтримує магічні числа в стилі Unix, позначте вихід як "OMAGIC". Примітка: хоча а
розділ тексту для запису дозволений для цілей PE-COFF, він не відповідає
специфікація формату, опублікована Microsoft.

-- без магії
Цей параметр зводить нанівець більшість ефектів -N варіант. Він встановлює для текстового розділу значення
бути доступним лише для читання і змушує сегмент даних бути вирівняним за сторінкою. Примітка – ця опція діє
не вмикати зв'язування зі спільними бібліотеками. Використовуйте -Бдинамічний для цього.

-o вихід
--вихід=вихід
Скористайтесь вихід як назва програми, створеної ld; якщо цього варіанта немає
вказана назва а використовується за замовчуванням. Команда сценарію "OUTPUT" також може
вкажіть назву вихідного файлу.

-O рівень
If рівень є числовими значеннями, більшими за нуль ld оптимізує вихід. Це може
займати значно більше часу, і тому, ймовірно, його слід увімкнути лише для фіналу
двійковий. На даний момент ця опція впливає лише на створення спільної бібліотеки ELF. Майбутнє
випуски компонувальника можуть більше використовувати цю опцію. Також на даний момент немає
різниця в поведінці компонувальника для різних ненульових значень цього параметра.
Знову це може змінитися з майбутніми випусками.

--push-state
Команда --push-state дозволяє зберегти поточний стан прапорів, які керують
обробка вхідних файлів, щоб усі вони могли бути відновлені за допомогою одного відповідного
--поп-держ варіант.

Варіанти, які охоплюються: -Бдинамічний, -Бстатичний, -дн, -ди, -виклик_спільний,
-не_спільний, -статичний, -N, -n, --цілий архів, --не-весь-архів, -r, -Ур,
--copy-dt-needed-entries, --no-copy-dt-needed-entries, --в міру необхідності, --не-як-потрібно,
та -a.

Однією з цілей для цього параметра є специфікації для pkg-config. При використанні з
--libs опція всі можливо необхідні бібліотеки перераховані, а потім, можливо, пов'язані з ними
весь час. Краще повернути щось наступним чином:

-Wl,--push-state,--як-потрібно -libone -libtwo -Wl,--pop-state

Скасовує ефект --push-state, відновлює попередні значення керуючих прапорів
обробка вхідних файлів.

-q
--emit-relocs
Залиште розділи та вміст переміщення у повністю пов’язаних виконуваних файлах. Опублікувати посилання
інструментам аналізу та оптимізації може знадобитися ця інформація для правильної роботи
модифікації виконуваних файлів. Це призводить до більших виконуваних файлів.

Наразі ця опція підтримується лише на платформах ELF.

--силово-динамічний
Змусити вихідний файл мати динамічні розділи. Ця опція специфічна для VxWorks
цілі.

-r
--переміщення
Згенерувати переміщувані вихідні дані --- тобто створити вихідний файл, який, у свою чергу, може служити як
вхід до ld. Це часто називають частково Зв'язуючий. Як побічний ефект, в середовищі
які підтримують стандартні магічні числа Unix, цей параметр також встановлює вихідні файли
магічне число до "OMAGIC". Якщо цей параметр не вказано, буде абсолютний файл
вироблено. При зв’язуванні програм C++ цей параметр волі НЕ розв’язати посилання на
конструктори; для цього використовуйте -Ур.

Якщо вхідний файл не має того самого формату, що і вихідний файл, часткове зв’язування
підтримується, лише якщо цей вхідний файл не містить жодних переміщень. Інший
вихідні формати можуть мати додаткові обмеження; наприклад, деякі формати на основі "a.out".
взагалі не підтримують часткове зв’язування з вхідними файлами в інших форматах.

Цей варіант робить те ж саме, що і -i.

-R ім'я файлу
--просто-символи=ім'я файлу
Прочитайте назви символів та їх адреси з ім'я файлу, але не переміщуйте його та не включайте
це на виході. Це дозволяє вашому вихідному файлу символічно посилатися на абсолют
місця пам'яті, визначені в інших програмах. Ви можете використовувати цю опцію більше ніж
один раз

Для сумісності з іншими лінкерами ELF, якщо -R За параметром слід каталог
ім'я, а не ім'я файлу, воно розглядається як -rpth варіант.

-s
--стрип-все
Опустіть всю інформацію про символи з вихідного файлу.

-S
--strip-debug
Опустіть інформацію про символи налагоджувача (але не всі символи) з вихідного файлу.

-t
--слід
Надрукуйте імена вхідних файлів як ld обробляє їх.

-T файл сценарію
--скрипт=файл сценарію
Скористайтесь файл сценарію як скрипт компонувальника. Цей скрипт замінює ldСкрипт компонувальника за замовчуванням
(а не додавати до нього), отже командний файл необхідно вказати все необхідне
описати вихідний файл. Якщо файл сценарію не існує в поточному каталозі,
"ld" шукає його в каталогах, зазначених будь-яким попереднім -L варіанти. Кілька
-T варіанти накопичуються.

-dT файл сценарію
--default-script=файл сценарію
Скористайтесь файл сценарію як скрипт компоновника за замовчуванням.

Цей варіант схожий на -- сценарій варіант, за винятком того, що обробка сценарію є
відкладається до тих пір, поки не буде оброблено решту командного рядка. Це дозволяє
варіанти, розміщені після --скрипт за замовчуванням параметр у командному рядку, щоб вплинути на
поведінка сценарію компоновщика, що може бути важливою при виконанні командного рядка компоновщика
не може безпосередньо керуватися користувачем. (наприклад, тому що командний рядок є
створений іншим інструментом, наприклад ПКУ).

-u символ
--невизначено=символ
Примусово символ вводити у вихідний файл як невизначений символ. Роблячи це може,
наприклад, ініціювати зв'язування додаткових модулів зі стандартних бібліотек. -u може бути
повторюється з різними аргументами параметра для введення додаткових невизначених символів. Це
Опція еквівалентна команді сценарію компонувальника "EXTERN".

Якщо ця опція використовується для примусового залучення додаткових модулів у посилання,
і якщо символ залишається невизначеним помилкою, то параметр
--require-defined слід використовувати замість цього.

--require-defined=символ
Вимагайте цього символ визначається у вихідному файлі. Цей варіант такий самий, як і варіант
--невизначений крім того, що якщо символ не визначено у вихідному файлі, то компонувальник
видасть помилку і вийде. Такого ж ефекту можна досягти в сценарії компоновника за допомогою
використовуючи разом "EXTERN", "ASSERT" і "DEFINED". Цей параметр можна використовувати кілька разів
разів, щоб потребувати додаткових символів.

-Ур Для будь-чого, крім програм на C++, цей параметр еквівалентний -r: це породжує
переміщуваний вихід ---тобто вихідний файл, який, у свою чергу, може служити вхідними для ld. Коли
зв'язування програм C++, -Ур робить розв’язувати посилання на конструктори, на відміну від -r. Це робить
не працює для використання -Ур на файли, які самі були пов’язані з -Ур; колись
Таблицю конструктора створено, до неї неможливо додати. Використовуйте -Ур тільки на останнє
часткове посилання, і -r для інших.

--orphan-handling=РЕЖИМ
Контролюйте, як обробляються розділи-сироти. Сиротський розділ – це не спеціально
згадується в сценарії компонувальника.

РЕЖИМ може мати будь-яке з наступних значень:

"місце"
Розділи-сироти розміщуються у відповідний вихідний розділ відповідно до стратегії
описано в Сирота Розділи. Варіант --унікальний також впливає на те, як розділи
розміщений.

"відкинути"
Усі розділи-сироти відкидаються, розміщуючи їх у /ВИКИНУТИ/ .

"попередити"
Компонувальник розмістить сиротський розділ як "місце", а також видасть попередження.

"помилка"
Компонувальник завершить роботу з помилкою, якщо буде знайдено будь-який розділ-сиріт.

За замовчуванням якщо -- поводження з сиротами не дається це "місце".

--унікальний[=РОЗДІЛ]
Створює окремий вихідний розділ для кожного збігу вхідного розділу РОЗДІЛ, або якщо
необов'язковий символ підстановки РОЗДІЛ Аргумент відсутній для кожного розділу сирітого введення. An
Розділ сиріт — це розділ, який спеціально не згадується в сценарії компонувальника. Ви можете скористатися цим
параметр кілька разів у командному рядку; Це перешкоджає нормальному об’єднанню введених даних
розділи з однаковими іменами, перевизначаючи призначення розділу виводу в скрипті компоновника.

-v
-- версія
-V Відобразити номер версії для ld, -V Параметр також містить список підтримуваних емуляцій.

-x
--відкинути-все
Видалити всі локальні символи.

-X
--discard-locals
Видалити всі тимчасові локальні символи. (Ці символи починаються з локального, специфічного для системи
префікси етикетки, як правило .L для систем ELF або L для традиційних систем a.out.)

-y символ
--trace-symbol=символ
Надрукуйте назву кожного пов’язаного файлу, у якому символ з'являється. Цей варіант може бути наданий
будь-яку кількість разів. У багатьох системах доводиться додавати символ підкреслення.

Ця опція корисна, якщо у вашому посиланні є невизначений символ, але ви не знаєте
звідки надходить посилання.

-Y шлях
додавати шлях до шляху пошуку бібліотеки за замовчуванням. Ця опція існує для Solaris
Сумісність.

-z ключове слово
Розпізнаними ключовими словами є:

комбрелок
Об’єднує кілька розділів reloc і сортує їх для динамічного пошуку символів
можливе кешування.

деф
Забороняє невизначені символи в об’єктних файлах. Невизначені символи в спільному доступі
бібліотеки все ще дозволені.

execstack
Позначає об’єкт як необхідний виконуваний стек.

в цілому
Ця опція має значення лише під час створення спільного об’єкта. Це робить
символи, визначені цим спільним об'єктом, доступні для розділення символів
згодом завантажені бібліотеки.

initfirst
Ця опція має сенс лише під час створення спільного об’єкта. Він позначає об'єкт
так що його ініціалізація під час виконання відбудеться до ініціалізації під час виконання
будь-які інші об’єкти, які одночасно вносяться в процес. Так само
Завершення виконання об'єкта відбудеться після завершення під час виконання
будь-які інші об'єкти.

вставляти
Позначає об’єкт, який його таблиця символів розміщує перед усіма символами, крім символів
первинний виконуваний файл.

ледачий
Створюючи виконуваний файл або спільну бібліотеку, позначте його, щоб повідомити про динаміку
компонувальник, щоб відкласти дозвіл виклику функції до моменту, коли функція викликається
(ліниве зв'язування), а не під час завантаження. Ліниве прив’язування є за замовчуванням.

loadfltr
Позначає об’єкт, що його фільтри обробляються негайно під час виконання.

мульдефс
Дозволяє декілька визначень.

нокомбрелок
Вимикає об’єднання кількох розділів reloc.

нокопірелок
Вимкнути згенеровані компонувальником змінні .dynbss, які використовуються замість змінних, визначених у
спільні бібліотеки. Може призвести до динамічного переміщення тексту.

nodefaultlib
Позначає об’єкт, який пошук залежностей цього об’єкта буде ігнорувати
шляхи пошуку бібліотеки за замовчуванням.

nodelete
Позначає, що об’єкт не слід вивантажувати під час виконання.

nodlopen
Позначає об’єкт, недоступний для «dlopen».

nodump
Позначає, що об'єкт не може бути скинутий за допомогою "dldump".

noexecstack
Позначає об’єкт як такий, що не потребує виконуваного стека.

текст
Розглядати DT_TEXTREL у спільному об’єкті як помилку.

nottext
Не розглядайте DT_TEXTREL у спільному об’єкті як помилку.

textoff
Не розглядайте DT_TEXTREL у спільному об’єкті як помилку.

норелро
Не створюйте заголовок сегмента ELF "PT_GNU_RELRO" в об'єкті.

зараз Створюючи виконуваний файл або спільну бібліотеку, позначте його, щоб повідомити про динаміку
компонувальник, щоб розв’язувати всі символи під час запуску програми або при спільному доступі
бібліотека пов'язана з використанням dlopen, замість того, щоб відкласти дозвіл виклику функції
до моменту, коли функція викликається вперше.

походження
Позначає об’єкт може містити $ORIGIN.

relro
Створіть заголовок сегмента ELF "PT_GNU_RELRO" в об'єкті.

max-page-size=значення
Встановіть для емуляції максимальний розмір сторінки значення.

common-page-size=значення
Встановіть загальний розмір сторінки емуляції значення.

розмір стека=значення
Вкажіть розмір стека в сегменті ELF "PT_GNU_STACK". Вказати нульову волю
замінити будь-яке створення сегмента "PT_GNU_STACK" ненульового розміру за замовчуванням.

bndplt
Завжди генеруйте префікс BND у записах PLT. Підтримується для Linux/x86_64.

noextern-protected-data
Не розглядайте захищений символ даних як зовнішній під час створення спільної бібліотеки. Це
опція замінює серверну частину компонувальника за замовчуванням. Його можна використовувати для обходу помилки
переміщення проти захищених символів даних, згенерованих компілятором. Оновлення ввімкнено
захищені символи даних іншим модулем не видимі для отриманого спільного доступу
бібліотека. Підтримується для i386 і x86-64.

call-nop=prefix-addr
call-nop=префікс-nop
call-nop=суфікс-nop
call-nop=префікс-байт
call-nop=суфікс-байт
Вкажіть 1-байтове заповнення "NOP" під час перетворення непрямого виклику на локальний
визначена функція, foo, через її слот GOT. call-nop=prefix-addr генерує «0x67
зателефонуйте foo". call-nop=префікс-nop генерує "0x90 виклик foo". call-nop=суфікс-nop
генерує «виклик foo 0x90». call-nop=префікс-байт генерує "байт call фу".
call-nop=суфікс-байт генерує «виклик foo байт". Підтримується для i386 і x86_64.

Інші ключові слова ігноруються для сумісності Solaris.

-( архів -)
--стартова група архів --кінцева група
Команда архів має бути список архівних файлів. Вони можуть бути або явними файлами
імена, або -l Варіанти.

Зазначені архіви шукаються повторно, доки не буде нових невизначених посилань
створено. Зазвичай пошук в архіві виконується лише один раз у тому порядку, який він вказано
в командному рядку. Якщо символ у цьому архіві потрібен для вирішення невизначеного
символ, на який посилається об'єкт в архіві, який з'являється пізніше в командному рядку,
компонувальник не зможе вирішити це посилання. Групуючи архіви,
усі вони шукатимуться повторно, доки не будуть вирішені всі можливі посилання.

Використання цієї опції має значні витрати на продуктивність. Найкраще використовувати його тільки тоді, коли
є неминучі кругові посилання між двома чи більше архівами.

--accept-unknown-input-arch
--no-accept-unknown-input-arch
Вказує компоновщику прийняти вхідні файли, архітектуру яких неможливо розпізнати. The
Припущення полягає в тому, що користувач знає, що він робить, і свідомо хоче встановити посилання
у цих невідомих вхідних файлах. Раніше це була поведінка компонувальника за замовчуванням
випуск 2.14. Поведінка за замовчуванням, починаючи з версії 2.14, полягає в відхиленні такого введення
файли, і так --accept-unknown-input-arch була додана опція відновлення старої
поведінка.

--в міру необхідності
--не-як-потрібно
Цей параметр впливає на теги ELF DT_NEEDED для динамічних бібліотек, згаданих у команді
рядок після --в міру необхідності варіант. Зазвичай компонувальник додає тег DT_NEEDED для
кожна динамічна бібліотека, згадана в командному рядку, незалежно від того, чи є бібліотека
насправді потрібно чи ні. --в міру необхідності викликає тег DT_NEEDED тільки для
бібліотека, що at Що точка in link задовольняє неслабий невизначений символ
посилання зі звичайного об’єктного файлу або, якщо бібліотека не знайдена в DT_NEEDED
списки інших необхідних бібліотек, посилання на неслабий невизначений символ з іншого
потрібна динамічна бібліотека. Об’єктні файли або бібліотеки, які з’являються в командному рядку після
бібліотека, про яку йдеться, не впливає на те, чи розглядається бібліотека як потрібна. Це
схожі на правила вилучення об'єктних файлів з архівів. --не-як-потрібно
відновлює поведінку за замовчуванням.

--додати-потрібно
--не-додавати-потрібно
Ці два варіанти застаріли через схожість їхніх назв із
--в міру необхідності та --не-як-потрібно варіанти. Їх замінили на
--copy-dt-needed-entries та --no-copy-dt-needed-entries.

-стверджувати ключове слово
Цей параметр ігнорується для сумісності з SunOS.

-Бдинамічний
-ди
-виклик_спільний
Посилання на динамічні бібліотеки. Це має сенс лише на платформах, для яких спільне використання
бібліотеки підтримуються. Ця опція зазвичай є стандартною на таких платформах. The
різні варіанти цієї опції призначені для сумісності з різними системами. Ви можете
використовуйте цю опцію кілька разів у командному рядку: це впливає на пошук у бібліотеці
-l наступні варіанти.

-Bгрупа
Встановіть прапор «DF_1_GROUP» у записі «DT_FLAGS_1» у динамічному розділі. Це
змушує компонувальник часу виконання обробляти пошуки в цьому об’єкті та його залежності
виконується тільки всередині групи. --unresolved-symbols=звітувати про все мається на увазі. Це
Опція має значення лише на платформах ELF, які підтримують спільні бібліотеки.

-Бстатичний
-дн
-не_спільний
-статичний
Не створюйте посилання на спільні бібліотеки. Це має сенс лише на платформах, для яких
підтримуються спільні бібліотеки. Різні варіанти цього варіанту призначені для
сумісність з різними системами. Ви можете використовувати цю опцію кілька разів на
командний рядок: це впливає на пошук бібліотеки -l наступні варіанти. Це
варіант також передбачає --unresolved-symbols=звітувати про все. Цей параметр можна використовувати з
- поділилися. Це означає, що спільна бібліотека створюється, але все
Зовнішні посилання бібліотеки повинні бути вирішені шляхом витягування записів зі static
бібліотеки.

-Бсимволічний
При створенні спільної бібліотеки прив’яжіть посилання на глобальні символи до визначення
у спільній бібліотеці, якщо є. Зазвичай це можливо для пов’язаної програми
проти спільної бібліотеки, щоб замінити визначення в спільній бібліотеці. Це
опцію також можна використовувати з --експортно-динамічний варіант, при створенні позиції
незалежний виконуваний файл, щоб прив'язати посилання на глобальні символи до визначення всередині
виконуваний файл. Ця опція має значення лише на платформах ELF, які підтримують спільний доступ
бібліотеки та незалежні від позицій виконувані файли.

-Бсимволічні-функції
При створенні спільної бібліотеки прив’яжіть посилання на символи глобальних функцій до
визначення в спільній бібліотеці, якщо є. Цей параметр також можна використовувати з
--експортно-динамічний можливість прив’язування при створенні виконуваного файлу, незалежного від позиції
посилання на символи глобальних функцій на визначення у виконуваному файлі. Це
Опція має значення лише на платформах ELF, які підтримують спільні бібліотеки та позицію
незалежні виконувані файли.

--динамічний-список=динамічний-список-файл
Вкажіть ім'я файлу динамічного списку для компонувальника. Це зазвичай використовується, коли
створення спільних бібліотек для визначення списку глобальних символів, на які посилаються
не повинні бути прив’язані до визначення в спільній бібліотеці або створенні
динамічно зв'язані виконувані файли, щоб вказати список символів, до яких слід додати
таблицю символів у виконуваному файлі. Ця опція має значення лише на платформах ELF
які підтримують спільні бібліотеки.

Формат динамічного списку такий самий, як і вузол версії без області і вузла
ім'я. Побачити Версія для отримання додаткової інформації.

--динамічний-список-дані
Включіть усі глобальні символи даних до динамічного списку.

--динамічний-список-cpp-новий
Надайте вбудований динамічний список для оператора C++ new та delete. В основному це корисно
для створення спільного доступу libstdc++.

--dynamic-list-cpp-typeinfo
Надайте вбудований динамічний список для ідентифікації типу середовища виконання C++.

-- контрольні розділи
--без перевірок
Запитує лінкер НЕ щоб перевірити адреси розділів після того, як вони були призначені, щоб перевірити чи
є якісь перекриття. Зазвичай компонувальник виконує цю перевірку, і якщо він знайде
будь-які збіги видаватимуть відповідні повідомлення про помилку. Компонент знає про, і
робить припуски на розділи в накладках. Поведінку за замовчуванням можна відновити
за допомогою перемикача командного рядка -- контрольні розділи. Перекриття розділів зазвичай не відбувається
перевірено на наявність переміщуваних посилань. У цьому випадку ви можете примусити перевірку за допомогою
-- контрольні розділи варіант.

--copy-dt-needed-entries
--no-copy-dt-needed-entries
Цей параметр впливає на обробку динамічних бібліотек, на які посилаються теги DT_NEEDED
всередині Динамічні бібліотеки ELF, згадані в командному рядку. Зазвичай компонувальник не буде
додати тег DT_NEEDED до вихідного двійкового файлу для кожної бібліотеки, згаданої в тегу DT_NEEDED
у вхідній динамічній бібліотеці. З --copy-dt-needed-entries зазначено в команді
Однак будь-які динамічні бібліотеки, які слідують за ним, матимуть свої записи DT_NEEDED
додано. Поведінку за замовчуванням можна відновити за допомогою --no-copy-dt-needed-entries.

Цей параметр також впливає на роздільну здатність символів у динамічних бібліотеках.
з --copy-dt-needed-entries динамічні бібліотеки, згадані в командному рядку, будуть
здійснив рекурсивний пошук, слідуючи їхнім тегам DT_NEEDED до інших бібліотек, щоб
розв’язувати символи, необхідні вихідному двійковому файлу. Однак із налаштуванням за замовчуванням
пошук динамічних бібліотек, які слідують за ним, зупиниться з динамічною бібліотекою
себе. Жодні посилання DT_NEEDED не будуть проходити для розв’язання символів.

--креф
Вивести таблицю перехресних посилань. Якщо створюється файл карти компонування, хрест
довідкова таблиця друкується у файлі карти. В іншому випадку він друкується на стандарті
вихід.

Формат таблиці навмисно простий, тому її можна легко обробити
сценарій, якщо необхідно. Символи роздруковуються, відсортовані за назвою. Для кожного символу,
надається список імен файлів. Якщо символ визначено, першим у списку є файл
розташування визначення. Якщо символ визначено як загальне значення, то будь-які файли
де це відбувається з'явиться далі. Нарешті, будь-які файли, які посилаються на символ
перераховані

--no-define-common
Ця опція забороняє присвоєння адрес загальним символам. Сценарій
команда "INHIBIT_COMMON_ALLOCATION" має той самий ефект.

Команда --no-define-common Опція дозволяє відокремити рішення про призначення адрес
Загальні символи від вибору типу вихідного файлу; інакше не можна переміщувати
Тип виведення змушує призначати адреси загальним символам. Використання --no-define-common
дозволяє призначати загальні символи, на які посилаються зі спільної бібліотеки
адреси лише в основній програмі. Це усуває невикористаний дублюючий простір у файлі
спільною бібліотекою, а також запобігає будь-якій можливій плутанині щодо вирішення проблеми
дублюються, коли є багато динамічних модулів зі спеціалізованими шляхами пошуку для
роздільна здатність символів під час виконання.

--defsym=символ=вираз
Створіть глобальний символ у вихідному файлі, що містить абсолютну адресу, задану
вираз. Ви можете використовувати цю опцію стільки разів, скільки необхідно для визначення кількох
символи в командному рядку. Обмежена форма арифметики підтримується для
вираз у цьому контексті: ви можете вказати шістнадцяткову константу або ім'я an
існуючий символ або використовуйте «+» та «-», щоб додати або відняти шістнадцяткові константи або
символи. Якщо вам потрібні більш складні вирази, подумайте про використання команди компонувальника
мова з писемності. Примітка: між ними не повинно бути пробілів символ,
знак рівності ("="), і вираз.

--demangle[=стиль]
--не розбиратися
Ці параметри визначають, чи потрібно розбирати назви символів у повідомленнях про помилки та інших
вихід. Коли компонувальнику говорять деманглувати, він намагається представити назви символів у a
Читабельна мода: вона видаляє передні підкреслення, якщо вони використовуються об’єктним файлом
формат і перетворює спотворені назви символів C++ у імена, які можна читати користувачем. Інший
компілятори мають різні стилі маніпуляції. Необов’язковий аргумент стилю розбирання може
використовуватися для вибору відповідного стилю розбирання для вашого компілятора. Компонувальник буде
demangle за замовчуванням, якщо не змінна середовища COLLECT_NO_DEMANGLE встановлено. Ці
параметри можуть використовуватися, щоб замінити значення за замовчуванням.

-Iфайл
--dynamic-linker=файл
Встановіть назву динамічного компонувальника. Це має сенс лише під час генерації
динамічно зв'язані виконувані файли ELF. Зазвичай динамічний компонувальник за замовчуванням правильний;
не використовуйте це, якщо ви не знаєте, що робите.

--no-dynamic-linker
Під час створення виконуваного файлу пропустіть запит на використання динамічного компонувальника
час завантаження. Це має значення лише для виконуваних файлів ELF, які містять динамічні
переміщення, і зазвичай вимагає код точки входу, який може їх обробити
переїзди.

-- смертельні попередження
--без фатальних попереджень
Розглядайте всі попередження як помилки. Поведінку за замовчуванням можна відновити за допомогою параметра
--без фатальних попереджень.

--force-exe-суфікс
Переконайтеся, що вихідний файл має суфікс .exe.

Якщо успішно створений повністю пов’язаний вихідний файл не має «.exe» або «.dll»
суфікс, цей параметр змушує компонувальник скопіювати вихідний файл до одного з тим самим ім’ям
із суфіксом ".exe". Цей параметр корисний при використанні незмінених файлів make-файлів Unix на a
Хост Microsoft Windows, оскільки деякі версії Windows не запускатимуть образ, якщо він не буде
закінчується на суфікс ".exe".

--gc-секції
--no-gc-sections
Увімкнути збір сміття з невикористаних розділів введення. Це ігнорується на цілях, які це роблять
не підтримують цю опцію. Поведінка за замовчуванням (невиконання цього сміття
колекцію) можна відновити, вказавши --no-gc-sections в командному рядку. Примітка
що збір сміття для цільових форматів COFF і PE підтримується, але
реалізація на даний момент вважається експериментальною.

--gc-секції вирішує, які вхідні секції використовуються, досліджуючи символи і
переїзди. Розділ, що містить символ запису, і всі розділи, що містять
символи, невизначені в командному рядку, будуть збережені, як і розділи, що містять
символи, на які посилаються динамічні об'єкти. Зауважте, що під час створення спільних бібліотек
компонувальник повинен вважати, що посилається на будь-який видимий символ. Після цього початковий набір
розділів було визначено, компонувальник рекурсивно позначає будь-який розділ як використаний
на які посилаються їхні переміщення. Побачити --вхід та --невизначений.

Цю опцію можна встановити під час виконання часткового посилання (увімкнено за допомогою параметра -r). У цьому
Корінь символів, що зберігаються, має бути явно вказаний або за допомогою an --вхід or
--невизначений або за допомогою команди "ENTRY" у сценарії компоновника.

--print-gc-sections
--no-print-gc-sections
Перелік усіх розділів, видалених за допомогою збирання сміття. Перелік надруковано на stderr.
Ця опція ефективна, лише якщо збір сміття було ввімкнено через
--gc-секції) варіант. Поведінка за замовчуванням (не перераховувати розділи, які є
видалено) можна відновити, вказавши --no-print-gc-sections у командному рядку.

--формат друку-виведення
Надрукуйте назву вихідного формату за замовчуванням (можливо, під впливом іншого командного рядка
варіанти). Це рядок, який відображатиметься в сценарії компоновника "OUTPUT_FORMAT".
команда

--print-memory-usage
Надрукуйте використаний розмір, загальний розмір та використаний розмір областей пам’яті, створених за допомогою ПАМ'ЯТЬ
команда. Це корисно для вбудованих цілей для швидкого перегляду кількості безкоштовного
пам'ять. Формат виводу має один заголовок і один рядок на область. це є
як для читання, так і для легкого аналізу інструментами. Ось приклад виходу:

Використаний регіон пам'яті Розмір Розмір області %age Використано
ПЗУ: 256 КБ 1 МБ 25.00%
ОЗУ: 32 B 2 ГБ 0.00%

--допомога
Надрукуйте підсумок параметрів командного рядка на стандартному виводі та вийдіть.

-- target-help
Надрукуйте підсумок усіх цільових параметрів на стандартному виводі та вийдіть.

-Карта=файл карти
Роздрукуйте карту посилань на файл файл карти. Дивіться опис -M варіант, вище.

--не-зберігати-пам'ять
ld зазвичай оптимізує швидкість використання пам’яті, кешуючи таблиці символів
введення файлів у пам'ять. Цей варіант розповідає ld щоб замість цього оптимізувати використання пам’яті, шляхом
перечитування таблиць символів за потреби. Це може знадобитися, якщо ld закінчується
пам'яті під час підключення великого виконуваного файлу.

--no-nedefined
-z деф
Повідомляйте про невирішені посилання на символи зі звичайних об’єктних файлів. Це робиться, навіть якщо
компонувальник створює несимволічну спільну бібліотеку. Перемикач
--[no-]allow-shlib-undefined контролює поведінку звітів про невирішені проблеми
посилання, знайдені в спільних бібліотеках, на які пов’язані посилання.

--allow-multiple-definition
-z мульдефс
Зазвичай, коли символ визначається кілька разів, компонувальник повідомляє про фатальний результат
помилка. Ці параметри дозволяють використовувати декілька визначень, і буде використано перше визначення.

--allow-shlib-undefined
--no-allow-shlib-undefined
Дозволяє або забороняє невизначені символи в спільних бібліотеках. Цей перемикач схожий на
--no-nedefined за винятком того, що він визначає поведінку, коли є невизначені символи
у спільній бібліотеці, а не в звичайному об’єктному файлі. Це не впливає на те, як
невизначені символи в звичайних об’єктних файлах обробляються.

Поведінка за замовчуванням — повідомлення про помилки для будь-яких невизначених символів, на які посилаються
спільні бібліотеки, якщо компонувальник використовується для створення виконуваного файлу, але дозволяє
їх, якщо компонувальник використовується для створення спільної бібліотеки.

Причини дозволу невизначених посилань на символи в спільних бібліотеках вказані на сторінці
час посилання це:

· Спільна бібліотека, зазначена під час підключення, може відрізнятися від тієї, що є
доступний під час завантаження, тому символ може бути розв’язаний під час завантаження.

· Існують деякі операційні системи, наприклад BeOS і HPPA, де невизначені символи
спільні бібліотеки – це нормально.

Наприклад, ядро ​​BeOS виправляє спільні бібліотеки під час завантаження для вибору
яка функція є найбільш підходящою для поточної архітектури. Це
використовується, наприклад, для динамічного вибору відповідної функції memset.

--no-undefined-version
Зазвичай, коли символ має невизначену версію, компонувальник ігнорує його. Це
Опція забороняє символи з невизначеною версією, і буде видана фатальна помилка
замість цього.

--default-symver
Створіть і використовуйте версію символу за замовчуванням (sonname) для неверсійних експортованих символів.

--default-imported-symver
Створіть і використовуйте версію символу за замовчуванням (sonname) для імпортованих символів без версій.

--no-warn-mispar
Зазвичай ld видасть помилку, якщо ви спробуєте об’єднати вхідні файли
з якихось причин невідповідні, можливо, тому, що вони були зібрані для різних
процесори або для різних байтових рядків. Цей варіант розповідає ld що це повинно бути
мовчки допускати такі можливі помилки. Цей параметр слід використовувати тільки з обережністю, в
випадки, коли ви вжили певних спеціальних дій, які гарантують, що помилки компонувальника є
недоречно.

--no-warn-search-mispar
Зазвичай ld видасть попередження, якщо під час роботи бібліотеки знайде несумісну бібліотеку
пошук. Ця опція вимикає попередження.

--не-весь-архів
Вимкніть ефект --цілий архів опція для наступних архівних файлів.

--noinhibit-exec
Зберігайте виконуваний вихідний файл, коли він ще придатний для використання. Як правило, лінкер
не створить вихідний файл, якщо він зустріне помилки під час процесу посилання; це
виходить без запису вихідного файлу, якщо він видає будь-яку помилку.

-nostdlib
Шукайте лише каталоги бібліотек, явно вказані в командному рядку. Бібліотека
каталоги, зазначені в сценаріях компоновщика (включаючи сценарії компонувальника, зазначені на
командний рядок) ігноруються.

--oformat=вихідний формат
ld може бути налаштований на підтримку більш ніж одного типу об’єктних файлів. Якщо ти ld is
налаштований таким чином, ви можете використовувати --оформат можливість вказати двійковий формат для
вихідний об'єктний файл. Навіть тоді, коли ld налаштовано на підтримку альтернативного об’єкта
форматів, зазвичай не потрібно вказувати це, як ld має бути налаштований на виробництво
як формат виводу за замовчуванням, найбільш звичайний формат на кожній машині. вихідний формат це
текстовий рядок, назва певного формату, який підтримується бібліотеками BFD. (Ти можеш
перелік доступних двійкових форматів objdump -i.) Команда сценарію
"OUTPUT_FORMAT" також може вказати формат виведення, але цей параметр замінює його.

- пиріг
--pic-виконуваний файл
Створіть незалежний від позиції виконуваний файл. Наразі це підтримується лише на ELF
платформи. У цьому незалежні від позиції виконувані файли подібні до спільних бібліотек
вони переміщуються динамічним компонувальником на віртуальну адресу, яку вибирає ОС
їх (які можуть відрізнятися між викликами). Як і звичайні динамічно пов'язані виконувані файли
їх можна виконувати, а символи, визначені у виконуваному файлі, не можуть бути перевизначені
спільні бібліотеки.

-qmagic
Цей параметр ігнорується для сумісності з Linux.

- Qy Цей параметр ігнорується для сумісності SVR4.

-- розслабтеся
--не розслаблятися
Варіант із машинно-залежними ефектами. Ця опція підтримується лише в кількох
цілі.

На деяких платформах -- розслабтеся Опція виконує глобальну оптимізацію для конкретних цілей
які стають можливими, коли компонувальник вирішує адресацію в програмі, наприклад
розслаблення адресних режимів, синтез нових інструкцій, вибір коротшої версії
поточні інструкції та комбінування постійних значень.

На деяких платформах ці глобальні оптимізації часу зв’язку можуть призвести до символічного налагодження
отриманий виконуваний файл неможливий. Відомо, що це стосується Мацусіти
Сімейство процесорів MN10200 і MN10300.

На платформах, де це не підтримується, -- розслабтеся приймається, але ігнорується.

На майданчиках де -- розслабтеся прийнято варіант --не розслаблятися можна використовувати для відключення
функція.

--retain-symbols-file=ім'я файлу
Утримуйте тільки символи, перераховані у файлі ім'я файлу, відкидаючи всі інші. ім'я файлу
це просто плоский файл з одним ім'ям символу на рядок. Цей варіант особливо
корисно в середовищах (наприклад, VxWorks), де є велика глобальна таблиця символів
накопичується поступово, щоб зберегти пам'ять під час виконання.

--retain-symbols-file робить НЕ відкидати невизначені символи або символи, необхідні для
переїзди.

Ви можете лише вказати --retain-symbols-file один раз у командному рядку. Це перевизначає -s
та -S.

-rpath=реж
Додайте каталог до шляху пошуку бібліотеки часу виконання. Це використовується під час приєднання ELF
виконуваний із спільними об’єктами. всі -rpth аргументи об’єднуються і передаються до
компонувальник часу виконання, який використовує їх для пошуку спільних об’єктів під час виконання. The -rpth
Параметр також використовується під час пошуку спільних об'єктів, які потрібні спільним об'єктам
явно включено в посилання; дивіться опис -rpath-посилання варіант. Якщо
-rpth не використовується при зв'язуванні виконуваного файлу ELF, вмісту середовища
буде використовуватися змінна "LD_RUN_PATH", якщо вона визначена.

Команда -rpth опцію також можна використовувати на SunOS. За замовчуванням у SunOS компонувальник буде
сформуйте шлях пошуку під час виконання з усіх -L надаються варіанти. Якщо -rpth варіант
використовується, шлях пошуку під час виконання буде формуватися виключно за допомогою -rpth варіантів,
ігноруючи -L варіанти. Це може бути корисно під час використання gcc, який додає багато -L
параметри, які можуть бути у файлових системах, змонтованих NFS.

Для сумісності з іншими лінкерами ELF, якщо -R За параметром слід каталог
ім'я, а не ім'я файлу, воно розглядається як -rpth варіант.

-rpath-link=реж
При використанні ELF або SunOS для однієї спільної бібліотеки може знадобитися інша. Це відбувається, коли an
Посилання "ld -shared" включає спільну бібліотеку як один із вхідних файлів.

Коли компонувальник стикається з такою залежністю під час виконання не спільного, непереміщуваного
посилання, він автоматично спробує знайти необхідну спільну бібліотеку та включити її
у посиланні, якщо воно не включено явно. У такому випадку, -rpath-посилання варіант
визначає перший набір каталогів для пошуку. The -rpath-посилання параметр може вказати
послідовність імен каталогів шляхом вказівки списку імен, розділених символом
двокрапки або з’являтися кілька разів.

Цей параметр слід використовувати з обережністю, оскільки він замінює шлях пошуку, який може мати
був складно зібраний у спільну бібліотеку. В такому випадку можна скористатися
ненавмисно інший шлях пошуку, ніж компонувальник часу виконання.

Компонувальник використовує такі шляхи пошуку, щоб знайти необхідні спільні бібліотеки:

1. Будь-які каталоги, зазначені в -rpath-посилання Варіанти.

2. Будь-які каталоги, зазначені в -rpth варіанти. Різниця між -rpth та
-rpath-посилання це те, що каталоги, визначені за допомогою -rpth опції включені в
виконуваний і використовується під час виконання, тоді як файл -rpath-посилання варіант тільки ефективний
під час посилання. Пошук -rpth таким чином підтримується лише рідними компонувальниками та
крослінкери, налаштовані за допомогою --with-sysroot варіант.

3. У системі ELF, для власних компонувальників, якщо -rpth та -rpath-посилання варіанти були
не використовується, пошук у вмісті змінної середовища "LD_RUN_PATH".

4. На SunOS, якщо -rpth параметр не використовувався, шукайте будь-які вказані каталоги
використання -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" до всіх шаблонів розділу підстановки в
скрипт компоновщика.

--розбити на файл[=розмір]
Як і в --split-by-reloc але створює новий вихідний розділ для кожного вхідного файлу, коли
розмір досягнуто. розмір за замовчуванням розмір 1, якщо не вказано.

--split-by-reloc[=вважати]
Намагається створити додаткові розділи у вихідному файлі, щоб не було жодного вихідного розділу
файл містить більше ніж вважати переїзди. Це корисно при створенні величезних розмірів
переміщувані файли для завантаження в певні ядра реального часу з об’єктом COFF
формат файлу; оскільки COFF не може представляти більше 65535 переміщень за один раз
розділ. Зауважте, що це не працюватиме з форматами об’єктних файлів, які не працюють
підтримувати довільні розділи. Компонувальник не буде розбивати окремі секції введення
для перерозподілу, тому, якщо один вхідний розділ містить більше ніж вважати переїзди
один вихідний розділ міститиме стільки переміщень. вважати за замовчуванням має значення
32768.

--статистика
Обчислюйте та відображайте статистичні дані про роботу компонувальника, наприклад виконання
використання часу і пам'яті.

--sysroot=каталог
Скористайтесь каталог як розташування sysroot, замінюючи параметр configure-time за замовчуванням.
Цей параметр підтримується лише компонувальниками, які були налаштовані за допомогою --with-sysroot.

-- традиційний формат
Для деяких цілей вихід з ld в чомусь відрізняється від результатів деяких
існуючий лінкер. Цей перемикач запитує ld замість цього використовувати традиційний формат.

Наприклад, на SunOS, ld поєднує повторювані записи в таблиці рядків символів. Це
може зменшити розмір вихідного файлу з повною інформацією про налагодження більш ніж на 30
відсотків. На жаль, програма SunOS «dbx» не може прочитати отриману програму
("gdb" не має проблем). The -- традиційний формат перемикач розповідає ld не поєднувати
повторювані записи.

--section-start=назва розділу=org
Знайдіть розділ у вихідному файлі за абсолютною адресою, заданою org. Ви можете використовувати
цей параметр стільки разів, скільки необхідно, щоб знайти декілька розділів у команді
лінія. org має бути єдиним шістнадцятковим числом; для сумісності з іншими лінкерами,
Ви можете пропустити провідне 0x зазвичай асоціюється з шістнадцятковими значеннями. Примітка: там
між ними не повинно бути пробілів назва розділу, знак рівності ("="), і org.

-Tbss=org
-Tdata=org
-Ttext=org
Такий же, як --початок розділу, з ".bss", ".data" або ".text" як назва розділу.

-Ttext-segment=org
При створенні виконуваного файлу ELF він встановить адресу першого байту тексту
сегмент.

-Trodata-segment=org
При створенні виконуваного файлу ELF або спільного об’єкта для цілі, де дані лише для читання
знаходиться у власному сегменті, окремому від виконуваного тексту, він встановить адресу
перший байт сегмента даних лише для читання.

-Tldata-segment=org
Під час створення виконуваного файлу ELF або спільного об’єкта для моделі середньої пам’яті x86-64, це
встановить адресу першого байту сегмента ldata.

--unresolved-symbols=метод
Визначте, як обробляти нерозв’язані символи. Є чотири можливі значення для
метод:

ігнорувати-все
Не повідомляйте про невирішені символи.

звітувати-все
Повідомте про всі нерозв’язані символи. Це значення за замовчуванням.

ігнорувати в об’єктних файлах
Повідомляйте про нерозв’язані символи, які містяться в спільних бібліотеках, але ігноруйте їх
якщо вони походять із звичайних об’єктних файлів.

ignore-in-shared-libs
Повідомляйте про нерозв’язані символи, які надходять із звичайних об’єктних файлів, але ігноруйте їх, якщо
вони походять із спільних бібліотек. Це може бути корисно під час створення динаміки
binary і відомо, що всі спільні бібліотеки, на які він повинен посилатися
включені в командний рядок компонувальника.

Поведінку для спільних бібліотек самостійно також можна керувати
--[no-]allow-shlib-undefined варіант.

Зазвичай компонувальник генерує повідомлення про помилку для кожного повідомленого нерозв’язаного символу
але варіант --warn-unresolved-symbols можна змінити це на попередження.

--dll-подробно
--дослівно[=НОМЕР]
Відобразити номер версії для ld і перелік підтримуваних емуляцій компоновщика. Дисплей
які вхідні файли можна, а які не можна відкривати. Відобразити скрипт компонувальника, який використовується
лінкер. Якщо необов’язковий НОМЕР аргумент > 1, статус символу плагіна також буде
відображається.

--version-script=файл сценарію версії
Вкажіть назву сценарію версії для компонувальника. Це зазвичай використовується, коли
створення спільних бібліотек для вказівки додаткової інформації про версію
ієрархія для створюваної бібліотеки. Ця опція повністю підтримується лише на ELF
платформи, які підтримують спільні бібліотеки; побачити Версія. Частково підтримується на
Платформи PE, які можуть використовувати скрипти версій для фільтрації видимості символів під час автоматичного експорту
режим: будь-які позначені символи місцевий у версії скрипт не експортується.

--попередження-загальний
Попереджати, коли загальний символ поєднується з іншим загальним символом або із символом
визначення. Компонувальники Unix допускають цю дещо недбалу практику, але компонувальники на деяких
інші операційні системи цього не роблять. Цей параметр дозволяє знайти потенційні проблеми
від поєднання глобальних символів. На жаль, деякі бібліотеки C використовують цю практику, тому
ви можете отримати деякі попередження про символи в бібліотеках, а також у ваших програмах.

Існує три типи глобальних символів, проілюстровані тут прикладами C:

Int i = 1;
Визначення, яке міститься в розділі ініціалізованих даних вихідного файлу.

зовнішній Int i;
Невизначене посилання, яке не виділяє простір. Має бути або a
визначення або загальний символ для змінної десь.

Int i;
Звичайний символ. Якщо є лише (один або кілька) загальних символів для змінної,
він потрапляє в область неініціалізованих даних вихідного файлу. Компонувальник об’єднується
кілька загальних символів для однієї змінної в один символ. Якщо вони є
різних розмірів, він вибирає найбільший розмір. Компонувальник перетворює загальний символ
в оголошення, якщо є визначення тієї самої змінної.

Команда --попередження-загальний Опція може видавати п'ять видів попереджень. Кожне попередження складається з
пара рядків: перший описує щойно зустріний символ, а другий
описує попередній символ з такою ж назвою. Один або обидва
символи будуть загальним символом.

1. Перетворення загального символу на посилання, бо вже є визначення
для символу.

( ): попередження: поширене ` '
перевизначені за визначенням
( ): попередження: визначено тут

2. Перетворення загального символу на посилання, тому що пізніше визначення для
зустрічається символ. Це те саме, що й у попередньому випадку, за винятком того, що
символи зустрічаються в іншому порядку.

( ): попередження: визначення ` '
переважаючий загальний
( ): попередження: загальне тут

3. Об’єднання загального символу з попереднім загальним символом такого ж розміру.

( ): попередження: кілька загальних
з ` '
( ): попередження: попередній загальний тут

4. Об’єднання загального символу з попереднім більшим загальним символом.

( ): попередження: поширене ` '
замінюється більшим спільним
( ): попередження: тут більший загальний

5. Об’єднання загального символу з попереднім меншим загальним символом. Це те саме
як і в попередньому випадку, за винятком того, що символи зустрічаються в іншому випадку
порядку.

( ): попередження: поширене ` '
переважає менший загальний
( ): попередження: тут менший загальний

--warn-конструктори
Попереджати, якщо використовуються глобальні конструктори. Це корисно лише для кількох об’єктів
формати. Для таких форматів, як COFF або ELF, компонувальник не може виявити використання global
конструктори.

--warn-multiple-gp
Попереджає, якщо у вихідному файлі потрібні кілька значень глобальних покажчиків. Це тільки
має значення для певних процесорів, таких як Alpha. Зокрема, деякі процесори
помістіть великозначні константи в спеціальний розділ. Спеціальний реєстр (глобальний
покажчик) вказує на середину цього розділу, щоб можна було завантажити константи
ефективно через режим відносної адресації базового реєстру. Оскільки зміщення в базі-
регістр відносного режиму є фіксованим і відносно невеликим (наприклад, 16 біт), це обмежує
максимальний розмір постійного пулу. Таким чином, у великих програмах часто необхідно
використовувати кілька значень глобальних покажчиків, щоб мати можливість звертатися до всіх можливих
константи. Ця опція викликає попередження щоразу, коли виникає цей випадок.

-- попередити-один раз
Попередження лише один раз для кожного невизначеного символу, а не один раз для модуля, на який посилається
його.

--warn-section-align
Попереджати, якщо адреса вихідної секції змінена через вирівнювання. як правило,
вирівнювання буде встановлено розділом введення. Адреса буде змінено лише в тому випадку
не вказано прямо; тобто якщо команда «SECTIONS» не визначає початок
адреса розділу.

--warn-shared-textrel
Попереджати, якщо компонувальник додає DT_TEXTREL до спільного об’єкта.

--warn-alternate-em
Попереджати, якщо об’єкт має альтернативний машинний код ELF.

--warn-unresolved-symbols
Якщо компонувальник збирається повідомити про невирішений символ (див. параметр
--невирішені-символи) зазвичай генерує помилку. Цей варіант робить це
натомість створити попередження.

--error-unresolved-symbols
Це відновлює поведінку компонувальника за замовчуванням щодо створення помилок під час звітування
нерозв'язані символи.

--цілий архів
Для кожного архіву, згаданого в командному рядку після --цілий архів варіант
включити кожен об’єктний файл в архів у посилання, а не шукати
архів для необхідних об’єктних файлів. Зазвичай це використовується для перетворення файлу архіву
у спільну бібліотеку, змушуючи кожен об’єкт включатися в результуючу спільну бібліотеку
бібліотека. Цей параметр можна використовувати більше одного разу.

Дві примітки під час використання цієї опції від gcc: по-перше, gcc не знає про цю опцію,
так що потрібно використовувати -Вл,-цілий-архів. По-друге, не забувайте використовувати
-Вл,-ні-весь-архів після вашого списку архівів, оскільки gcc додасть власний список
архівів на ваше посилання, і ви не хочете, щоб цей прапор також впливав на них.

--wrap=символ
Використовуйте функцію обгортки для символ. Будь-яке невизначене посилання на символ буде вирішено
загортати_символ". Будь-яке невизначене посилання на "__real_символ" буде вирішено
символ.

Це можна використовувати для надання обгортки для системної функції. Функція обгортки
має називатися "__wrap_символ". Якщо він бажає викликати системну функцію, він повинен
зателефонуйте "__real_символ".

Ось тривіальний приклад:

пустота *
__wrap_malloc (size_t c)
{
printf ("malloc викликаний за допомогою %zu\n", c);
повернути __real_malloc (c);
}

Якщо ви пов’язуєте інший код з цим файлом за допомогою --загорнути Танос, потім усі виклики до "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".

--no-ld-generated-unwind-info
Запит на створення інформації розгортання ".eh_frame" для розділів коду, згенерованого компонувальником, наприклад
PLT. Цей параметр увімкнено за замовчуванням, якщо підтримується інформація про розгортання, створена компонувальником.

--enable-new-dtags
--disable-new-dtags
Цей компонувальник може створювати нові динамічні теги в ELF. Але старі системи ELF можуть ні
зрозуміти їх. Якщо ви вкажете --enable-new-dtags, нові динамічні теги будуть
створені за потреби, а старіші динамічні теги будуть опущені. Якщо ви вкажете
--disable-new-dtags, нові динамічні теги не створюватимуться. За замовчуванням новий динамічний
теги не створюються. Зауважте, що ці параметри доступні лише для систем ELF.

--hash-size=номер
Встановіть за замовчуванням розмір хеш-таблиць компонувальника на просте число, близьке до номер.
Збільшення цього значення може скоротити час, який потрібен компоновщику, щоб виконати його
завдань, за рахунок збільшення вимог до пам'яті компонувальника. Аналогічно
зменшення цього значення може зменшити вимоги до пам'яті за рахунок швидкості.

--hash-style=стиль
Встановіть тип хеш-таблиці(-й) компонувальника. стиль може бути або "sysv" для класичного ELF
Розділ ".hash", "gnu" для нового стилю GNU Розділ ".gnu.hash" або "обидва" для обох
класичні хеш-таблиці ELF ".hash" і новий стиль GNU ".gnu.hash". За замовчуванням — «sysv».

--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
На платформах ELF ці параметри контролюють, як стискаються розділи налагодження DWARF
zlib. --compress-debug-sections=none не стискає розділи налагодження DWARF.
--compress-debug-sections=zlib-gnu стискає розділи налагодження DWARF та перейменовує debug
назви розділів для початку .zdebug замість .відлагоджувати. --compress-debug-sections=zlib
та --compress-debug-sections=zlib-gabi стиснути розділи налагодження DWARF за допомогою
SHF_COMPRESSED від ELF ABI. Поведінка за замовчуванням залежить від
задіяна ціль та параметри конфігурації, що використовуються для створення ланцюжка інструментів. За замовчуванням
можна визначити, перевіривши вихідні дані компоновщика --допомога варіант.

--зменшити накладні витрати на пам'ять
Ця опція зменшує вимоги до пам’яті під час виконання ld за рахунок зв’язування
швидкість. Це було введено для вибору старого алгоритму O(n^2) для файлу карти посилань
покоління, а не новий алгоритм O(n), який використовує приблизно на 40% більше пам’яті для
зберігання символів.

Іншим ефектом перемикання є встановлення розміру хеш-таблиці за замовчуванням на 1021, що
знову економить пам'ять ціною подовження часу роботи компоновщика. Цього не робиться
однак, якщо --розмір хеша перемикач був використаний.

Команда --зменшити накладні витрати на пам'ять перемикач також може використовуватися для включення інших компромісів
майбутні версії компонувальника.

--build-id
--build-id=стиль
Запит на створення розділу нотаток ELF ".note.gnu.build-id" або COFF ".buildid"
розділ. Вміст нотатки є унікальними бітами, що ідентифікують цей пов’язаний файл.
стиль може бути "uuid" для використання 128 випадкових бітів, "sha1" для використання 160-бітового хешу SHA1 на
нормативні частини вихідного вмісту, "md5", щоб використовувати 128-бітовий хеш MD5 на
нормативні частини вихідного вмісту, або «0xшістнадцятковий рядок" використовувати вибраний бітовий рядок
задано у вигляді парної кількості шістнадцяткових цифр (символи "-" і ":" між ними
пари цифр ігноруються). Якщо стиль опускається, використовується "sha1".

Стилі "md5" і "sha1" створюють ідентифікатор, який завжди однаковий у файлі
ідентичний вихідний файл, але буде унікальним серед усіх неідентичних вихідних файлів. це є
не призначено для порівняння як контрольної суми для вмісту файлу. Пов’язаний файл може
пізніше буде змінено іншими інструментами, але бітовий рядок ідентифікатора збірки ідентифікує оригінал
пов’язаний файл не змінюється.

Передача "none" for стиль вимикає налаштування з будь-яких параметрів "--build-id" раніше
командний рядок.

Компонувальник i386 PE підтримує - поділилися опція, яка призводить до того, що вихідним буде a
динамічно підключена бібліотека (DLL) замість звичайного виконуваного файлу. Ви повинні назвати
вивести "*.dll", коли ви використовуєте цю опцію. Крім того, компонувальник повністю підтримує
стандартні файли "*.def", які можуть бути вказані в командному рядку компонувальника як об'єкт
файл (насправді він повинен передувати архівам, з яких експортує символи, щоб гарантувати, що вони отримують
пов’язаний, як звичайний об’єктний файл).

На додаток до параметрів, загальних для всіх цілей, компоновщик i386 PE підтримує додаткові
параметри командного рядка, специфічні для цілі i386 PE. Опції, які приймають значення
можуть бути відокремлені від їх значень пробілом або знаком рівності.

--add-stdcall-alias
Якщо вказано, символи із суфіксом stdcall (@nn) буде експортовано як є, а також з
суфікс позбавлений. [Цей параметр стосується цільового порту i386 PE компоновщика]

--базовий файл файл
Скористайтесь файл як ім'я файлу, в якому зберігаються базові адреси всіх
переміщення, необхідні для створення DLL з dlltool. [Це спеціальний i386 PE
варіант]

--dll
Створіть DLL замість звичайного виконуваного файлу. Ви також можете використовувати - поділилися або вкажіть а
"БІБЛІОТЕКА" у заданому файлі ".def". [Цей параметр є специфічним для цільового i386 PE
порт компонувальника]

--enable-long-section-names
--disable-long-section-names
Варіанти PE об’єктного формату COFF додають розширення, яке дозволяє використовувати
назви розділів довші за вісім символів, нормальне обмеження для COFF. За замовчуванням,
ці імена дозволені лише в об'єктних файлах, оскільки повнозв'язані виконувані образи цього не роблять
нести таблицю рядків COFF, необхідну для підтримки довших імен. Як розширення GNU,
можна також дозволити їх використання у виконуваних образах або (ймовірно
безглуздо!) заборонити його в об'єктних файлах, використовуючи ці два параметри. Виконуваний
зображення, створені за допомогою цих довгих імен розділів, є дещо нестандартними, несучи як
вони створюють таблицю рядків і можуть генерувати заплутаний висновок при перевірці з не-GNU
Інструменти з підтримкою 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 лінкера]

--провідний-підкреслення
--no-leading-underwear
Для більшості цілей символ-префікс за замовчуванням є символом підкреслення і визначається в цільовому
опис. За допомогою цієї опції можна вимкнути/ввімкнути символ підкреслення за замовчуванням
символ-префікс.

--експортувати всі символи
Якщо вказано, усі глобальні символи в об’єктах, які використовуються для створення 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: "_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
порт компонувальника]

--exclude-symbols символ,символ, ...
Визначає список символів, які не слід автоматично експортувати. Символ
імена можуть бути розділені комами або двокрапками. [Цей параметр є специфічним для i386 PE
цільовий порт компонувальника]

--виключити-всі-символи
Вказує, що символи не повинні експортуватися автоматично. [Цей параметр стосується
цільовий порт i386 PE лінкера]

--вирівнювання файлів
Вкажіть вирівнювання файлу. Розділи у файлі завжди починатимуться зі зміщення файлу
які кратні цьому числу. За замовчуванням встановлено значення 512. [Цей параметр є конкретним
до цільового порту i386 PE компоновщика]

-- купа резерв
-- купа резерв,commit
Вкажіть кількість байтів пам’яті, яку потрібно зарезервувати (і, за бажанням, зафіксувати) для використання
купа для цієї програми. За замовчуванням зарезервовано 1 МБ, закріплено 4K. [Цей варіант є
специфічний для цільового порту i386 PE компоновщика]

--база зображення значення
Скористайтесь значення як базову адресу вашої програми або dll. Це найнижча пам'ять
розташування, яке буде використовуватися під час завантаження вашої програми або dll. Щоб зменшити потребу в
перемістіть і підвищте продуктивність ваших DLL, кожна з них повинна мати унікальну базову адресу
і не перекривати жодних інших dll. За замовчуванням для виконуваних файлів і
0x10000000 для dll. [Цей параметр стосується цільового порту i386 PE
лінкер]

--убити
Якщо вказано, суфікси stdcall (@nn) буде видалено з символів до того, як вони з’являться
експортується. [Цей параметр стосується цільового порту i386 PE компоновщика]

--з урахуванням великих адрес
Якщо вказано, то встановлюється відповідний біт у полі «Характеристики» заголовка COFF
щоб вказати, що цей виконуваний файл підтримує віртуальні адреси більше ніж 2 гігабайти.
Це слід використовувати разом з /3GB або /USERVA=значення переключаються мегабайти
розділ «[операційні системи]» BOOT.INI. Інакше цей біт не матиме ніякого ефекту.
[Цей параметр є специфічним для PE-орієнтованих портів компонувальника]

--disable-large-address-aware
Скасує дію попереднього --з урахуванням великих адрес варіант. Це корисно, якщо
--з урахуванням великих адрес завжди встановлюється драйвером компілятора (наприклад, Cygwin gcc) і
виконуваний файл не підтримує віртуальні адреси, розмір яких перевищує 2 гігабайти. [Цей варіант
є специфічним для PE цільових портів компонувальника]

--maor-image-version значення
Встановлює основний номер «версії зображення». За замовчуванням 1. [Цей параметр є
специфічний для цільового порту i386 PE компоновщика]

--major-os-version значення
Встановлює основний номер "версії ОС". За замовчуванням 4. [Цей параметр є конкретним
до цільового порту i386 PE компоновщика]

--maor-subsystem-version значення
Встановлює основний номер «версії підсистеми». За замовчуванням 4. [Цей параметр є
специфічний для цільового порту i386 PE компоновщика]

--mior-image-version значення
Встановлює підрядний номер «версії зображення». За замовчуванням 0. [Цей параметр є
специфічний для цільового порту i386 PE компоновщика]

--minor-os-version значення
Встановлює підрядний номер «версії ОС». За замовчуванням 0. [Цей параметр є конкретним
до цільового порту i386 PE компоновщика]

--мінорна-підсистемна-версія значення
Встановлює менший номер «версії підсистеми». За замовчуванням 0. [Цей параметр є
специфічний для цільового порту i386 PE компоновщика]

--output-def файл
Компонувальник створить файл файл який міститиме файл DEF, відповідний
DLL, який створює компонувальник. Цей файл DEF (який має називатися "*.def") може
використовуватися для створення бібліотеки імпорту за допомогою "dlltool" або як посилання на
автоматично або неявно експортовані символи. [Цей параметр є специфічним для i386 PE
цільовий порт компонувальника]

--out-implib файл
Компонувальник створить файл файл яка міститиме бібліотеку імпорту, відповідну до
DLL, який створює компонувальник. Ця імпортована бібліотека (яку слід називати "*.dll.a" або
"*.a" може використовуватися для зв'язування клієнтів із згенерованою DLL; ця поведінка робить це
можна пропустити окремий крок створення бібліотеки імпорту "dlltool". [Цей варіант є
специфічний для цільового порту i386 PE компоновщика]

--enable-auto-image-base
--enable-auto-image-base=значення
Автоматично вибирати базу образів для DLL, за бажанням починаючи з бази значення,
якщо не вказано за допомогою аргументу «--image-base». За допомогою створеного хешу
з dllname для створення унікальних основ образів для кожної DLL, колізій у пам’яті та
уникати переміщень, які можуть затримати виконання програми. [Цей варіант специфічний
до цільового порту i386 PE компоновщика]

--disable-auto-image-base
Не створюйте автоматично унікальну базу зображень. Якщо не вказано користувачем
image base ("--image-base"), потім використовуйте платформу за замовчуванням. [Цей варіант специфічний
до цільового порту i386 PE компоновщика]

--dll-префікс-пошуку рядок
Під час динамічного посилання на dll без бібліотеки імпорту знайдіть
" .dll" замість "lib .dll". Така поведінка дозволяє
легко розрізняти DLL, створені для різних «підплатформ»: native, cygwin,
uwin, pw тощо. Наприклад, cygwin DLL зазвичай використовують "--dll-search-prefix=cyg".
[Цей параметр стосується цільового порту i386 PE компоновщика]

--enable-auto-import
Виконайте складні зв’язки "_symbol" з "__imp__symbol" для імпорту ДАНИХ із DLL,
і створювати необхідні thunking символи під час створення бібліотек імпорту
ці експортовані дані. Примітка. Використання розширення «автоматичний імпорт» призведе до появи тексту
розділ файлу зображення, який можна зробити доступним для запису. Це не відповідає PE-COFF
специфікація формату, опублікована Microsoft.

Примітка. Використання розширення «автоматичний імпорт» також призведе до даних лише для читання
зазвичай розміщується в розділі .rdata, щоб розміщуватись у розділі .data
замість цього. Це для того, щоб обійти описану проблему з константами
тут: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html

Використання «автоматичного імпорту» зазвичай «просто працює», але іноді ви можете побачити це
повідомлення:

"змінну " " не можна імпортувати автоматично. Будь ласка, прочитайте документацію для ld
"--enable-auto-import" для отримання детальної інформації."

Це повідомлення з’являється, коли деякий (під)вираз звертається до адреси, яку в кінцевому підсумку дає
сума двох констант (таблиці імпорту Win32 дозволяють лише одну). Випадки, коли це
може відбутися включати доступ до полів-членів змінних структури, імпортованих з DLL,
а також використання постійного індексу в змінній масиву, імпортованої з DLL. Будь-який
багатослівна змінна (масиви, структури, long long тощо) може викликати цю помилку.
Однак, незалежно від точного типу даних експортованої змінної-порушника, ld буде
завжди виявляти його, видати попередження та вийти.

Існує кілька способів вирішення цієї проблеми, незалежно від типу даних
експортована змінна:

Одним із способів є використання перемикача --enable-runtime-pseudo-reloc. Це залишає завдання
коригування посилань у вашому клієнтському коді для середовища виконання, тому цей метод працює
тільки якщо середовище виконання підтримує цю функцію.

Друге рішення полягає в тому, щоб змусити одну з «констант» бути змінною, тобто
невідомі та не оптимізовані під час компіляції. Для масивів є дві можливості:
а) зробити індексатора (адресу масиву) змінною, або б) зробити індекс "постійний"
змінна. Таким чином:

зовнішній тип extern_array[];
зовнішній_масив[1] -->
{ volatile type *t=extern_array; t[1]}

or

зовнішній тип extern_array[];
зовнішній_масив[1] -->
{ volatile int t=1; зовнішній_масив[t] }

Для структур (та більшості інших багатослівних типів даних) єдиним варіантом є створення
сама структура (або long long, або ...) змінна:

extern struct s extern_struct;
extern_struct.field -->
{ volatile struct s *t=&extern_struct; t->поле }

or

extern довгий довгий extern_ll;
extern_ll -->
{ volatile long long * local_ll=&extern_ll; *local_ll }

Третій спосіб вирішення цієї проблеми полягає в тому, щоб відмовитися від «автоматичного імпорту».
образливий символ і позначте його "__declspec(dllimport)". Проте на практиці це
вимагає використання #defines часу компіляції, щоб вказати, чи створюєте ви DLL,
створення клієнтського коду, який буде посилатися на DLL, або просто створення/посилання на статичний
бібліотека. Здійснюючи вибір між різними методами вирішення 'прямого
Вирішуючи проблему з постійним зміщенням, слід розглянути типове використання в реальному світі:

Оригінал:

--foo.h
extern int arr[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
printf("%d\n",arr[1]);
}

Рішення 1:

--foo.h
extern int arr[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
/* Це обхідне рішення для win32 та cygwin; не "оптимізувати" */
volatile int *parr = arr;
printf("%d\n",parr[1]);
}

Рішення 2:

--foo.h
/* Примітка: передбачається автоматичний експорт (без __declspec(dllexport)) */
#if (визначено(_WIN32) || визначено(__CYGWIN__)) && \
!(визначено(FOO_BUILD_DLL) || визначено(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#else
#define FOO_IMPORT
#endif
зовнішній FOO_IMPORT int arr[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
printf("%d\n",arr[1]);
}

Четвертий спосіб уникнути цієї проблеми - перекодувати бібліотеку для використання функціоналу
інтерфейс, а не інтерфейс даних для змінних-порушників (наприклад set_foo() та
get_foo() функції доступу). [Цей параметр стосується цільового порту i386 PE
лінкера]

--disable-auto-import
Не намагайтеся зробити складні зв’язки "_symbol" з "__imp__symbol" для DATA
імпорт із DLL. [Цей параметр стосується цільового порту i386 PE
лінкер]

--enable-runtime-pseudo-reloc
Якщо ваш код містить вирази, описані в розділі --enable-auto-import, тобто
Імпорт DATA з DLL з ненульовим зміщенням, цей перемикач створить вектор
"псевдопереміщення під час виконання", яке може використовуватися середовищем виконання для налаштування
посилання на такі дані у вашому клієнтському коді. [Цей параметр є специфічним для i386 PE
цільовий порт компонувальника]

--disable-runtime-pseudo-reloc
Не створюйте псевдопереміщення для імпорту DATA з ненульовим зміщенням із DLL. [Це
параметр є специфічним для цільового порту i386 PE компоновщика]

--enable-extra-pe-debug
Показати додаткову інформацію про налагодження, пов’язану з автоматичним імпортом символів. [Цей варіант є
специфічний для цільового порту i386 PE компоновщика]

--вирівнювання розділів
Встановлює вирівнювання розділу. Розділи в пам'яті завжди починатимуться з адрес, які
кратні цьому числу. За замовчуванням 0x1000. [Цей параметр є специфічним для
i386 PE цільовий порт компонувальника]

--стек резерв
--стек резерв,commit
Вкажіть кількість байтів пам’яті, яку потрібно зарезервувати (і, за бажанням, зафіксувати) для використання
стек для цієї програми. За замовчуванням зарезервовано 2 МБ, закріплено 4K. [Цей варіант є
специфічний для цільового порту i386 PE компоновщика]

--підсистема який
--підсистема який:основний
--підсистема який:основний.незначний
Вказує підсистему, під якою буде виконуватися ваша програма. Правові цінності для
який є "рідний", "windows", "консоль", "posix" і "xbox". Ви можете за бажанням встановити
також версія підсистеми. Числові значення також приймаються для який. [Цей варіант
є специфічним для цільового порту i386 PE компоновщика]

Наступні параметри встановлюють прапорці в полі «DllCharacteristics» файлу PE
заголовок: [Ці параметри специфічні для PE-орієнтованих портів компонувальника]

--висока ентропія-ва
Зображення сумісне з рандомізацією макета 64-бітного адресного простору (ASLR).

--динамічна база
Базова адреса зображення може бути переміщена за допомогою рандомізації макета адресного простору
(ASLR). Ця функція була представлена ​​в MS Windows Vista для цільових пристроїв i386 PE.

--forceinteg
Перевірка цілісності коду виконується.

--nxcompat
Зображення сумісне із Запобіганням виконання даних. Ця особливість була
представлено з MS Windows XP SP2 для цільових пристроїв i386 PE.

--без ізоляції
Хоча зображення розуміє ізоляцію, не ізолюйте зображення.

--ні-сех
Зображення не використовує SEH. Жоден обробник SE не може бути викликаний з цього зображення.

--без прив'язки
Не перев'язуйте це зображення.

--wdmdriver
Драйвер використовує модель драйвера MS Windows.

--tsaware
Зображення знає сервер терміналів.

--insert-timestamp
--no-insert-timestamp
Вставте реальну позначку часу в зображення. Це поведінка за замовчуванням, оскільки вона відповідає
застарілий код, а це означає, що зображення буде працювати з іншими, власними інструментами. The
Проблема з цим за замовчуванням полягає в тому, що це призведе до дещо інших зображень
створюється щоразу, коли пов’язуються одні й ті самі джерела. Варіант --no-insert-timestamp може
використовуватися для вставки нульового значення для позначки часу, що забезпечує створення двійкових файлів
з ідентичних джерел порівнюватиме однаково.

Ціль C6X uClinux використовує двійковий формат під назвою DSBT для підтримки спільних бібліотек. Кожен
спільна бібліотека в системі повинна мати унікальний індекс; всі виконувані файли використовують індекс
0.

--dsbt-size розмір
Цей параметр встановлює кількість записів у DSBT поточного виконуваного або спільного файлу
бібліотека до розмір. За замовчуванням створюється таблиця з 64 записами.

--dsbt-індекс індекс
Цей параметр встановлює індекс DSBT поточного виконуваного файлу або спільної бібліотеки індекс.
За замовчуванням встановлено значення 0, що підходить для створення виконуваних файлів. Якщо спільний
бібліотека генерується з індексом DSBT 0, переміщення "R_C6000_DSBT_INDEX"
скопійовано у вихідний файл.

Команда --no-merge-exidx-entries switch вимикає об’єднання сусідніх записів exidx в
інформація про розгортання кадру.

Компоновщики 68HC11 і 68HC12 підтримують певні параметри керування банком пам'яті
перемикання відображення та генерування коду батута.

--без батута
Цей параметр відключає створення батута. За замовчуванням батут є
генерується для кожної далекої функції, яка викликається за допомогою інструкції "jsr" (це
відбувається, коли береться вказівник на функцію far).

--банк-вікно ім'я
Ця опція вказує компонувальнику ім’я області пам’яті в ПАМ'ЯТЬ
специфікація, яка описує вікно банку пам'яті. Визначення такого регіону є
потім використовується компонувальником для обчислення сторінок і адрес у вікні пам'яті.

Наведені нижче параметри підтримуються для керування обробкою генерації GOT під час з’єднання для
68 тис. цілей.

--отримав=тип
Цей параметр повідомляє компоновщику, яку схему генерації GOT використовувати. тип має бути одним
of один, негативний, мультигот or мета. Для отримання додаткової інформації зверніться до розділу Інформація
та цінності ld.

Наступні параметри підтримуються для керування генерацією інструкцій microMIPS, коли
посилання для цілей MIPS.

--insn32
--no-insn32
Ці параметри керують вибором інструкцій microMIPS, які використовуються в коді, створеному
лінкер, наприклад, у PLT або заглушки відкладеного зв'язування, або в релаксації. Якщо
--insn32 використовується, то компонувальник використовує лише 32-бітове кодування інструкцій. За замовчуванням
або якщо --no-insn32 використовується, використовуються всі кодування інструкцій, включаючи 16-бітні
де можливо.

НАВКОЛИШНЄ СЕРЕДОВИЩЕ


Ви можете змінити поведінку ld зі змінними середовища "GNUTARGET",
"LDEMULATION" і "COLLECT_NO_DEMANGLE".

"GNUTARGET" визначає формат об'єкта вхідного файлу, якщо ви його не використовуєте -b (або його синонім
--формат). Його значення має бути одним із імен BFD для формату введення. Якщо немає
"GNUTARGET" в середовищі, ld використовує природний формат цілі. Якщо "GNUTARGET"
встановлено на "за замовчуванням", тоді BFD намагається знайти вхідний формат, досліджуючи двійковий файл
вхідні файли; цей метод часто вдається, але є потенційні неясності, оскільки є
не є методом гарантувати, що магічне число, яке використовується для визначення форматів об’єктних файлів, є таким
унікальний. Проте процедура конфігурації для BFD на кожній системі розміщує
звичайний формат для цієї системи першим у списку пошуку, тому неясності вирішені
на користь конвенції.

"LDEMULATION" визначає емуляцію за замовчуванням, якщо ви не використовуєте -m варіант.
емуляція може вплинути на різні аспекти поведінки компоновщика, зокрема на компонувальник за замовчуванням
сценарій. Ви можете перерахувати доступні емуляції за допомогою -багатослівний or -V варіанти. Якщо
-m опція не використовується, а змінна середовища "LDEMULATION" не визначена
емуляція за замовчуванням залежить від того, як був налаштований компонувальник.

Зазвичай компонувальник за замовчуванням розбирає символи. Однак, якщо
"COLLECT_NO_DEMANGLE" встановлено в середовищі, тоді він за замовчуванням не розбирається
символи. Ця змінна середовища використовується аналогічним чином компоновщиком "gcc".
програма обгортки. Значення за замовчуванням може бути змінено --демонтувати та --не розбиратися
Варіанти.

Використовуйте mips-linux-gnu-ld.bfd онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad