|
Как устроен makefile для WINAVR, Помогите начинающему разoбраться в WINAVR |
|
|
|
Sep 25 2006, 15:26
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Начал изучать С++ с применением WINAVR по книге Шпака Программирование на языке Си для AVR и PIC (СD диска у меня нет) при первом же компилировании получил сообщение об ошибке
make.exe: *** No rule to make target `obj/main.o', needed by `sos.elf'. Stop. > Process Exit Code: 2 > Time Taken: 00:01
Думаю что ,что то не так в makefile. Я взял этот файл с какогото примера похожего и задал 3 параметра как описано в книге но не тут то было. В книге Шпака есть несколько слов на эту тему но для файла makefile приведенного на прилагаемом CD. Кто укажет где описан этот файл. Как с ним бороться?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 25)
|
Sep 25 2006, 15:49
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Ну а как с ошибочкой быть. Как ее пройти?
|
|
|
|
|
Sep 25 2006, 16:19
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Хорошо хоть направление дали. Там же десяток 300 страничных доков. В каком хоть? Или прочесть все?
|
|
|
|
|
Sep 25 2006, 18:38
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Цитата(zltigo @ Sep 25 2006, 20:49)  Цитата(Alex_D @ Sep 25 2006, 18:49)  Ну а как с ошибочкой быть. Как ее пройти?
Сделать то, что просят - указать от каких файлов зависит main.o и как он создается из этих файлов. Просмотрел ввесь makefile упоминания о main.o нет. C каких файлов он должен состоять?Нелья ли быть немного снисходительным для learning beginner С++ AVR till morning today.
|
|
|
|
|
Sep 25 2006, 18:46
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Alex_D @ Sep 25 2006, 21:38)  Нелья ли быть немного снисходительным для... Тогда начните с изучения понятий исходные тексты -> компилятор -> объектный код -> линковка -> исполняемый код. До этого говорить о makefile в котором описываются правила создания исполняемого кода из исходных текстов преждевременно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 25 2006, 19:33
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Ну и это называется помощь? Я имею понятие о том что вы пишете больше чемь надо для начинающегою. Но я думаю что makefile достаточно протокольная вещь которую просто нужно знать как откоректировать под свои задачи. Я же учусь и выполняю то что написанов книге. Мне важно чтобы программа из одной команды выполнялась до конца правильно без ошибок. А потом наполнить ее содержанием и усложнить это уже совсем друга задача. Сначала нужно получить инструмент в руки. А Вы устраиваете цирк, вместо того чтобы написать пару слов.
|
|
|
|
|
Sep 25 2006, 19:37
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Alex_D @ Sep 25 2006, 22:33)  А Вы устраиваете цирк, вместо того чтобы написать пару слов. Очень странное представление о цирке. Пару слов написал, полагаю более чем достаточных для придания нужного направления. Про make - придется читать. Если "без понятия" какие действия надо выполнить - сначала разбираться с инструментом. Уровень Ваших знаний мне не ведом, но если бы действительно Цитата Я имею понятие о том что вы пишете больше чемь надо для начинающегою то вопроса: Цитата ..упоминания о main.o нет. C каких файлов он должен состоять? Просто не могло-бы быть. Makefile и все, что с ним связано - это правильный путь который _придется_ пройти. На этом пути начальная планка достаточно высока :-(. И объяснения НИКАК не укладываются в "пару слов" - придется читать и думать, думать, и еще раз думать, дабы ПОНЯТЬ придется. Ссылки давалиcь. Альтернатива "правильному" пользоваться разными мутными визардами с галочками и кнопочками - получить что-то "работающее" без особого труда можно. Выбирайте.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 25 2006, 19:50
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Недавно также пришлось осваивать WinAVR. Ошибки были не такие, как у Вас, но почти все вылечились принудительным прописыванием путей в Autoexec и Config. Попробуйте сначала открыть какой-нибудь проект из примеров в самом WinAVR и скомпилировать его. Если получится - тогда уже копать дальше makefile. В пакет WinAVR входит также генератор/редактор этих файлов. Можно создать makefile и самому. В Вашем случае, похоже, компилятор не находит файлы. Пробуйте по всякому - обязательно получится. А содержимое диска к этой книге - вот:
C_Programming_AVR.ZIP ( 68.52 килобайт )
Кол-во скачиваний: 327
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Sep 25 2006, 20:37
|
Знающий
   
Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768

|
Ловите руководство по GNU Make в переводе Владимира Игнатова и его статью "Эффективное использование GNU Make". К сожалению ссылка на его страничку устарела, а новой ссылки у меня нет. Поэтому выкладываю файлами.
GNU_Make_3_79_russian_manual.htm ( 391.45 килобайт )
Кол-во скачиваний: 2315
Book_EGM.htm ( 97.14 килобайт )
Кол-во скачиваний: 440С уважением.
|
|
|
|
|
Sep 25 2006, 20:42
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Цитата(Nanobyte @ Sep 25 2006, 22:50)  Недавно также пришлось осваивать WinAVR. Ошибки были не такие, как у Вас, но почти все вылечились принудительным прописыванием путей в Autoexec и Config. Попробуйте сначала открыть какой-нибудь проект из примеров в самом WinAVR и скомпилировать его. Если получится - тогда уже копать дальше makefile. В пакет WinAVR входит также генератор/редактор этих файлов. Можно создать makefile и самому. В Вашем случае, похоже, компилятор не находит файлы. Пробуйте по всякому - обязательно получится. А содержимое диска к этой книге - вот:
C_Programming_AVR.ZIP ( 68.52 килобайт )
Кол-во скачиваний: 327Спасибо за теплое словою. Похоже что компилятор не видит исходника. Подставлял исходник и make в сам WINAVR в папку samples -ошибка таже. Но у меня действительно Autoexec пустой. XP ставилась на голый винт. Попробую прописать пути - правда уже подзабыл как это делать. А что нужно в CONFIG?
|
|
|
|
|
Sep 25 2006, 21:14
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(Alex_D @ Sep 26 2006, 00:42)  Но у меня действительно Autoexec пустой. XP ставилась на голый винт. Попробую прописать пути - правда уже подзабыл как это делать. А что нужно в CONFIG? Прошу прощения, я ошибся. В Config прописывать ничего не нужно. А в Autoexec при инсталляции, WinAVR сам пишет пути. Что-то вроде этого: SET PATH=C:\WINAVR\UTILS\BIN;%PATH% SET PATH=C:\WINAVR\BIN;%PATH% Если не получится, выложите файлы, попробую их откомпилировать на рабочем WinAVR.
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Sep 26 2006, 06:50
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Цитата(_Diman_ @ Sep 26 2006, 00:28)  Посмотрите в WinAVR-user-manual пункт 2.3 PATH Environment Variable. Или панель управления-система-дополнительно-переменные среды. В переменную Path довавить C:\WINAVR\BIN;C:\WINAVR\UTILS\BIN При инстоляции WINAVR прописал выше упомянутое. В Autoexec тоже прописал пути как рекомендовано. Папку для рабочих проектов поместил в WINAVR. Результата нет. Мало того компилирую родные проекты с папки SAMPELS происходит следующее. Если сделать MakeALL не очищая папку то компиляция без ошибок. > "make.exe" all make.exe: Nothing to be done for `all'. > Process Exit Code: 0 > Time Taken: 00:00 А еали makeclean > "make.exe" clean rm -rf *.o demo.elf *.eps *.png *.pdf *.bak rm -rf *.lst *.map *.hex *.bin *.srec > Process Exit Code: 0 > Time Taken: 00:01 a потом makeall то результат следующий > "make.exe" all avr-gcc -g -Wall -O2 -mmcu=atmega8 -c -o demo.o demo.c avr-gcc -g -Wall -O2 -mmcu=atmega8 -Wl,-Map,demo.map -o demo.elf demo.o avr-objdump -h -S demo.elf > demo.lst avr-objcopy -j .text -j .data -O ihex demo.elf demo.hex avr-objcopy -j .text -j .data -O binary demo.elf demo.bin avr-objcopy -j .text -j .data -O srec demo.elf demo.srec avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex demo.elf demo_eeprom.hex avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O binary demo.elf demo_eeprom.bin avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O srec demo.elf demo_eeprom.srec > Process Exit Code: 0 > Time Taken: 00:02 Компилятр что видит присуствие всех файлов и говорит что ему делать нечего? Он их не переписывакт при makeall ?
|
|
|
|
|
Sep 26 2006, 07:18
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Alex_D @ Sep 26 2006, 09:50)  Мало того компилирую родные проекты с папки SAMPELS происходит следующее. Все происходит абсолютно правильно. 1. make all - НИЧЕГО вообще не делает, поскольку все уже сделано и ничего не менялось Обращаю внимание, что 'all' и 'clean' это есть просто имена наборов действий описанных в makefile а отнюдь не какие-то встроенные ключи make, посему о правильности поведения при их задании судить можно только по тому КАК они описаны в конкретном makefile. В какой-то мере эти имена общеприняты и в общепринятом применении они выполняют разумные действия. 2. make clean - удалил указанные в makefile выходные файлы 3. make all - сделал все, что было описано в makefile для создания выходных файлов. 0. Ну почитайте наконец-то документацию.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 26 2006, 09:32
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 24-09-06
Пользователь №: 20 644

|
Ошибка найдена! Почемуто mfile при создании пути к исходному файлу прописывал в makefile только хвост пути .../path/name.c вручную ввел путь начиная от С: и все поехало. Для меня это странно. Спасибо всем!
|
|
|
|
|
Sep 27 2006, 14:07
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(Alex_D @ Sep 25 2006, 19:26)  Начал изучать С++ с применением WINAVR по книге Шпака Программирование на языке Си для AVR и PIC (СD диска у меня нет) при первом же компилировании получил сообщение об ошибке
make.exe: *** No rule to make target `obj/main.o', needed by `sos.elf'. Stop. > Process Exit Code: 2 > Time Taken: 00:01
Думаю что ,что то не так в makefile. Я взял этот файл с какогото примера похожего и задал 3 параметра как описано в книге но не тут то было. В книге Шпака есть несколько слов на эту тему но для файла makefile приведенного на прилагаемом CD. Кто укажет где описан этот файл. Как с ним бороться? Если сделать makefile с помощью утилиты MFile входящей в состав WINAVR обычно все путем, кроме одного - по умолчанию там стоит CPPSRC = main.cpp, а ваш исходник судя по приведенному называется sos.с . Если написать ручками SRC =sos.с , а в CPPSRC =, то все будет в порядке.
|
|
|
|
|
Oct 2 2006, 13:51
|
Группа: Новичок
Сообщений: 1
Регистрация: 2-10-06
Пользователь №: 20 899

|
Некоторая хорошая информация о makefile для стартеров: avr-gcc-abc-1
--------------------
|
|
|
|
|
Oct 3 2006, 16:26
|
Частый гость
 
Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133

|
Почитал ветку, сходил по ссылке http://www.sapunoff.ru/1_top/mk/mk04.htmlберу пример кода из ссылки и по указанным шагам начинаю пробовать. Получаю отлуп от Mfile при попытке указать в качестве исходника probe.c - я её так обозвал. Руками правлю Make файл, настраиваю редактор, и... чудо, компиляция проходит без ошибок, только на выходе получаю некий test...hex Смотрю в Mfile, там галочка стоит при вводе пути источника, и указан test... снимаю галочку, делаю Make clean, проверяю пути к probe.c, получаю ошибку, код 2 читаю внимательно, нужно проверить переменную TARGET, прописываю переменную, но получаю тотже результат: > "make" all Makefile:398: *** target pattern contains no `%'. Stop. > Process Exit Code: 2 > Time Taken: 00:01 ЧТО НЕ ТАК? версия редактора2.0.6.1 , мануал 20060421
|
|
|
|
|
Oct 12 2006, 14:57
|
Группа: Новичок
Сообщений: 6
Регистрация: 12-10-06
Пользователь №: 21 255

|
Есть целый урок по созданию makefile для начинающих на http://avr.h15.ru
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|