A компилятор и ассемблер принимают в качестве входного исходного кода и создают файлы объектного кода на машинном языке (двоичная форма инструкций процессора). Основное отличие состоит в том, что компилятор принимает исходный код, написанный на языке высокого уровня, например C / C ++, а ассемблер берет исходный код, написанный на определенном языке ассемблера вашей целевой архитектуры (CPU, на котором будет выполняться ваш код). Но некоторые компиляторы могут выводить текст на ассемблере, который затем подается в качестве ввода на ассемблер.
A linker собирает эти файлы объектного кода вместе и создает конечный исполняемый файл (или библиотеку). Хотя некоторые компиляторы / ассемблеры не имеют внешнего компоновщика, так как компоновка выполняется им внутренне.
скрипт компоновщика , в широком смысле, является своего рода файлом конфигурации, который сообщаеткомпоновщик , как объединяет объектные файлы.
разработчик или редактор , где вы вводите исходный код, обычноинтегрированы в интегрированные среды разработки, такие как CodeBlocks и Visual Studio.
Их отношения следующие: Editor
-> Compiler or Assembler
-> Linker (Configured by linker script)
-> Final executable or library
.
У них нет предпочтений . Они делают то, что делают, им не дают выбора, мы говорим им, что делать.
Смотрите эту запись , и Google "скрипты компоновщика" длябольше информации о них и примеры.