Ключевая разница - компоновщик и загрузчик
Компьютерная программа используется для передачи инструкций компьютеру. Он написан с использованием специального языка программирования. Языки программирования, такие как C, Java, являются языками программирования высокого уровня, и они понятны людям, но не компьютеру. Поэтому программа высокого уровня преобразуется в машинный язык с помощью языкового транслятора. Программа, написанная на языке высокого уровня, является исходным кодом. После преобразования переведенный код называется объектным кодом. Компоновщик и загрузчик - это две программы, которые используются для выполнения программы. В этой статье обсуждается разница между компоновщиком и загрузчиком. Компоновщик - это программное обеспечение, которое связывает объектный код с дополнительными файлами, такими как файлы заголовков, и создает исполняемый файл с расширением.exe. Загрузчик - это системное программное обеспечение, которое загружает исполняемый файл, сгенерированный компоновщиком, в оперативную память. В этом ключевое различие между Linker и Loader.
Что такое линкер?
Компьютерная программа - это набор инструкций, данных компьютеру для выполнения определенной задачи. Компьютерная программа может быть написана с использованием языка программирования. Большинство языков программирования относятся к программированию высокого уровня. Они легко понятны и читаются программистом. Эти языки следуют синтаксису, подобному английскому языку. Некоторыми примерами языков высокого уровня являются Java, C и Python. Программа, написанная с использованием языка программирования высокого уровня, называется исходным кодом, исходным файлом или исходной программой. Расширение исходного кода зависит от языка, на котором он был разработан. Если исходный код написан на C++, то расширение файла.cpp. Если исходный код написан на Python, расширение.py.
Даже исходный код понятен программисту; это не понятно компу. Поэтому исходный код следует преобразовать в машинопонятный формат с помощью языкового переводчика. Это может быть компилятор или интерпретатор. Переведенный код известен как объектный код. Код объекта написан на машинном языке. Он состоит из нулей и единицы. Компьютер может напрямую понимать объектный код. Он имеет расширение.obj. Если есть исходный код Test.c, он проходит через компилятор, а преобразованный код становится Test.obj.
Linker - это программа, которая связывает объектный код с дополнительными файлами, такими как файлы заголовков, и создает исполняемый файл с расширением.exe. Программа могла использовать встроенные функции. Функциональные возможности для этих встроенных функций находятся в файлах заголовков. Согласно объясненному выше примеру, объектный код Test.obj добавляется с необходимыми заголовочными файлами с помощью компоновщика. Он создает новый файл, известный как Test.exe. Это исполняемый файл. Следовательно, он может выполняться компьютером.
Что такое загрузчик?
Программа, которая должна выполняться, должна быть помещена в память. Компоновщик связывает объектный код и заголовочные файлы и выводит исполняемый файл. Загрузчик - это системное программное обеспечение, которое загружает исполняемый файл, сгенерированный компоновщиком, в оперативную память. Он выделяет пространство памяти для исполняемого модуля в основной памяти. Таким образом, загрузчик - это часть операционной системы, отвечающая за загрузку программ и библиотек.
Рисунок 01: Порядок загрузки исходного кода в память
Загрузка программы состоит из нескольких шагов. Он включает в себя чтение содержимого исполняемого файла, содержащего инструкцию программы, в память, а также выполнение необходимых подготовительных задач для запуска исполняемого файла. После завершения загрузки операционная система запускает программу, передавая управление загруженному программному коду. Специальные компьютерные системы, такие как встроенные системы, обычно не имеют загрузчиков. Код выполняется непосредственно ПЗУ.
Какова связь между компоновщиком и загрузчиком?
Вывод компоновщика идет к загрузчику
В чем разница между компоновщиком и загрузчиком?
Линкер против загрузчика |
|
Linker - это программа, которая связывает объектный код с дополнительными файлами, такими как файлы заголовков, и создает исполняемый файл с расширением.exe. | Загрузчик - это системное программное обеспечение, которое загружает исполняемый файл, сгенерированный компоновщиком, в оперативную память. |
Ввод | |
Компоновщик получает вывод языкового транслятора, то есть объектный код. | Загрузчик получает вывод от компоновщика, который является исполняемым файлом. |
Функциональность | |
Компоновщик связывает объектный код и заголовочные файлы и выводит исполняемый файл. | Загрузчик загружает исполняемый файл, полученный от компоновщика, в оперативную память. |
Резюме – Линкер против загрузчика
Linker и Loader - это два программных компонента, связанных с выполнением программы. В этой статье обсуждалась разница между компоновщиком и загрузчиком. Компоновщик - это программное обеспечение, которое связывает объектный код с дополнительными файлами, такими как файлы заголовков, и создает исполняемый файл с расширением.exe. Загрузчик - это системное программное обеспечение, которое загружает исполняемый файл, сгенерированный компоновщиком, в оперативную память. В этом разница между Linker и Loader.