Линкер - это компонент компилятора, который используется для объединения нескольких файлов объектного кода из различных источников в один исполняемый файл. Его основная задача - разрешить ссылки между файлами (разрешение символов) и выполнить перемещение сегментов памяти, чтобы все данные в программе были правильно связаны друг с другом.
Линкеры используются на многих платформах, но особенно распространены в контексте персональных компьютеров (ПК). Они часто используются в процессе разработки приложений и служат для организации большого объема кода в более компактный файл.
Линкеры обычно входят в состав пакета компилятора, а также могут использоваться для компоновки библиотек, как из среды разработки (статическая компоновка), так и, возможно, из других библиотек (динамическая компоновка).
Основными этапами редактирования ссылки являются:
1. Поиск в библиотеке - поиск в списке библиотек необходимого кода.
2. Разрешение символов - Разрешение ссылок между объектами и их реализацией.
3. Объединение объектного кода - объединение объектных программ в одну исполняемую программу.
4. Перемещение адреса - корректировка ссылок в коде, в случае если загруженные сегменты расположены не в тех адресах памяти, которые указаны в коде.
5. Отладочная информация - генерация отладочной информации для облегчения отладки.
Линкеры также могут выполнять такие задачи, как запуск дополнительных скриптов для выполнения дополнительной конфигурации, добавление проверок безопасности в приложение и обеспечение совместимости с другими платформами.
Компьютерные вирусы также были созданы для вредоносного использования, а именно для заражения и связывания вредоносного кода в существующие программы. Поэтому одной из важнейших задач компоновщика является обеспечение безопасности и сохранности компонуемой программы.