Skip to main content

Все о Linux / Unix Command: ld

#3. Пользователи, группы, права доступа / Linux (Июнь 2026)

#3. Пользователи, группы, права доступа / Linux (Июнь 2026)
Anonim

НАЗВАНИЕ

ld - Использование LD, компоновщик GNU

СИНТАКСИС

ld опции objfile …

ОПИСАНИЕ

л.д. объединяет ряд объектных и архивных файлов, переносит их данные и связывает ссылки на символы. Обычно последний шаг в составлении программы - запускл.д..

л.д. принимает файлы языка командного языка компоновщика, написанные в надмножестве синтаксиса командного языка интерфейса редактора AT & T, чтобы обеспечить явный и полный контроль над процессом компоновки.

Эта справочная страница не описывает командный язык; см.л.д. запись в «info» или руководство ld: GNU linker, для получения полной информации о командном языке и других аспектах компоновщика GNU.

Эта версиял.д. использует библиотеки BFD общего назначения для работы с объектными файлами. Это позволяетл.д. читать, комбинировать и записывать объектные файлы в разных форматах - например, COFF или «a.out». Различные форматы могут быть связаны друг с другом для создания любого доступного типа объектного файла.

Помимо гибкости, GNU-компоновщик более полезен, чем другие линкеры в предоставлении диагностической информации. Многие линкеры отказываются от выполнения сразу после столкновения с ошибкой; когда возможно,л.д. продолжает выполнение, позволяя идентифицировать другие ошибки (или, в некоторых случаях, получить выходной файл, несмотря на ошибку).

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

ОПЦИИ

Компонент поддерживает множество параметров командной строки, но на практике немногие из них используются в любом конкретном контексте. Например, частое использованиел.д. является привязка стандартных объектных файлов Unix к стандартной поддерживаемой системе Unix. В такой системе, чтобы связать файл «hello.o»:

Я делаю /lib/crt0.o hello.o -lc

Это говоритл.д. для создания файла с именем выход в результате связывания файла «/lib/crt0.o» с «hello.o» и библиотеки «libc.a», которая будет поступать из стандартных каталогов поиска. (См. Обсуждение-l вариант ниже.)

Некоторые параметры командной строки длял.д. может быть задан в любой точке командной строки. Однако параметры, относящиеся к файлам, например,-l или же-T, чтобы файл читался в точке, в которой параметр появляется в командной строке, относительно объектных файлов и других параметров файла. Повторение нефайловых опций с другим аргументом либо не будет иметь никакого эффекта, либо отменяет предшествующие вхождения (те, которые находятся слева от командной строки) этого параметра. Параметры, которые могут быть осмысленно указаны более одного раза, отмечены в описаниях ниже.

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

Обычно компоновщик вызывается с хотя бы одним объектным файлом, но вы можете указать другие формы двоичных входных файлов, используя-l, , и командный язык сценария. Если нет двоичные входные файлы вообще указаны, компоновщик не производит никакого вывода и выдает сообщениеНет входных файлов.

Если компоновщик не может распознать формат объектного файла, он предположит, что это скрипт компоновщика. Сценарий, указанный таким образом, дополняет основной скрипт компоновщика, используемый для ссылки (либо скрипт компоновщика по умолчанию, либо тот, который указан с помощью-T). Эта функция позволяет компоновщику связываться с файлом, который является объектом или архивом, но на самом деле просто определяет некоторые значения символов или использует «INPUT» или «GROUP» для загрузки других объектов. Обратите внимание, что указание скрипта таким образом просто увеличивает основной скрипт компоновщика; использовать-T возможность полностью заменить сценарий компоновщика по умолчанию.

Для опций, имена которых являются одной буквой, аргументы опций должны либо следовать букве опций без промежуточных пробелов, либо присваиваться отдельным аргументам сразу после соответствующего им варианта.

Для опций, имена которых имеют несколько букв, перед именем опции может предшествовать одна тире или две; например,-trace-символ а также--trace-символ эквивалентны. Примечание. В этом правиле есть одно исключение. Множественные варианты букв, начинающиеся с нижнего регистра «o», могут быть пройдены двумя дефисами. Это должно уменьшить путаницу с вариант. Так, например,-omagic устанавливает имя выходного файламагия в то время как--omagic устанавливает флаг NMAGIC на выходе.

Аргументы для многобуквенных опций должны быть либо отделены от имени параметра значком равенства, либо быть предоставлены в виде отдельных аргументов сразу после соответствующего им варианта. Например,--trace-symbol foo а также--trace-символ = Foo эквивалентны. Принимаются уникальные сокращения имен многобуквенных опций.

Примечание. Если линкер ссылается косвенно, используя драйвер компилятора (например,НКУ), то все параметры командной строки компоновщика должны быть префиксны-Wl, (или что-то подходящее для конкретного драйвера компилятора) следующим образом:

gcc -Wl, - startgroup foo.o bar.o -Wl, - endgroup

Это важно, потому что в противном случае программа драйвера компилятора может бесшумно сбросить параметры компоновщика, что приведет к плохой ссылке.

Вот таблица общих ключей командной строки, принятых GNU-компоновщиком:

-a ключевое слово

Эта опция поддерживается для совместимости с HP / UX. ключевое слово аргумент должен быть одной из строкархив, общий, или жедефолт. -aarchive функционально эквивалентно-Bstatic, а два других ключевых слова функционально эквивалентны-Bdynamic, Эта опция может использоваться любое количество раз.

архитектура

--Парковая = архитектура

В текущем выпускел.д., этот параметр полезен только для семейств архитектуры Intel 960. В этомл.д. конфигурации, архитектура аргумент идентифицирует конкретную архитектуру семейства 960, позволяя некоторые меры предосторожности и изменяя путь поиска архивной библиотеки.

Будущие выпускил.д. может поддерживать аналогичную функциональность для других семейств архитектуры.

-b Входной формат

--format = Входной формат

л.д. может быть настроен для поддержки более одного типа объектного файла. Если твойл.д. настроен таким образом, вы можете использовать-b возможность указать двоичный формат для входных объектных файлов, которые следуют этому параметру в командной строке. Даже когдал.д. настроен для поддержки альтернативных форматов объектов, вам обычно не нужно указывать это, посколькул.д. должен быть настроен так, чтобы в качестве формата ввода по умолчанию использовался наиболее обычный формат на каждой машине. Входной формат это текстовая строка, имя определенного формата, поддерживаемого библиотеками BFD. (Вы можете указать доступные бинарные форматы с помощьюobjdump -i.)

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

Формат по умолчанию берется из переменной окружения «GNUTARGET».

Вы также можете определить формат ввода из сценария, используя команду «TARGET»;

МРТ-commandfile

--mri-скрипт = МРТ-commandfile

Для совместимости с линкерами, произведенными с помощью МРТ,л.д. принимает файлы сценариев, написанные на альтернативном, ограниченном командном языке, описанном в разделе «Файлы сценариев MRI Compatible Script Files» документации GNU ld. Ввести файлы сценариев MRI с опцией; использовать-T возможность запуска скриптов компоновщика, написанных в универсальномл.д. скриптовый язык. Если МРТ-cmdfile не существует,л.д.ищет его в каталогах, указанных любым-L опции.

-d

-Округ Колумбия

-dp

Эти три варианта эквивалентны; поддерживаются несколько форм для совместимости с другими линкерами. Они присваивают пространство общим символам, даже если задан перемещаемый выходной файл (с). Аналогичный эффект имеет команда сценария «FORCE_COMMON_ALLOCATION».

-e запись

--entry = запись

использование запись как явный символ для начала выполнения вашей программы, а не по умолчанию. Если нет символа с именем запись , компоновщик попытается разобрать запись как число, и использовать это как адрес записи (номер будет интерпретироваться в базе 10, вы можете использовать ведущую0x для основания 16 или ведущий0 для основания 8).

-E

--export-динамическая

При создании динамически связанного исполняемого файла добавьте все символы в таблицу динамических символов. Таблица динамических символов - это набор символов, которые видны из динамических объектов во время выполнения.

Если вы не используете этот параметр, таблица динамических символов обычно будет содержать только те символы, на которые ссылается какой-либо динамический объект, упомянутый в ссылке.

Если вы используете «dlopen» для загрузки динамического объекта, который должен ссылаться на символы, определенные программой, а не на какой-либо другой динамический объект, вам, вероятно, придется использовать эту опцию при связывании самой программы.

Вы также можете использовать скрипт версии для управления тем, какие символы следует добавлять в таблицу динамических символов, если формат вывода поддерживает его. См. Описание--version-скрипт в @ исх {VERSION}.

-EB

Свяжите объекты большого конца. Это влияет на формат вывода по умолчанию.

-EL

Связать объекты с маленькими концами. Это влияет на формат вывода по умолчанию.

-f

--auxiliary название

При создании общего объекта ELF задайте внутреннее поле DT_AUXILIARY указанному имени. Это говорит динамическому компоновщику, что таблица символов общего объекта должна использоваться как вспомогательный фильтр в таблице символов совместно используемого объекта название .

Если позднее вы свяжете программу с этим объектом фильтра, тогда при запуске программы динамический компоновщик увидит поле DT_AUXILIARY. Если динамический компоновщик разрешает любые символы из объекта фильтра, он сначала проверяет, существует ли определение в общем объекте название , Если он есть, он будет использоваться вместо определения в объекте фильтра. Общий объект название не обязательно. Таким образом, общий объект название может использоваться для обеспечения альтернативной реализации определенных функций, возможно, для отладки или для конкретной производительности машины.

Эта опция может быть указана более одного раза. Записи DT_AUXILIARY будут созданы в том порядке, в котором они отображаются в командной строке.

-F название

--фильтр название

При создании общего объекта ELF задайте внутреннее поле DT_FILTER указанному имени. Это говорит динамическому компоновщику, что таблица символов создаваемого совместно используемого объекта должна использоваться как фильтр в таблице символов совместно используемого объекта название .

Если позже вы связали программу с этим объектом фильтра, тогда при запуске программы динамический компоновщик увидит поле DT_FILTER. Динамический компоновщик будет разрешать символы в соответствии с таблицей символов объекта фильтра, как обычно, но он будет фактически ссылаться на определения, найденные в общем объекте название , Таким образом, объект фильтра может использоваться для выбора подмножества символов, предоставляемых объектом название .

Некоторые старые линкеры использовали-F вариант во всей инструментальной цепочке компиляции для указания формата объектного файла как для входных, так и для выходных файлов объектов. Компонент GNU использует для этого другие механизмы:-b, --формат, --oformat опции, команда «TARGET» в сценариях компоновщика и переменная среды «GNUTARGET». Компонент GNU будет игнорировать-F если не создается общий объект ELF.

-fini название

При создании исполняемого или совместно используемого объекта ELF вызовите NAME при выгрузке исполняемого или совместно используемого объекта, установив DT_FINI на адрес функции. По умолчанию компоновщик использует функцию «_fini» в качестве функции вызова.

Игнорируется. Предоставляется для совместимости с другими инструментами.

значение

--gpsize = значение

Задайте максимальный размер объектов, которые нужно оптимизировать, используя регистр GP для размер , Это имеет смысл только для форматов объектных файлов, таких как MIPS ECOFF, который поддерживает размещение больших и малых объектов в разных разделах. Это игнорируется для других форматов объектных файлов.

-час название

-soname = название

При создании общего объекта ELF задайте внутреннее поле DT_SONAME указанному имени. Когда исполняемый файл связан с общим объектом, у которого есть поле DT_SONAME, тогда, когда исполняемый файл запускается, динамический компоновщик будет пытаться загрузить общий объект, указанный в поле DT_SONAME, вместо использования имени файла, указанного компоновщику.

Выполните инкрементную ссылку (такую ​​же, как опция).

-в этом название

При создании исполняемого или совместно используемого объекта ELF вызовите NAME при загрузке исполняемого или совместно используемого объекта, установив DT_INIT на адрес функции. По умолчанию компоновщик использует функцию «_init» в качестве функции вызова.

-l архив

--library = архив

Добавить файл архива архив к списку файлов для связи. Эта опция может использоваться любое количество раз.л.д. будет искать свой список путей для появления «libarchive.a» для каждого архив указано.

В системах, поддерживающих общие библиотеки,л.д. может также искать библиотеки с расширениями, отличными от «.a». В частности, на системах ELF и SunOS,л.д. будет искать каталог для библиотеки с расширением «.so» перед поиском одного с расширением «.a». По соглашению расширение «.so» указывает на общую библиотеку.

Линкер будет искать архив только один раз, в том месте, где он указан в командной строке. Если в архиве определен символ, который не был определен в каком-либо объекте, который появился перед архивом в командной строке, компоновщик будет содержать файлы из архива. Однако неопределенный символ в объекте, появляющемся позже в командной строке, не заставит компоновщик снова искать архив.

См.-( вариант для того, чтобы заставить компоновщика многократно искать архивы.

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

Этот тип поиска в архиве является стандартным для Unix-линкеров. Однако, если вы используетел.д. onAIX, обратите внимание, что он отличается от поведения компоновщика AIX.

-L searchdir

--library-путь = searchdir

Добавить путь searchdir к списку путей, которыел.д. будет искать архивные библиотеки ил.д. контрольные скрипты. Вы можете использовать эту опцию любое количество раз. Поиск каталогов осуществляется в том порядке, в котором они указаны в командной строке. Каталоги, указанные в командной строке, просматриваются перед каталогами по умолчанию. Все-L варианты применяются ко всем-l , независимо от порядка отображения параметров.

Если searchdir начинается с «=», тогда «=» будет заменено на префикс sysroot , путь, заданный при компоновке компоновщика.

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

Пути также могут быть указаны в сценарии ссылок с помощью команды «SEARCH_DIR». Каталоги, указанные таким образом, выполняются в том месте, где скрипт компоновщика появляется в командной строке.

-m эмуляция

Эмулировать эмуляция линкер. Вы можете перечислить доступные эмуляции с помощью--подробный или же-Vопции.

Если-m опция не используется, эмуляция берется из переменной окружения «LDEMULATION», если она определена.

В противном случае эмуляция по умолчанию зависит от того, как был сконфигурирован компоновщик.

--print-карта

Распечатайте карту ссылок на стандартный вывод. Карта ссылок содержит информацию о ссылке, в том числе следующее:

*

Если объектные файлы и символы отображаются в память.

*

Как распределяются общие символы.

*

Все члены архива включены в ссылку с упоминанием символа, из-за которого был внесен член архива.

-n

--nmagic

Выключите выравнивание страниц разделов и по возможности отметьте выход как «NMAGIC».

-N

--omagic

Установите текст и разделы данных для чтения и записи. Кроме того, не выравнивайте выравнивание сегментов данных и отключите привязку к разделяемым библиотекам. Если выходной формат поддерживает магические числа в стиле Unix, отметьте его как «OMAGIC».

--no-omagic

Этот параметр отрицает большинство эффектов-N вариант. Он устанавливает текстовый раздел только для чтения и заставляет сегмент данных выравниваться по страницам. Примечание. Этот параметр не позволяет связывать общие библиотеки. использование-Bdynamic за это.

выход

--output = выход

использование выход как название программы, созданнойл.д.; если этот параметр не указан, имя a.out используется по умолчанию. Команда сценария «OUTPUT» также может указывать имя выходного файла.

уровень

Если уровень числовые значения больше нулял.д. оптимизирует выход. Это может занять значительно больше времени и, вероятно, должно быть включено только для окончательного двоичного файла.

-q

--emit-relocs

Оставляйте разделы и содержимое перемещений в полностью связанных exececutables. Анализатор ссылок и инструменты для оптимизации ссылок могут нуждаться в этой информации для правильной модификации исполняемых файлов. Это приводит к более крупным исполняемым файлам.

Этот вариант в настоящее время поддерживается только на платформах ELF.

--relocateable

Сгенерируйте перемещаемый вывод --- т. Е. Сгенерируйте выходной файл, который может в свою очередь служить в качестве входных данных длял.д., Это часто называют частичное связывание , В качестве побочного эффекта в средах, поддерживающих стандартные магические числа Unix, этот параметр также устанавливает магический номер выходного файла в «OMAGIC». Если этот параметр не указан, создается абсолютный файл. При связывании программ на C ++ эта опция не буду разрешать ссылки на конструкторы; для этого используйте-ur.

Когда входной файл не имеет того же формата, что и выходной файл, частичное связывание поддерживается только в том случае, если этот входной файл не содержит перемещений. Различные форматы вывода могут иметь дополнительные ограничения; например, некоторые форматы «a.out» не поддерживают частичную компоновку с входными файлами в других форматах.

Эта опция делает то же самое, что и.

имя файла

--just-символы = имя файла

Чтение имен символов и их адресов из имя файла , но не перемещайте его или не включайте в вывод. Это позволяет вашему выходному файлу символически обращаться к абсолютным местоположениям памяти, определенным в других программах. Вы можете использовать эту опцию несколько раз.

Для совместимости с другими линкерами ELF, если за которым следует имя каталога, а не имя файла, оно рассматривается как-rpath вариант.

-s

--strip-все

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

-S

--strip-отладка

Отключить информацию о символе отладчика (но не все символы) из выходного файла.

-t

--trace

Распечатайте имена входных файлов какл.д. обрабатывает их.

-T файл_сценария

--script = файл_сценария

использование файл_сценария как скрипт компоновщика. Этот скрипт заменяетл.д.(вместо добавления к нему), поэтому commandfile должен указать все необходимое для описания выходного файла. Если файл_сценария не существует в текущем каталоге, «ld» ищет его в каталогах, указанных любым предыдущим-L опции. множественный-T варианты накапливаются.

-u условное обозначение

--undefined = условное обозначение

сила условное обозначение для ввода в выходной файл как неопределенный символ. Это может, например, инициировать связывание дополнительных модулей со стандартными библиотеками.-u может быть повторен с различными аргументами параметра для ввода дополнительных неопределенных символов. Эта опция эквивалентна команде сценария компоновщика «EXTERN».

-ur

Для любых других программ, отличных от C ++, эта опция эквивалентна: он генерирует перемещаемый вывод --- то есть выходной файл, который, в свою очередь, может служить в качестве входных данных длял.д., При связывании программ на C ++,-ur делает разрешить ссылки на конструкторы, в отличие от, Он не работает для использования-ur на файлы, которые сами были связаны с-ur; как только таблица конструктора будет построена, ее нельзя добавить. использование-ur только для последней частичной ссылки, и для других.

--unique = РАЗДЕЛ

Создает отдельный раздел вывода для каждого раздела ввода РАЗДЕЛ , или если дополнительный шаблон РАЗДЕЛ аргумент отсутствует, для каждого раздела входных данных для сирот. Раздел сироты - это тот, который специально не упоминается в сценарии компоновщика. Вы можете использовать эту опцию несколько раз в командной строке; Это предотвращает нормальное слияние разделов ввода с тем же именем, переопределяя назначения раздела вывода в скрипте компоновщика.

-v

--версия

-V

Отобразите номер версии длял.д.,-V Опция также содержит список поддерживаемых эмуляций.

-Икс

--discard-все

Удалите все локальные символы.

-ИКС

--discard-местные

Удалите все временные локальные символы. Для большинства целей это все локальные символы, имена которых начинаются сL.

-y условное обозначение

--trace-символ = условное обозначение

Распечатайте имя каждого связанного файла, в котором условное обозначение появляется. Эта опция может предоставляться сколько угодно раз. Во многих системах необходимо добавить символ подчеркивания.

Эта опция полезна, когда у вас есть неопределенный символ в вашей ссылке, но не знаете, откуда эта ссылка.

-Y дорожка

добавлять дорожка к пути поиска библиотеки по умолчанию. Этот параметр существует для совместимости с Solaris.

-z ключевое слово

Признанными ключевыми словами являются «initfirst», «interpose», «loadfltr», «nodefaultlib», «nodelete», «nodlopen», «nodump», «now», «origin», «combreloc», «nocombreloc» и «nocopyreloc» ». Другие ключевые слова игнорируются для совместимости с Solaris. «initfirst» отмечает объект, который будет инициализирован первым во время выполнения перед любыми другими объектами.«interpose» помещает объект, который его таблица символов вставляет перед всеми символами, кроме основного исполняемого файла. «loadfltr» отмечает объект, который его filtees обрабатывается сразу во время выполнения. «nodefaultlib» отмечает объект, который игнорирует поиск зависимостей этого объекта любые пути поиска библиотеки по умолчанию. «Узел» отмечает, что объект не должен выгружаться во время выполнения. «nodlopen» обозначает объект, недоступный для «dlopen». «nodump» отмечает, что объект не может быть сброшен «dldump». «now» отмечает объект с помощью нелазной привязки времени выполнения. «origin» отмечает, что объект может содержать $ ORIGIN. «defs» запрещает неопределенные символы. «muldefs» допускает несколько определений. «combreloc» объединяет несколько разделов reloc и сортирует их, чтобы сделать возможным кэширование динамического символьного поиска.

«nocombreloc» отключает объединение нескольких списков. «nocopyreloc» отключает выпуск копий.

-( архив -)

--start-группа, архив --end-группа,

архив должен быть список архивных файлов. Они могут быть либо явными именами файлов, либо-lопции.

Указанные архивы повторяются до тех пор, пока не будут созданы новые неопределенные ссылки. Обычно архив ищет только один раз в том порядке, в котором он указан в командной строке. Если в этом архиве необходим символ для разрешения неопределенного символа, на который ссылается объект в архиве, который появляется позже в командной строке, компоновщик не сможет разрешить эту ссылку. Сгруппировав архивы, их все будут искать до тех пор, пока не будут разрешены все возможные ссылки.

Использование этой опции имеет значительную производительность. Лучше всего использовать его только тогда, когда между двумя или более архивами есть неизбежные циклические ссылки.

--accept неизвестный-вход-арка

--no-Accept-неизвестную-вход-арка

Сообщает, что компоновщик принимает входные файлы, архитектура которых не может быть распознана. Предполагается, что пользователь знает, что они делают, и намеренно хочет связать эти неизвестные входные файлы. Это было поведение по умолчанию для компоновщика, до версии 2.14. Поведение по умолчанию, начиная с версии 2.14, должно отклонять такие входные файлы, и поэтому--accept неизвестный-вход-арка добавлена ​​опция для восстановления старого поведения.

-assert ключевое слово

Этот параметр игнорируется для совместимости с SunOS.

-Bdynamic

-ды

-call_shared

Ссылка на динамические библиотеки. Это имеет смысл только на платформах, для которых поддерживаются общие библиотеки. Этот вариант обычно является стандартным для таких платформ. Различные варианты этой опции предназначены для совместимости с различными системами. Вы можете использовать эту опцию несколько раз в командной строке: она влияет на поиск библиотеки-l варианты, которые следуют за ним.

-Bgroup

Установите флаг «DF_1_GROUP» в записи «DT_FLAGS_1» в динамическом разделе. Это заставляет компоновщик времени выполнения обрабатывать запросы в этом объекте, а его зависимости должны выполняться только внутри группы.--no-неопределенный подразумевается. Этот параметр имеет смысл только на платформах ELF, которые поддерживают общие библиотеки.

-Bstatic

-dn

-non_shared

-static

Не связывайтесь с разделяемыми библиотеками. Это имеет смысл только на платформах, для которых поддерживаются общие библиотеки. Различные варианты этой опции предназначены для совместимости с различными системами. Вы можете использовать эту опцию несколько раз в командной строке: она влияет на поиск библиотеки-l варианты, которые следуют за ним.

-Bsymbolic

При создании общей библиотеки свяжите ссылки с глобальными символами с определением в общей библиотеке, если они есть. Как правило, программа, связанная с общей библиотекой, может переопределять определение в общей библиотеке. Этот параметр имеет смысл только на ELFplatforms, которые поддерживают общие библиотеки.

--check сечения

--no проверки сечений

Спрашивает компоновщика не чтобы проверить адреса разделов после того, как они были назначены, чтобы увидеть, есть ли какие-либо перекрытия. Обычно компоновщик выполнит эту проверку, и если он найдет какие-либо перекрытия, это приведет к появлению подходящих сообщений об ошибках. Компилятор знает об этом и делает скидку на разделы в оверлеях. Поведение по умолчанию можно восстановить, используя переключатель командной строки--check сечения.

--cref

Выведите таблицу перекрестных ссылок. Если создается файл карты компоновщика, таблица перекрестных ссылок печатается в файл карты. В противном случае он печатается на стандартном выходе.

Формат таблицы преднамеренно прост, так что при необходимости он может быть легко обработан скриптом. Символы распечатываются, сортируются по имени. Для каждого символа указывается список имен файлов. Если символ определен, первым указанным файлом является местоположение определения. Остальные файлы содержат ссылки на символ.

--no-определить, общее

Эта опция запрещает присвоение адресов общим символам. Аналогичный эффект имеет команда сценария «INHIBIT_COMMON_ALLOCATION».

--no-определить, общее опция позволяет развязать решение о назначении адресов общим символам из выбора типа выходного файла; в противном случае тип вывода, не относящийся к Relocatable, принудительно назначает адреса общим символам. С помощью--no-определить, общее разрешает общие символы, на которые ссылаются из общей библиотеки, назначаются адреса только в основной программе. Это устраняет неиспользуемое дублирующее пространство в общей библиотеке, а также предотвращает возможную путаницу в разрешении неправильного дубликата, когда имеется много динамических модулей со специализированными путями поиска для разрешения символа времени выполнения.

--defsym условное обозначение = выражение

Создайте глобальный символ в выходном файле, содержащий абсолютный адрес, заданный выражение , Вы можете использовать эту опцию столько раз, сколько необходимо для определения нескольких символов в командной строке. Ограниченная форма арифметики поддерживается для выражение в этом контексте: вы можете указать шестнадцатеричную константу или имя существующего символа или использовать «+» и «-» для добавления или вычитания шестнадцатеричных констант или символов. Если вам нужны более сложные выражения, подумайте об использовании языка команд компоновщика из сценария. Замечания: не должно быть пробелов между условное обозначение , знак равенства (``=''), а также выражение .

--demangle = стиль

--no-demangle

Эти параметры определяют, следует ли переименовывать имена символов в сообщениях об ошибках и другом выходе. Когда компоновщику сообщают о необходимости демонстрации, он пытается представить имена символов читаемым образом: он разделяет ведущие подчеркивания, если они используются форматом объектного файла, и преобразует испорченные символы C ++ в имена, читаемые пользователем. У разных компиляторов разные стили оформления. Необязательный аргумент стиля demangling можно использовать для выбора подходящего стиля для вашего компилятора. Компонент будет по умолчанию поменять, если переменная средыCOLLECT_NO_DEMANGLE установлен. Эти параметры могут использоваться для переопределения значения по умолчанию.

--dynamic-линкер файл

Задайте имя динамического компоновщика. Это имеет смысл только при создании динамически связанных исполняемых файлов ELF. Обычно динамический компоновщик по умолчанию корректен; не используйте это, если не знаете, что делаете.

--embedded-relocs

Этот параметр имеет смысл только при связывании встроенного кода PIC MIPS, генерируемого параметром -membedded-pic для компилятора GNU и ассемблера. Это заставляет компоновщик создавать таблицу, которая может использоваться во время выполнения, чтобы переместить любые данные, которые были статически инициализированы значениями указателя. Подробности см. В файле testuite / ld-empic.

--fatal-предупреждение

Обращайте все предупреждения как ошибки.

--force-ех-суффикс

Убедитесь, что выходной файл имеет суффикс .exe.

Если у успешно созданного полностью связанного выходного файла нет суффикса «.exe» или «.dll», этот параметр заставляет компоновщик копировать выходной файл на одно имя с суффиксом «.exe». Этот параметр полезен при использовании немодифицированных make-файлов Unix на хосте Microsoft Windows, поскольку некоторые версии Windows не будут запускать изображение, если оно не заканчивается суффиксом «.exe».

--no-ГЦ-секции

--gc сечения

Включить сбор мусора из неиспользуемых разделов ввода. Он игнорируется в отношении целей, которые не поддерживают этот параметр. Этот параметр несовместим с, а также не должно использоваться с динамической компоновкой. Поведение по умолчанию (не выполнять эту сборку мусора) можно восстановить, указав--no-ГЦ-секции в командной строке.

--Помогите

Распечатайте краткое описание параметров командной строки на стандартном выходе и выходе.

--target-помощь

Распечатайте итоговые данные всех целевых опций на стандартном выходе и выходе.

-Карта файле проекта

Распечатайте карту ссылки в файл файле проекта , См. Описание вариант, выше.

--no-Keep-памяти

л.д. обычно оптимизирует скорость использования памяти, кэшируя таблицы символов входных файлов в памяти. Этот параметр сообщаетл.д. вместо этого оптимизировать использование памяти, перечитывая таблицы символов по мере необходимости. Это может потребоваться, еслил.д. заканчивается пространство памяти при связывании большого исполняемого файла.

--no-неопределенный

-z defs

Обычно при создании несимволической разделяемой библиотеки допускаются неопределенные символы и оставляются разрешаемыми загрузчиком во время выполнения. Эти параметры запрещают такие неопределенные символы.

--allow-множественное определение

-z muldefs

Обычно, когда символ определен несколько раз, компоновщик сообщает о фатальной ошибке. Эти параметры позволяют использовать несколько определений и первое определение.

--allow-shlib-неопределенный

Разрешить неопределенные символы в общих объектах, даже если задано значение -no-undefined. Конечным результатом будет то, что неопределенные символы в обычных объектах будут по-прежнему вызывать ошибку, но неопределенные символы в общих объектах будут проигнорированы. Внедрение no_undefined делает предположение о том, что компо