Скрипты компоновщика Linux
Скрипты компоновщика Linux представляют большой интерес, потому что они интерпретируются компоновщиком и помогают формировать макет программы с учетом разделов, памяти и символов.
Скрипт компоновщика по умолчанию можно просмотреть с помощью команды:
ld -verbose
Программа ld имеет свой собственный язык программирования, который интерпретируется, когда программа получает на вход файлы (такие как перемещаемые объектные файлы, разделяемые библиотеки и файлы заголовков). Этот язык программирования, также используется для того, чтобы определить, как будет организован выходной файл, например исполняемая программа. К примеру, если на выходе получается исполняемый файл формата ELF, сценарий компоновщика поможет определить, какой будет структура файла и в каких сегментах будут размещаться определённые секции. Вот еще один пример: секция .bss всегда расположена в конце сегмента данных. Этот факт также определяется сценарием компоновщика. Вам наверное интересно, для чего именно, это может вам пригодиться? Во-первых, важно иметь чёткое представление о том, как происходит процесс связывания во время компиляции. Компилятор GCC использует компоновщик и некоторые другие программы для выполнения этой задачи. В некоторых случаях очень важно иметь возможность контролировать структуру исполняемого файла.
Командный язык программы ld - это довольно сложный язык и обсуждение его синтаксиса и особенностей выходит за рамки данной статьи, но я настоятельно рекомендую Вам, найти время, силы и самостоятельно его изучить, поверьте оно того стоит!
При работе с исполняемыми файлами, обратите внимание, иногда бывает так, что адреса общих сегментов могут оказаться изменёнными, впрочем, как и остальные части структуры исполняемого файла. Это указывает на то, что используется модифицированный скрипт компоновщика. Сценарий компоновщика может быть указан с помощью компилятора gcc, при помощи использования параметра -T.