АнглийскийФранцузскийИспанский

Запустить серверы | Ubuntu > | Fedora > |


Значок OnWorks

h8300-hitachi-coff-ld - Интернет в облаке

Запустите h8300-hitachi-coff-ld в провайдере бесплатного хостинга OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

Это команда h8300-hitachi-coff-ld, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


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

СИНТАКСИС


лд [опционы] objfile ...

ОПИСАНИЕ


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

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

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

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

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

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

ОПЦИИ


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

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

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

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

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

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

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

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

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

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

Примечание: если компоновщик вызывается косвенно, через драйвер компилятора (например, GCC) затем
все параметры командной строки компоновщика должны иметь префикс -Вл, (или как угодно
для конкретного драйвера компилятора) следующим образом:

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

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

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

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

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

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

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

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

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

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

-c MRI-командный файл
--mri-script =MRI-командный файл
Для совместимости с линкерами, производимыми МРТ, ld принимает файлы сценариев, написанные в
альтернативный, ограниченный командный язык, описанный в файлах сценариев, совместимых с MRI
раздел документации GNU ld. Представьте файлы сценариев МРТ с опцией -c; использовать
что собой представляет -T возможность запускать скрипты компоновщика, написанные в универсальном ld сценариев
язык. Если МРТ-cmdfile не существует, ld ищет его в указанных каталогах
любым -L настройки.

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

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

--exclude-libs Lib,Lib, ...
Определяет список архивных библиотек, символы из которых не должны быть автоматически
экспортируется. Имена библиотек могут быть разделены запятыми или двоеточиями. Указание
"--exclude-libs ALL" исключает символы из всех архивных библиотек из автоматического экспорта.
Эта опция доступна только для целевого порта компоновщика i386 PE и для ELF.
целевые порты. Для i386 PE символы, явно перечисленные в файле .def, по-прежнему
экспортируется, независимо от этого параметра. Для портов, нацеленных на ELF, символы, на которые распространяется это
опция будет считаться скрытой.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-i Выполните инкрементную ссылку (аналогично опции -r).

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

-lархив
--library =архив
Добавить архивный файл архив к списку файлов для ссылки. Эта опция может использоваться любым
количество раз. ld будет искать в своем списке путей вхождения "libarchive.a " для
каждую архив указано.

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

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

Смотрите пост в -( вариант, позволяющий заставить компоновщик выполнять поиск в архивах несколько раз.

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

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

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

If каталог поиска начинается с "=", затем "=" заменяется на системный корень префикс, чтобы
путь, указанный при настройке компоновщика.

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

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

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

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

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

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

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

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

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

-n
--nmagic
Отключите выравнивание страниц по разделам и пометьте вывод как «NMAGIC», если это возможно.

-N
--омагия
Сделайте разделы текста и данных доступными для чтения и записи. Кроме того, не выравнивайте страницы
сегмент данных и отключите связывание с разделяемыми библиотеками. Если выходной формат
поддерживает магические числа в стиле Unix, пометьте вывод как «OMAGIC». Примечание. Хотя
записываемый текстовый раздел разрешен для целей PE-COFF, он не соответствует
спецификация формата, опубликованная Microsoft.

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

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

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

-q
--emit-relocs
Оставьте разделы перемещения и содержимое в полностью связанных исполняемых файлах. Опубликовать ссылку
эта информация может потребоваться инструментам анализа и оптимизации для правильной работы
модификации исполняемых файлов. Это приводит к увеличению размера исполняемых файлов.

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

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

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

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

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

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

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

-S
--strip-debug
Не указывайте информацию о символах отладчика (но не все символы) из выходного файла.

-t
--след
Выведите имена входных файлов как ld обрабатывает их.

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

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

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

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

-v
--версия
-V Показать номер версии для ld, -V option также перечисляет поддерживаемые эмуляции.

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

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

-y символ
--trace-symbol =символ
Выведите имя каждого связанного файла, в котором символ появляется. Этот вариант может быть предоставлен
любое количество раз. Во многих системах необходимо добавлять подчеркивание.

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

-Y путь
Добавить путь на путь поиска библиотеки по умолчанию. Эта опция существует для Solaris
Совместимость.

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

Combreloc
Объединяет несколько разделов перемещения и сортирует их для динамического поиска символов
возможно кеширование.

определение
Запрещает неопределенные символы в объектных файлах. Неопределенные символы в общих
библиотеки по-прежнему разрешены.

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

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

loadfltr
Помечает объект, что его фильтры обрабатываются немедленно во время выполнения.

Muldefs
Допускает несколько определений.

Nocombreloc
Отключает объединение нескольких секций перемещения.

нокопирелок
Отключает производство копий релоков.

nodefaultlib
Помечает объект, что поиск зависимостей этого объекта будет игнорировать любые
пути поиска библиотеки по умолчанию.

ноделет
Отмечает, что объект нельзя выгружать во время выполнения.

кивать
Помечает объект как недоступный для «dlopen».

кувыркающийся
Отмечает, что объект не может быть сброшен с помощью "dldump".

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

происхождения
Отмечает, что объект может содержать $ ORIGIN.

Другие ключевые слова игнорируются для совместимости с Solaris.

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

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

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

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

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

--добавить-необходимо
--no-add-required
Этот параметр влияет на обработку динамических библиотек из тегов ELF DT_NEEDED в
динамические библиотеки, упомянутые в командной строке после --no-add-required опцию.
Обычно компоновщик добавляет тег DT_NEEDED для каждой динамической библиотеки из DT_NEEDED.
теги. --no-add-required приводит к тому, что теги DT_NEEDED никогда не будут генерироваться для этих библиотек
из тегов DT_NEEDED. --добавить-необходимо восстанавливает поведение по умолчанию.

-утверждать ключевое слово
Эта опция игнорируется для совместимости с SunOS.

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

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

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

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

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

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

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

--no-define-общий
Эта опция запрещает присвоение адресов общим символам. Сценарий
команда "INHIBIT_COMMON_ALLOCATION" имеет тот же эффект.

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

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

--demangle [=стиль]
--no-demangle
Эти параметры определяют, следует ли разбирать имена символов в сообщениях об ошибках и других
выход. Когда компоновщику приказывают разобрать запутывание, он пытается представить имена символов в
читаемый способ: он удаляет начальные подчеркивания, если они используются объектным файлом
формат и преобразует искаженные имена символов C ++ в имена, читаемые пользователем. Другой
компиляторы имеют разные стили искажения. Необязательный аргумент стиля разборки может
использоваться для выбора подходящего стиля разборки для вашего компилятора. Компоновщик будет
demangle по умолчанию, если переменная среды COLLECT_NO_DEMANGLE установлен. Эти
параметры могут использоваться для отмены значения по умолчанию.

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

--фатальные-предупреждения
Считайте все предупреждения ошибками.

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

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

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

--Помогите
Распечатайте сводку параметров командной строки в стандартный вывод и выйдите.

--target-помощь
Распечатайте сводку всех целевых опций на стандартный вывод и выйдите.

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

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

--no-undefined
-z определение
Сообщайте о неразрешенных ссылках на символы из обычных объектных файлов. Это делается, даже если
компоновщик создает несимвольную общую библиотеку. Выключатель
- [no-] allow-shlib-undefined контролирует поведение при сообщении о неразрешенных
ссылки, найденные в разделяемых библиотеках, в которых есть ссылки.

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

--allow-shlib-undefined
--no-allow-shlib-undefined
Разрешает (по умолчанию) или запрещает неопределенные символы в общих библиотеках. Этот переключатель
аналогично --no-undefined за исключением того, что он определяет поведение, когда
неопределенные символы находятся в общей библиотеке, а не в обычном объектном файле. Оно делает
не влияет на то, как обрабатываются неопределенные символы в обычных объектных файлах.

Причина того, что --allow-shlib-undefined по умолчанию общая библиотека
указывается во время ссылки, может не совпадать с тем, которое доступно при загрузке
time, поэтому символы могут быть разрешены во время загрузки. Плюс есть некоторые
системы (например, BeOS), где неопределенные символы в разделяемых библиотеках являются нормальным явлением. (Ядро
исправляет их во время загрузки, чтобы выбрать, какая функция наиболее подходит для текущего
архитектура. Это используется, например, для динамического выбора подходящего набора памяти.
функция). По-видимому, для разделяемых библиотек HPPA также нормально иметь undefined
символы.

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

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

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

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

--no-весь-архив
Отключите эффект - весь архив вариант для последующих архивных файлов.

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

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

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

-пирог
--pic-исполняемый файл
Создайте независимый от позиции исполняемый файл. В настоящее время это поддерживается только в ELF.
платформы. Независимые от позиции исполняемые файлы похожи на разделяемые библиотеки в том, что
они перемещаются динамическим компоновщиком на виртуальный адрес, который ОС выбирает для
их (которые могут варьироваться между вызовами). Как обычные динамически связанные исполняемые файлы
они могут быть выполнены, а символы, определенные в исполняемом файле, не могут быть заменены
общие библиотеки.

-qмагия
Эта опция игнорируется для совместимости с Linux.

-Qy Эта опция игнорируется для совместимости с SVR4.

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

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

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

На платформах, где это не поддерживается, --расслабляться принимается, но игнорируется.

--retain-файл-символов имя файла
сохранить только символы, перечисленные в файле имя файла, отбрасывая все остальные. имя файла
представляет собой простой файл с одним именем символа в строке. Этот вариант особенно
полезен в средах (таких как VxWorks), где большая глобальная таблица символов
накапливается постепенно, чтобы сохранить оперативную память.

--retain-файл-символов делает не отбросить неопределенные символы или символы, необходимые для
переезды.

Вы можете только указать --retain-файл-символов один раз в командной строке. Это отменяет -s
и -S.

-rpath директория
Добавьте каталог в путь поиска библиотеки времени выполнения. Используется при компоновке ELF
исполняемый файл с общими объектами. Все -rpath аргументы объединяются и передаются в
компоновщик среды выполнения, который использует их для поиска общих объектов во время выполнения. В -rpath
опция также используется при нахождении общих объектов, которые необходимы разделяемым объектам.
явно включены в ссылку; см. описание -rpath-ссылка вариант. Если
-rpath не используется при компоновке исполняемого файла ELF, содержимое окружения
переменная "LD_RUN_PATH" будет использоваться, если она определена.

-rpath опция также может использоваться в SunOS. По умолчанию в SunOS компоновщик
сформировать патч для поиска во время выполнения из всех -L вариантов дано. Если -rpath вариант
, путь поиска во время выполнения будет формироваться исключительно с использованием -rpath вариантов,
игнорируя -L параметры. Это может быть полезно при использовании gcc, который добавляет много -L
параметры, которые могут быть в файловых системах, смонтированных по NFS.

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

-rpath-ссылка DIR
При использовании ELF или SunOS для одной разделяемой библиотеки может потребоваться другая. Это происходит, когда
Ссылка "ld -shared" включает общую библиотеку в качестве одного из входных файлов.

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

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

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

1. Любые каталоги, указанные -rpath-ссылка настройки.

2. Любые каталоги, указанные -rpath параметры. Разница между -rpath и
-rpath-ссылка это каталоги, указанные -rpath варианты включены в
исполняемый файл и используется во время выполнения, тогда как -rpath-ссылка вариант только эффективен
во время ссылки. Это только для собственного компоновщика.

3. В системе ELF, если -rpath и параметры "rpath-link" не использовались, выполните поиск
содержимое переменной окружения "LD_RUN_PATH". Это для родного компоновщика
только.

4. В SunOS, если -rpath опция не использовалась, поиск в любых указанных каталогах
через -L настройки.

5. Для собственного компоновщика - содержимое переменной среды «LD_LIBRARY_PATH».

6. Для собственного компоновщика ELF каталоги в "DT_RUNPATH" или "DT_RPATH" общего
библиотека ищет необходимые ей разделяемые библиотеки. Записи "DT_RPATH"
игнорируется, если существуют записи "DT_RUNPATH".

7. Каталоги по умолчанию, обычно / Lib и / USR / Lib.

8. Для встроенного компоновщика в системе ELF, если файл /etc/ld.so.conf существует, список
каталогов, найденных в этом файле.

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

-общий
-Bshareable
Создайте общую библиотеку. В настоящее время это поддерживается только в ELF, XCOFF и SunOS.
платформы. В SunOS компоновщик автоматически создаст общую библиотеку, если -e
опция не используется и в ссылке есть неопределенные символы.

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

--sort-section имя
Эта опция применит "SORT_BY_NAME" ко всем шаблонам разделов с подстановочными знаками в компоновщике.
скрипты.

--sort-section выравнивание
Этот параметр применит "SORT_BY_ALIGNMENT" ко всем шаблонам разделов с подстановочными знаками в
компоновщик скрипта.

--split-by-file [размер]
Похожий на --split-by-reloc но создает новый раздел вывода для каждого входного файла, когда
размер достигнуто размер по умолчанию размер 1, если не указан.

--split-by-reloc [считать]
Пытается создать дополнительные разделы в выходном файле, чтобы ни один выходной раздел в
файл содержит более считать переезды. Это полезно при создании огромных
перемещаемые файлы для загрузки в определенные ядра реального времени с помощью объекта COFF
формат файла; поскольку COFF не может представлять более 65535 перемещений за один
раздел. Обратите внимание, что это не будет работать с форматами объектных файлов, которые не
поддерживать произвольные разделы. Компоновщик не разделяет отдельные входные разделы.
для распространения, поэтому, если один входной раздел содержит более считать переезд
один выходной раздел будет содержать столько перемещений. считать по умолчанию значение
32768

--stats
Вычислить и отобразить статистику работы компоновщика, например выполнение
время и использование памяти.

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

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

Например, в SunOS ld объединяет повторяющиеся записи в таблице символьных строк. Этот
может уменьшить размер выходного файла с полной отладочной информацией более чем на 30
процентов. К сожалению, программа SunOS "dbx" не может прочитать получившуюся программу.
(у "gdb" нет проблем). В - традиционный формат переключатель говорит ld не совмещать
повторяющиеся записи.

- начало раздела имя раздела=org
Найдите раздел в выходном файле по абсолютному адресу, заданному org. Вы можете использовать
этот параметр столько раз, сколько необходимо, чтобы найти несколько разделов в команде
линии. org должно быть одним шестнадцатеричным целым числом; для совместимости с другими линкерами,
вы можете опустить ведущий 0x обычно ассоциируется с шестнадцатеричными значениями. Примечание: там
не должно быть пробелов между имя раздела, знак равенства (``=''), а также org.

-Тбсс org
-Tданные org
-Ттекст org
То же, что и --section-start, с ".bss", ".data" или ".text" в качестве имя раздела.

--unresolved-symbols =метод
Определите, как обращаться с неразрешенными символами. Есть четыре возможных значения для
метод:

игнорировать все
Не сообщайте о неразрешенных символах.

отчет-все
Сообщите обо всех неразрешенных символах. Это значение по умолчанию.

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

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

Поведение общих библиотек также можно контролировать с помощью
- [no-] allow-shlib-undefined опцию.

Обычно компоновщик генерирует сообщение об ошибке для каждого сообщенного неразрешенного символа.
но вариант --warn-неразрешенные-символы может изменить это на предупреждение.

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

--version-script =версия-скрипт
Укажите компоновщику имя сценария версии. Обычно это используется, когда
создание разделяемых библиотек для указания дополнительной информации о версии
иерархия для создаваемой библиотеки. Эта опция имеет значение только для ELF.
платформы, поддерживающие разделяемые библиотеки.

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

Есть три вида глобальных символов, проиллюстрированных здесь примерами C:

Int i = 1;
Определение, которое находится в разделе инициализированных данных выходного файла.

внешний Int i;
Неопределенная ссылка, которая не выделяет место. Должен быть либо
определение или общий символ для переменной где-нибудь.

Int i;
Обычный символ. Если для переменной есть только (один или несколько) общих символов,
он попадает в область неинициализированных данных выходного файла. Компоновщик объединяет
несколько общих символов для одной и той же переменной в один символ. Если они
разных размеров выбирает самый большой. Компоновщик превращает общий символ
в объявление, если есть определение той же переменной.

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

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

( ): warning: common of ` '
отменено по определению
( ): предупреждение: определено здесь

2. Превращение общего символа в ссылку, потому что более позднее определение для
встречается символ. Это то же самое, что и в предыдущем случае, за исключением того, что
символы встречаются в другом порядке.

( ): warning: определение ` '
преобладающий общий
( ): предупреждение: общий здесь

3. Объединение общего символа с предыдущим общим символом того же размера.

( ): предупреждение: несколько общих
из ` '
( ): предупреждение: предыдущее общее здесь

4. Объединение общего символа с предыдущим более крупным общим символом.

( ): warning: common of ` '
перекрывается более широким общим
( ): предупреждение: здесь больше распространенных

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

( ): warning: common of ` '
подавляя меньшее общее
( ): предупреждение: здесь меньше обычных

--warn-конструкторы
Предупреждать, если используются какие-либо глобальные конструкторы. Это полезно только для нескольких объектных файлов.
форматы. Для таких форматов, как COFF или ELF, компоновщик не может обнаружить использование глобального
конструкторы.

--warn-несколько-GP
Предупреждать, если в выходном файле требуется несколько значений глобального указателя. Это только
имеет смысл для некоторых процессоров, таких как Alpha. В частности, некоторые процессоры
поместите в специальный раздел многозначные константы. Специальный регистр (глобальный
указатель) указывает на середину этого раздела, чтобы можно было загружать константы
эффективно через режим относительной адресации базового регистра. Поскольку смещение в базе-
относительный режим регистров является фиксированным и относительно небольшим (например, 16 бит), это ограничивает
максимальный размер постоянного пула. Таким образом, в больших программах часто бывает необходимо
использовать несколько значений глобального указателя, чтобы иметь возможность адресовать все возможные
константы. Эта опция вызывает выдачу предупреждения всякий раз, когда возникает этот случай.

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

--warn-раздел-выравнивание
Предупредить, если адрес выходной секции изменился из-за выравнивания. Обычно
выравнивание будет установлено входной секцией. Адрес будет изменен только в том случае, если он
явно не указано; то есть, если в команде "РАЗДЕЛЫ" не указано начало
адрес раздела.

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

--warn-неразрешенные-символы
Если компоновщик сообщает о неразрешенном символе (см. Параметр
--неразрешенные-символы) обычно возникает ошибка. Эта опция делает это
вместо этого генерировать предупреждение.

-error-unresolved-symbols
Это восстанавливает поведение компоновщика по умолчанию, заключающееся в создании ошибок, когда он сообщает
неразрешенные символы.

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

Два примечания при использовании этой опции из gcc: во-первых, gcc не знает об этой опции,
так что вы должны использовать -Wl, -whole-архив. Во-вторых, не забывайте использовать
-Wl, -no-весь-архив после вашего списка архивов, потому что gcc добавит свой собственный список
архивов на вашу ссылку, и вы можете не захотеть, чтобы этот флаг повлиял на них.

--сворачивать символ
Используйте функцию-оболочку для символ. Любая неопределенная ссылка на символ будет решен
обернуть_условное обозначение". Любая неопределенная ссылка на "__real_"условное обозначение" будет решено
символ.

Это можно использовать для обеспечения оболочки для системной функции. Функция-оболочка
следует называть "__wrap_условное обозначение". Если он хочет вызвать системную функцию, он должен
позвонить "__real_условное обозначение".

Вот банальный пример:

пустота *
__wrap_malloc (размер_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".

--enable-новые-dtags
--disable-новые-dtags
Этот компоновщик может создавать новые динамические теги в ELF. Но старые системы ELF не могут
понять их. Если вы укажете --enable-новые-dtags, будут созданы динамические теги
по мере необходимости. Если вы укажете --disable-новые-dtags, новые динамические теги создаваться не будут.
По умолчанию новые динамические теги не создаются. Обратите внимание, что эти параметры только
доступно для систем ELF.

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

--reduce-memory-overheads
Эта опция снижает требования к памяти во время выполнения ld за счет связывания
скорость. Это было введено для выбора старого алгоритма O (n ^ 2) для файла карты ссылок.
поколения, а не новый алгоритм O (n), который использует примерно на 40% больше памяти для
хранение символов.

Еще одно влияние переключателя - установка размера хэш-таблицы по умолчанию на 1021, что
снова экономит память за счет увеличения времени работы компоновщика. Это не сделано
однако если --хэш-размер переключатель был использован.

--reduce-memory-overheads переключатель также может использоваться для включения других компромиссов в
будущие версии компоновщика.

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

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

--add-stdcall-псевдоним
Если указано, символы с суффиксом stdcall (@nn) будет экспортирован как есть, а также с
суффикс удален. [Этот параметр относится к целевому порту компоновщика i386 PE]

--base-файл файл
использование файл как имя файла, в котором будут храниться базовые адреса всех
перемещения, необходимые для создания DLL с dlltool. [Это специфичный для i386 PE
вариант]

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

--enable-stdcall-fixup
--disable-stdcall-fixup
Если ссылка находит символ, который не может разрешить, она попытается выполнить `` нечеткое
связывание '' путем поиска другого определенного символа, который отличается только форматом
имя символа (cdecl vs stdcall) и разрешит этот символ путем ссылки на совпадение.
Например, неопределенный символ «_foo» может быть связан с функцией «_foo @ 12» или
неопределенный символ «_bar @ 16» может быть связан с функцией «_bar». Когда
компоновщик делает это, он выводит предупреждение, так как обычно он не должен связываться,
но иногда эта функция может понадобиться для импорта библиотек, созданных из сторонних dll.
быть пригодным для использования. Если вы укажете --enable-stdcall-fixup, эта функция полностью включена
и предупреждения не печатаются. Если вы укажете --disable-stdcall-fixup, эта функция
отключены, и такие несоответствия считаются ошибками. [Эта опция специфична для
целевой порт компоновщика i386 PE]

--экспорт-все-символы
Если задано, все глобальные символы в объектах, используемых для построения DLL, будут экспортированы
DLL. Обратите внимание, что это значение по умолчанию, если в противном случае не было бы экспортированных
символы. Когда символы явно экспортируются через файлы DEF или неявно экспортируются
через атрибуты функции, по умолчанию ничего не экспортируется, если только этот параметр
дано. Обратите внимание, что символы «DllMain @ 12», «DllEntryPoint @ 0»,
«DllMainCRTStartup @ 12» и «impure_ptr» не экспортируются автоматически. Также,
символы, импортированные из других DLL, не будут повторно экспортированы, как и символы, указывающие
внутренний макет DLL, например, начинающийся с "_head_" или заканчивающийся
"_iname". Кроме того, никаких символов из "libgcc", "libstd ++", "libmingw32" или
"crtX.o" будет экспортирован. Символы, имена которых начинаются с «__rtti_» или «__builtin_»
не будет экспортирован, чтобы помочь с библиотеками C ++. Наконец, есть обширный список
cygwin-частные символы, которые не экспортируются (очевидно, это применяется при построении
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» и «окружающая среда». [Этот параметр специфичен для i386 PE, предназначенного для
порт компоновщика]

--exclude-символы символ,символ, ...
Задает список символов, которые не следует экспортировать автоматически. Символ
имена могут быть разделены запятыми или двоеточиями. [Эта опция специфична для i386 PE
целевой порт компоновщика]

- выравнивание файлов
Укажите выравнивание файла. Разделы в файле всегда будут начинаться со смещений файла
которые кратны этому числу. По умолчанию это 512. [Этот параметр специфичен
на целевой порт компоновщика i386 PE]

- куча резерв
- куча резерв,совершать
Укажите объем памяти, который необходимо зарезервировать (и, при необходимости, зафиксировать), который будет использоваться в качестве кучи для
эта программа. По умолчанию зарезервировано 1 Мбайт, зафиксировано 4 КБ. [Эта опция специфична для
целевой порт компоновщика i386 PE]

--изображение-база ценностное
использование ценностное в качестве базового адреса вашей программы или dll. Это самая низкая память
место, которое будет использоваться при загрузке вашей программы или библиотеки DLL. Чтобы уменьшить потребность в
перемещать и улучшать производительность ваших dll, каждая из которых должна иметь уникальный базовый адрес
и не перекрывать другие DLL. По умолчанию для исполняемых файлов установлено значение 0x400000, и
0x10000000 для dll. [Этот параметр относится к целевому порту i386 PE
компоновщик]

- убить на
Если задан, суффиксы stdcall (@nn) будут удалены из символов, прежде чем они будут
экспортируется. [Этот параметр относится к целевому порту компоновщика i386 PE]

- большие адреса
Если задан, соответствующий бит в поле `` Характеристики '' заголовка COFF равен
установлен, чтобы указать, что этот исполняемый файл поддерживает виртуальные адреса больше 2
гигабайты. Его следует использовать вместе с / 3GB или / USERVA =ценностное мегабайта
в разделе «[операционные системы]» файла BOOT.INI. В противном случае этот бит
не имеет никакого эффекта. [Этот параметр специфичен для портов, нацеленных на PE компоновщика]

--основная-изображение-версия ценностное
Устанавливает старший номер `` версии образа ''. По умолчанию 1. [Этот параметр
специфичен для целевого порта компоновщика i386 PE]

--основная-ОС-версия ценностное
Устанавливает старший номер `` версии ОС ''. По умолчанию 4. [Этот параметр специфичен
на целевой порт компоновщика i386 PE]

--основная-подсистема-версия ценностное
Устанавливает старший номер `` версии подсистемы ''. По умолчанию 4. [Этот параметр
специфичен для целевого порта компоновщика i386 PE]

--второстепенная версия изображения ценностное
Устанавливает младший номер `` версии образа ''. По умолчанию 0. [Этот параметр
специфичен для целевого порта компоновщика i386 PE]

--minor-os-версия ценностное
Устанавливает младший номер `` версии ОС ''. По умолчанию 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
Автоматически выбирать основу образа для библиотек DLL, если она не указана с помощью
Аргумент "--image-base". Используя хэш, сгенерированный из имени библиотеки, для создания уникальных
базы изображений для каждой DLL, коллизии и перемещения в памяти, которые могут задерживать выполнение программы
исполнения избегают. [Этот параметр относится к целевому порту i386 PE
компоновщик]

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

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

--включить автоматический импорт
Выполните сложную привязку «_symbol» к «__imp__symbol» для импорта ДАННЫХ из DLL,
и создайте необходимые символы перехода при создании библиотек импорта с помощью
эти ДАННЫЕ экспортируются. Примечание. Использование расширения "автоматический импорт" приведет к тому, что текст
раздел файла изображения, который нужно сделать доступным для записи. Это не соответствует требованиям PE-COFF.
спецификация формата, опубликованная Microsoft.

Использование "автоимпорта" обычно "просто работает", но иногда вы можете увидеть это
сообщение:

"переменная" не может быть импортирована автоматически. Прочтите документацию по ld
"--enable-auto-import" для подробностей. "

Это сообщение появляется, когда какое-то (под) выражение обращается к адресу, в конечном итоге предоставленному
сумма двух констант (таблицы импорта Win32 допускают только одну). Экземпляры, где это
может происходить, включая доступ к полям-членам структурных переменных, импортированных из DLL,
а также использование постоянного индекса в переменной массива, импортированной из DLL. Любой
многословная переменная (массивы, структуры, long long и т. д.) может вызвать это состояние ошибки.
Однако, независимо от точного типа данных экспортируемой переменной, вызывающей нарушение, ld будет
всегда обнаруживать это, выдавать предупреждение и выходить.

Есть несколько способов решить эту проблему, независимо от типа данных
экспортируемая переменная:

Один из способов - использовать переключатель --enable-runtime-pseudo-reloc. Это оставляет задачу
корректировка ссылок в вашем клиентском коде для среды выполнения, поэтому этот метод работает
только если среда выполнения поддерживает эту функцию.

Второе решение - заставить одну из «констант» быть переменной, то есть
неизвестно и не оптимизируется во время компиляции. Для массивов есть две возможности:
а) сделать индексатора (адрес массива) переменной, или б) сделать "постоянным" индекс
Переменная. Таким образом:

внешний тип extern_array [];
extern_array [1] ->
{изменчивый тип * t = extern_array; т [1]}

or

внешний тип extern_array [];
extern_array [1] ->
{изменчивый int t = 1; extern_array [t]}

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

внешняя структура extern_struct;
extern_struct.field ->
{изменчивая структура s * t = & extern_struct; t-> поле}

or

внешний длинный длинный extern_ll;
extern_ll ->
{volatile long long * local_ll = & extern_ll; * local_ll}

Третий способ справиться с этой трудностью - отказаться от автоматического импорта для
оскорбительный символ и пометьте его «__declspec (dllimport)». Однако на практике
требует использования #defines во время компиляции, чтобы указать, создаете ли вы DLL,
создание клиентского кода, который будет ссылаться на DLL, или просто создание / привязка к статическому
библиотека. Делая выбор между различными методами разрешения `` прямой
адрес с постоянным смещением ', вам следует рассмотреть типичное использование в реальном мире:

Оригинал:

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

Решение 1:

--foo.h
внешний int arr [];
--foo.c
#include "foo.h"
void main (int argc, char ** argv) {
/ * Это обходной путь для win32 и cygwin; не "оптимизировать" * /
изменчивый 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)
#еще
#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
линкера]

--отключить автоматический импорт
Не пытайтесь создать сложную привязку «_symbol» к «__imp__symbol» для ДАННЫХ.
импорт из DLL. [Этот параметр относится к целевому порту i386 PE
компоновщик]

--enable-runtime-псевдо-релок
Если ваш код содержит выражения, описанные в разделе --enable-auto-import, то есть
DATA импортирует из DLL с ненулевым смещением, этот переключатель создаст вектор
«псевдоперемещения времени выполнения», которые могут использоваться средой выполнения для настройки
ссылки на такие данные в вашем клиентском коде. [Эта опция специфична для i386 PE
целевой порт компоновщика]

--disable-runtime-псевдо-релок
Не создавайте псевдоперемещения для импорта ДАННЫХ с ненулевым смещением из DLL. Это
по умолчанию. [Этот параметр относится к целевому порту компоновщика i386 PE]

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

--section-выравнивание
Устанавливает выравнивание раздела. Разделы в памяти всегда будут начинаться с адресов, которые
кратны этому числу. По умолчанию 0x1000. [Эта опция специфична для
i386 PE целевой порт компоновщика]

--куча резерв
--куча резерв,совершать
Укажите объем памяти, который необходимо зарезервировать (и, при необходимости, зафиксировать), который будет использоваться в качестве стека.
для этой программы. По умолчанию зарезервировано 2 МБ, зафиксировано 4 КБ. [Этот вариант
специфичен для целевого порта компоновщика i386 PE]

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

Линкеры 68HC11 и 68HC12 поддерживают определенные опции для управления банком памяти.
отображение коммутации и генерация кода трамплина.

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

--банк-окно имя
Эта опция указывает компоновщику имя области памяти в ПАМЯТЬ
спецификация, описывающая окно банка памяти. Определение такой области:
затем используется компоновщиком для вычисления подкачки страниц и адресов в окне памяти.

ОКРУЖАЮЩАЯ СРЕДА


Вы можете изменить поведение ld с переменными окружения "GNUTARGET",
"LDEMULATION" и "COLLECT_NO_DEMANGLE".

"GNUTARGET" определяет формат объекта входного файла, если вы не используете -b (или его синоним
--формат). Его значение должно быть одним из имен BFD для входного формата. Если нет
«ГНУТАРГЕТ» в среде, ld использует естественный формат цели. Если "GNUTARGET"
установлен на "по умолчанию", тогда BFD пытается обнаружить входной формат, исследуя двоичный
входные файлы; этот метод часто оказывается успешным, но есть потенциальные двусмысленности, так как
нет способа гарантировать, что магическое число, используемое для указания форматов объектных файлов,
уникальный. Однако процедура настройки BFD в каждой системе помещает
обычный формат для этой системы первым в списке поиска, поэтому двусмысленности устранены
в пользу условности.

"LDEMULATION" определяет эмуляцию по умолчанию, если вы не используете -m вариант.
эмуляция может влиять на различные аспекты поведения компоновщика, особенно на компоновщик по умолчанию.
сценарий. Вы можете перечислить доступные эмуляции с помощью --подробный or -V параметры. Если
-m опция не используется, и переменная среды "LDEMULATION" не определена,
эмуляция по умолчанию зависит от того, как был настроен компоновщик.

Обычно компоновщик по умолчанию использует символы разборки. Однако если
"COLLECT_NO_DEMANGLE" установлен в среде, тогда он по умолчанию не будет демонтировать
символы. Эта переменная среды аналогичным образом используется компоновщиком "gcc".
программа-оболочка. Значение по умолчанию может быть отменено - распутать и --no-demangle
настройки.

Используйте h8300-hitachi-coff-ld в Интернете с помощью сервисов onworks.net


Ad


Ad