ld(1)

НАЗВАНИЕ
Редактор связей

СИНТАКСИС
sparc-linux-ld [options] file...

ОПИСАНИЕ

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

При формировании исполняемого файла Редактор имеет два режима работы - статический и динамический.

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

Динамический режим работы Редактора необходим при работе с динамическими объектами и библиотеками. В динамическом режиме Редактор делает ту же работу, что и в статическом, но в два этапа. На первом этапе Редактор собирает все объектные модули в один исполняемый файл, при этом динамические библиотеки в исполняемый файл не попадают. Их загрузка и коррекция кода на предмет разрешения всех ссылок происходит в процессе решения задачи. Это второй этап работы, называемый загрузкой программы. После связывания всех ссылок модулей управление передается задаче.

ОПЦИИ

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

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

Исключения - опции, которые используются обычно больше одного раза: '-L', '-l', '-R', '-u' и '-(' (или --start-group). Для опций, название которых состоит из одной буквы, аргумент опции может идти как сразу после названия опции, так и после пустого символа (например, пробела). Для опций, имена которых состоят из нескольких букв, аргумент должен идти либо после пустого символа, либо после знака равенства ('='). Перед названием опции может быть как два тире, так и одно. Например, '-rpath ' и '--rpath ' описывают одинаковые опции.

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

-a KEYWORD
    Управление динамическими библиотеками в режиме совместимости с HP/UX

-A ARCH, --architecture ARCH
    Установить архитектуру

-b TARGET, --format TARGET
    Установить формат для входных файлов

-c FILE, --mri-script FILE
    Читать скрипт линкера формата MRI

-d, -dc, -dp
    Сделать common-символы определенными

-e ADDRESS, --entry ADDRESS
    Задать стартовый адрес программы

-E, --export-dynamic
    Экспортировать все динамические символы

-EB Линковать объектные файлы формата big-endian

-EL Линковать объектные файлы формата little-endian

-f SHLIB, --auxiliary SHLIB
    Задать вспомогательный фильтр для символьной таблицы динамической библиотеки

-F SHLIB, --filter SHLIB
    Использовать фильтр для символьной таблицы динамической библиотеки

-g  Игнорируется

-G SIZE, --gpsize SIZE
    Задать максимальный размер объектных файлов, оптимизируемых с использованием регистра GP (если размер не задан, опция имеет смысл --shared)

-h FILENAME, -soname FILENAME
    Задать внутреннее имя динамической библиотеки

-I PROGRAM, --dynamic-linker PROGRAM
    Задать программу, используемую в качестве динамического загрузчика

-l LIBNAME, --library LIBNAME
    Использовать библиотеку LIBNAME

-L DIRECTORY, --library-path DIRECTORY
    Добавить DIRECTORY в пути поиска библиотек

--sysroot=<DIRECTORY>
    Переопределить значение sysroot по умолчанию

-m EMULATION
    Задать используемую эмуляцию

-M, --print-map
    Вывести map-файл в стандартный вывод

-n, --nmagic
    Не выравнивать данные на границу страницы

-N, --omagic
    Не выравнивать данные на границу страницы, не устанавливать для кода права доступа "только для чтения"

--no-omagic
    Выравнивать данные на границу страницы, установить для сегмента кода права доступа "только для чтения"

-o FILE, --output FILE
    Установить имя выходного файла

-O  Оптимизировать выходной файл

-Qy Игнорируется для совместимости с SVR4

-q, --emit-relocs
    Генерировать релокейшены в выходном файле

-r, -i, --relocatable
    Создать перемещаемый выходной файл

-R FILE, --just-symbols FILE
    Использовать только символы из входного файла FILE (если задана директория, опция имеет тот же смысл, что и --rpath)

-s, --strip-all
    Вырезать все символы из выходного файла

-S, --strip-debug
    Вырезать все символы, относящиеся к отладочной информации

--strip-discarded
    Вырезать символы, относящиеся к отброшенным секциям

--no-strip-discarded
    Не вырезать символы, относящиеся к отброшенным секциям

-t, --trace
    Трассировать открываемые файлы

-T FILE, --script FILE
    Использовать скрипт линкера FILE

--default-script FILE, -dT
    Использовать FILE в качестве скрипта линкера по умолчанию

-u SYMBOL, --undefined SYMBOL
    Считать символ SYMBOL изначально неопределенным

--unique [=SECTION]
    Не объединять входные секции, удовлетворяющие выражению SECTION

-Ur Строить глобальные таблицы конструкторов/деструкторов

-v, --version
    Напечатать информацию о версии

-V  Напечатать информацию о версии и эмуляциях

-x, --discard-all
    Отбросить все локальные символы

-X, --discard-locals
    Отбросить временные локальные символы (делается по умолчанию)

--discard-none
    Не отбрасывать никакие локальные символы

-y SYMBOL, --trace-symbol SYMBOL
    Трассировать упоминания символа SYMBOL

-Y PATH
    Путь поиска по умолчанию (для совместимости с Solaris)

-(, --start-group
    Начать группу архивов, используемых для неоднократного поиска символов

-), --end-group
    Закончить группу архивов

--accept-unknown-input-arch
    Принимать входные файлы, архитектуру которых невозможно определить

--no-accept-unknown-input-arch
    Не принимать входные файлы, архитектуру которых невозможно определить

--add-needed
    Установить тэги DT_NEEDED, соответствующие DT_NEEDED записям в следующих динамических библиотеках

--no-add-needed
    Не устанавливать тэги DT_NEEDED, соответствующие DT_NEEDED записям в следующих динамических библиотеках

--as-needed
    Устанавливать DT_NEEDED для следующих динамических библиотек, если они используются

--no-as-needed
    Всегда устанавливать DT_NEEDED для следующих динамических библиотек

-assert KEYWORD
    Игнорируется для совместимости с SunOS

-Bdynamic, -dy, -call_shared
    Линковать с динамическими библиотеками

-Bstatic, -dn, -non_shared, -static
    Не линковать с динамическими библиотеками

-Bsymbolic
    Локально связывать глобальные ссылки

-Bsymbolic-functions
    Локально связывать глобальные ссылки на функции

--check-sections
    Проверять адреса секций на пересечение (выполняется по умолчанию)

--no-check-sections
    Не проверять адреса секций на пересечение

--cref
    Вывести таблицу перекрестных ссылок

--defsym SYMBOL=EXPRESSION
    Определить символ

--demangle [=STYLE]
    Деманглировать имена символов [используя стиль STYLE]

--embedded-relocs
    Генерировать встроенные релокейшены

--fatal-warnings
    Рассматривать предупреждения как ошибки

-fini SYMBOL
    Вызывать символ SYMBOL при выгрузке модуля

--force-exe-suffix
    Принудительно генерировать файл с расширением .exe

--gc-sections
    Удалять неиспользуемые секции (на некоторых платформах)

--no-gc-sections
    Не удалять неиспользуемые секции (по умолчанию)

--print-gc-sections
    Вывести имена удаленных неиспользуемых секций в поток ошибок (stderr)

--no-print-gc-sections
    Не выводить имена удаленных неиспользуемых секций

--hash-size=<NUMBER>
    Установить размер хэш-таблицы по умолчанию близким к <NUMBER>

--help
    Распечатать помощь по опциям

-init SYMBOL
    Вызвать символ SYMBOL в процессе загрузки

-Map FILE
    Создать map-файл

--no-define-common
    Запретить присвоение адресов common-символам

--no-demangle
    Не деманглировать имена символов

--no-keep-memory
    Использовать меньше памяти и больше дисковых операций ввода/вывода

--no-undefined
    Не допускать неразрешенные ссылки на символы в объектных файлах

--allow-shlib-undefined
    Допускать неразрешенные ссылки на символы в разделяемых библиотеках

--no-allow-shlib-undefined
    Не допускать неразрешенные ссылки на символы в разделяемых библиотеках

--allow-multiple-definition
    Допускать множественные определения символов

--no-undefined-version
    Не допускать символы с неопределенными версиями

--default-symver
    Устанавливать для символов версию по умолчанию

--default-imported-symver
    Устанавливать для импортируемых символов версию по умолчанию

--no-warn-mismatch
    Не выдавать предупреждений о несовместимых входных файлах

--no-warn-search-mismatch
    Не выдавать предупреждений при нахождении несовместимой библиотеки

--no-whole-archive
    Отключить опцию --whole-archive

--noinhibit-exec
    Создавать выходной файл даже в случае возникновения ошибок

-nostdlib
    Использовать для поиска библиотек лишь директории, заданные в командной строке

--oformat TARGET
    Задать формат выходного файла

-qmagic
    Игнорируется для совместимости с Linux

--reduce-memory-overheads
    Уменьшить использование памяти за счет времени линковки

--relax
    Включить использование оптимизаций на некоторых платформах

--retain-symbols-file FILE
    Оставить только символы, перечисленные в файле FILE

-rpath PATH
    Установить пути поиска библиотек на время исполнения

-rpath-link PATH
    Установить пути поиска библиотек на время линковки

-shared, -Bshareable
    Создать разделяемую библиотеку

-pie, --pic-executable
    Создать позиционно-независимый исполняемый файл

--sort-common
    Сортировать common-символы по размеру

--sort-section name|alignment
    Сортировать секции по имени или максимальному выравниванию

--spare-dynamic-tags COUNT
    Задать количество записей для резервирования в секции .dynamic

--split-by-file [=SIZE]
    Разбивать выходные секции на части через каждые SIZE октетов

--split-by-reloc [=COUNT]
    Разбивать выходные секции на части через каждые COUNT перемещений

--stats
    Вывести статистику использования памяти

--target-help
    Вывести список опций для заданной цели

--task-link SYMBOL
    Создавать перемещаемый выходной файл с конвертацией глобалов в static

--traditional-format
    Использовать формат, совместимый со старыми версиями СП

--section-start SECTION=ADDRESS
    Задать адрес указанной секции

-Tbss ADDRESS
    Задать адрес секции .bss

-Tdata ADDRESS
    Задать адрес секции .data

-Ttext ADDRESS
    Задать адрес секции .text

--unresolved-symbols=<method>
    Как обращаться с неразрешенными символами. <method> может иметь значение: ignore-all (игнорировать все), report-all (сообщать обо всех), ignore-in-object-files (игнорировать при создании объектных файлов), ignore-in-shared-libs (игнорировать при создании разделяемых библиотек)

--verbose
    Выдавать подробную информацию в процессе линковки

--version-script
    Использовать скрипт с информацией о версиях символов

--version-exports-section SYMBOL
    Взять список экспортируемых символов из секции .exports, используя символ SYMBOL в качестве версии

--dynamic-list-data
    Включить все глобальные символы из секций данных в список динамических символов

--dynamic-list-cpp-new
    Использовать встроенный список динамических символов для операторов new/delete языка C++

--dynamic-list-cpp-typeinfo
    Использовать встроенный список динамических символов для хранения информации времени исполнения о типах языка C++

--dynamic-list FILE
    Читать список динамических символов из файла

--warn-common
    Выдавать предупреждение при повторном определении common-символов

--warn-constructors
    Выдавать предупреждение при нахождении глобальных конструкторов/деструкторов

--warn-multiple-gp
    Выдавать предупреждение при использовании в выходном файле нескольких значений глобального указателя

--warn-once
    Выдавать однократное предупреждение для каждого неразрешенного символа

--warn-section-align
    Выдавать предупреждение, при изменении стартового адреса секции из-за выравнивания

--warn-shared-textrel
    Выдавать предупреждение, когда разделяемая библиотека содержит DT_TEXTREL

--warn-unresolved-symbols
    Сообщения о неразрешенных символах имеют статус предупреждения

--error-unresolved-symbols
    Сообщения о неразрешенных символах имеют статус ошибки

--whole-archive
    Включить все объектные файлы из перечисленных архивов

--wrap SYMBOL
    Использовать функцию-wrapper для символа SYMBOL

@FILE
    Читать опции из файла FILE

Поддерживаемые цели: elf32-sparc a.out-sparc-linux elf64-sparc a.out-sunos-big elf64-little elf64-big elf32-little elf32-big srec symbolsrec tekhex binary ihex

Поддерживаемые эмуляции: elf32_sparc sparclinux elf64_sparc sun4

Специальные опции эмуляции elf32_sparc (elf64_sparc)

--build-id[=STYLE]
    Создать уникальный идентификатор выходного файла

-Bgroup
    Использовать данную динамическую библиотеку для поиска в пределах группы

--disable-new-dtags
    Не использовать новые динамические тэги формата ELF

--enable-new-dtags
    Использовать новые динамические тэги

--eh-frame-hdr
    Создать секцию .eh_frame_hdr

--hash-style=STYLE
    Использовать хэш-таблицу стиля sysv, gnu или обоих (both)

-z combreloc
    Объединить динамические релокейшены в одну секцию и отсортировать

-z defs
    Сообщать о неразрешенных символах в объектных файлах

-z execstack
    Исполняемый файл требует стэк с разрешением на исполнение

-z initfirst
    Динамическая библиотека требует инициализации во время исполнения в первую очередь

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

-z lazy
    Объект использует позднее связывание (по умолчанию)

-z loadfltr
    Обрабатывать фильтры объекта незамедлительно

-z muldefs
    Объект допускает неоднократные определения

-z nocombreloc
    Не объединять динамические перемещения в одну секцию

-z nocopyreloc
    Не создавать перемещений, требующих копирования

-z nodefaultlib
    Объект не использует пути поиска по умолчанию

-z nodelete
    Динамическая библиотека не может быть выгружена во время исполнения

-z nodlopen
    Динамическая библиотека не доступна для dlopen

-z nodump
    Динамическая библиотека не доступна для dldump

-z noexecstack
    Исполняемый файл не требует стек с разрешением на исполнение

-z norelro
    Не создавать сегменты с разрешением только для чтения после выполнения перемещений

-z now
    Объект не использует позднее связывание при исполнении

-z origin
    Объект требует немедленной обработки $ORIGIN во время исполнения

-z relro
    Создавать сегменты с разрешением только для чтения после выполнения перемещений

-z max-page-size=SIZE
    Установить размер максимальной страницы в SIZE

-z common-page-size=SIZE
    Установить размер общей страницы в SIZE

-z KEYWORD
    Игнорируется для совместимости с Solaris