Отправлено
Vit 07 мая 2007 г. 15:22
В ответ на: Ответ: отправлено
<font color=gray>Неофит</font> 07 мая 2007 г. 13:32
Есть компилятор. Есть линкер. Есть makefile - скрипт выполненеия для утилиты make. Запускается на компиляцию текст программы, на выходе получается объектный файл/ы - это в makefile написано какие файлы откуда подставить и как вызвать компилятор. Затем запускается линкер, который , если грубо, подставляет в объектные файлы адреса и собирает программу в единое целое - это тоже make запускает по записанному правилу, при этом линкер выполняет скрипт линкера, который лежит отдельно (и его иногда нужно править). В AVR-GCC выходной формат линкера, правда, не hex (кажись elf), а для перегонки в hex отдельной утилитой надругиваются над ним - это тоже в makefile написано как вызывать и чего подставлять. Опции компиляции, такие, как тип проца, могут браться из некоторых определений препроцессора, а можно их самому вписывать (в строку вызова компилятора), и для линкера они тоже нужны. По сути между компилятором и линкером взаимодействие никакое. И для того, чтобы таки обеспечить какие-то способы взаимодействия, появляются и используются временные параметры, хранящиеся на этапе выполнения makefile. Можно всё руками позапускать без make и всё должно работать, только заманаться можно если каждый раз всё писать. Это в общем. Что не так - прошу коллег поправить. :)И не знаю, нужно ли было Вам это рассказывать. Может Вас только нюансы интересуют - тогда нужно спрошать ReAl, klen и может ещё кто откликнется. Стиль Unix в общем - для каждого дела своя тулза. А собрать в кучу для выполнения - скриптовые языки помогают.