Как запустить makefile под WINDOWS.

Нарыл я проект LUFA. ТУТ
Скачал код, а там торчит makefile. Самой прошивки там нет, чтоб сразу залить в микроконтроллер. Значит надо запустить сборку makefile чтоб родился hex файл. А как это сделать? Без понятия. А надо. Начал рыть. Помог один товарищ линуксоид. Вместе с ним поколупались и нарыли вот что.
1). Установить прогу mingw-get-inst-20120426.exe. В одном из окон при установке галочку поставить напротив msys. Эта прога есть здесь.
2). Установить прогу bc-1.06-2.exe. Отсюда.
3). Указать путь для переменной PATH в XP 32bit,
Переменная PATH находится здесь.
Компьютер/свойства/дополнительно/переменные среды.
C:\MinGW\msys\1.0\bin;
C:\Program Files\GnuWin32\bin;
C:\Program Files\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin
Для WINDIWS_7 64bit
C:\MinGW\msys\1.0\bin;
C:\Program Files (x86)\GnuWin32\bin;
C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin
4).Открыть консоль, зайти в нужную папку где находится файл make. Набрать команду make. Вот и все. Там же и появится желанный hex файл. Команда Make clean очищает от прежней сборки файлов.
Вот можно видео глянуть как это происходит.
Продолжение здесь.
- 0
- 19 мая 2013, 21:36
- Papandopala
Сборка makefileэто как-то неестественно звучит. А впрочем, да, есть же autoconf, automake.
И видео почему-то невидимо.
Чета глюк какой то с видео. Сделал все по правилам, а оно не отображается. Но я сделал по другому, теперь отображается. Так напиши статейку дополнительно, почему нет? Я сам бы с удовольствием почитал. Я начал рыть здесь и ничего не нашел на эту тему. Вот как смог так смог.
- Papandopala
- 20 мая 2013, 08:31
- ↑
- ↓
ну Вы как то все усложнили… надо было просто установить WinAVR и открыть проект LUFA, скомпилировать и радоваться полученному hex :) при желании можно поправить makefile'ы для того, чтоб скомпилировало не всё подряд, а только чтото определённое.
Все подряд не компилируется. Заходишь в нужную папку и набираешь make. Компилируется только то что в папке.
- Papandopala
- 20 мая 2013, 08:42
- ↑
- ↓
как это не компилируется? возможно мы по разному пользуемся установленным WinAVR.
Открываем Programmers Notepad, потом проект Lufa и make All:

и всё получается.
Открываем Programmers Notepad, потом проект Lufa и make All:

и всё получается.
Я не это имел виду. Компилится только та часть, которую я сам и компилирую. Можно все зараз, можно по частям. Нет проблем.
- Papandopala
- 20 мая 2013, 16:24
- ↑
- ↓
А этот Programmers Notepad надо отдельно устанавливать? Где он находится?
- Papandopala
- 21 мая 2013, 15:37
- ↑
- ↓
Установил только что, и нет чета. Посмотри куда указывает шорткат. В кукую папку?
- Papandopala
- 21 мая 2013, 15:47
- ↑
- ↓
>>под 6й версией, а программатором пользуюсь из под 4ой
Для прошивки можно использовать bat-файл. Его можно вызывать как external tool. Запускать всю 4-ку необязательно.
Для прошивки можно использовать bat-файл. Его можно вызывать как external tool. Запускать всю 4-ку необязательно.
пользуюсь AVRISP mkii на основе at90usb162, прошивка с lufa (с повешенным номером версии, чтоб в 6.1 работало) и прекрасно проекты заливаются напрямую с Atmel Studio 6.1 и 5й.
и даже не знаю, какие тут проблемы могут возникнуть… всё в проекте lufa описанно.
ну еси батники городить интереснее — то ничего не поделаешь, видимо Вы линуксоид :)
и даже не знаю, какие тут проблемы могут возникнуть… всё в проекте lufa описанно.
ну еси батники городить интереснее — то ничего не поделаешь, видимо Вы линуксоид :)
Вот вот, я тоже хочу себе такой программатор AVRISP mkii забабахать. Завтра должен получить AT90USB162. Ну и останется только собрать. По какой схеме собирал? не поделишся?
- Papandopala
- 20 мая 2013, 16:27
- ↑
- ↓
собирал тот, что тут же, в сообщесте есть схема там в приложении. НО. с прошивкой оттуда максимум на 5й Студии запустите. Прошиваем на ту, чт в Lufa и светодиоды тогда бесполезны (и один из них по схеме ещё висит получается на выходе тактирования, может мешать малость). так чт, собираем по той схеме, за исключением светодиодов (выбрасываем всё или переназначаем в lufa при желании) а так же находим в LUFA-130303\AVRISP-MKII версию прошивки MKII и увеличиваем. (иначе Atmel Studio 6,1 ругается и предлагает обновиться)
вот и всё :)
вот и всё :)
и один из них по схеме ещё висит получается на выходе тактирования, может мешать малостьЭто на каком выводе? 27й?
а так же находим в LUFA-130303\AVRISP-MKII версию прошивки MKII и увеличиваемНе совсем понял, что нужно увеличить?
- Papandopala
- 23 мая 2013, 20:29
- ↑
- ↓
Сборка makefileMakefile — это файл с правилами по которым собирается проект. Сам Makefile собирать не надо. И от операционной системы это не зависит.
С козырей зашел :)
Я бы назвал по другому. Например «Использование GNU-утилит для сборки проектов в винде».
Я бы назвал по другому. Например «Использование GNU-утилит для сборки проектов в винде».
Зря послушал — плохо переименовал: слишком заумно и на целую главу в книжке потянет, а сути про то как запустить makefile нет.
Лучше так: How run AVR GCC makefile on Windows
Лучше так: How run AVR GCC makefile on Windows
- well-man2000
- 20 мая 2013, 16:40
- ↑
- ↓
Увожаемый, прекратите переименовывать пост! Это влечет за собой массу технических последствий, а которых вы, наверное, пока не знаете… А то я уже заеб… ся чистить РСС от этих телодвижений=)
От операционной системы может зависеть очень многое: библиотеки, компиляторы и т. п., и makefile должен учитывать эти различия. Если нужна переносимость программы, то для сборки многоплатформенного makefile часто используются GNU Autotools. Тогда makefile генерируется на стороне пользователя путём запуска скрипта configure.
Но здесь был более простой случай, проблема была лишь в том, что на windows вообще не было утилиты make.
Но здесь был более простой случай, проблема была лишь в том, что на windows вообще не было утилиты make.
Кроме MinGW имеет смысл обратить внимание ещё на Cygwin. Можно выбирать из тьмы пакетов, Xserver тоже можно поставить…
да что вы хотите от автора, он же только начал в этом разбираться и хочет помочь другим таким же.
но запустить makefile это конечно круто :)
думаю в начале статьи не помешало бы описать истинное назначение makefile а не только проблемы возникшие на разных версиях IDE. вот например для чайников habrahabr.ru/post/155201/ про makefile и его назначение. в свою очередь хотелось бы узнать вкратце про MinGW и Cygwin так сказать основные фичи, достоинства и недостатки и что за хрень Xserver.
но запустить makefile это конечно круто :)
думаю в начале статьи не помешало бы описать истинное назначение makefile а не только проблемы возникшие на разных версиях IDE. вот например для чайников habrahabr.ru/post/155201/ про makefile и его назначение. в свою очередь хотелось бы узнать вкратце про MinGW и Cygwin так сказать основные фичи, достоинства и недостатки и что за хрень Xserver.
MinGW — компилятор, сборка GCC под винду. Cygwin — весь POSIX-слой для винды (грубо говоря, MSYS-макси), в том числе содержит и свой порт GCC под винду. В качестве чисто компилятора под винду обычно используется MinGW (иногда и другие сборки, скажем с Code::Blocks сейчас вроде идет TDM-GCC).
Xserver (точнее, X Window System) — графическая и оконная подсистема никсов.
Xserver (точнее, X Window System) — графическая и оконная подсистема никсов.
да еще бы узнать что означают всякие закорючки в makefile $@ $^ $(CFLAGS) где-то ${CFLAGS} (фигурные скобки вместо простых) еще бывает @srcdir@
если быть точным, то эти куски я привел из файла makefile.in (не знаю может расширение .in что-то означает) так для компиляции моего проекта предлагается процедура из трех действий
./configure
make
make install
а насчет т.н. переменных среды типа PATH и т.п. вовсе не обязательно лезть в настройки ОС, можно написать батник типа
@echo off
set path=C:\MinGW\msys\1.0\bin;C:\Program Files\GnuWin32\bin;C:\Program Files\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin;%path%
make.exe %*
назвать можно make.bat или какой-нибудь другой make и положить его в общедоступное место например в C:\UTILS, который в свою очередь уже добавлен в PATH это удобно в том случае если у вас установлено несколько IDE например у меня установлен AVR Toolchain и Borland cpp builder и у каждого есть свой make.exe лежащий в папке bin и доступный через path что не удобно, но я просто консолью не особо пользуюсь для сборки, но вообще этот AVR Toolchain позволяет себе много вольностей, например рядом с make.exe лежит и dir.exe… да там вообще полный сборник в том числе и линуксовых типа awk
если быть точным, то эти куски я привел из файла makefile.in (не знаю может расширение .in что-то означает) так для компиляции моего проекта предлагается процедура из трех действий
./configure
make
make install
а насчет т.н. переменных среды типа PATH и т.п. вовсе не обязательно лезть в настройки ОС, можно написать батник типа
@echo off
set path=C:\MinGW\msys\1.0\bin;C:\Program Files\GnuWin32\bin;C:\Program Files\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin;%path%
make.exe %*
назвать можно make.bat или какой-нибудь другой make и положить его в общедоступное место например в C:\UTILS, который в свою очередь уже добавлен в PATH это удобно в том случае если у вас установлено несколько IDE например у меня установлен AVR Toolchain и Borland cpp builder и у каждого есть свой make.exe лежащий в папке bin и доступный через path что не удобно, но я просто консолью не особо пользуюсь для сборки, но вообще этот AVR Toolchain позволяет себе много вольностей, например рядом с make.exe лежит и dir.exe… да там вообще полный сборник в том числе и линуксовых типа awk
если быть точным, то эти куски я привел из файла makefile.in (не знаю может расширение .in что-то означает)Это не мейк, а заготовка для automake. Он вызовется из configure и сгенерирует мейкфайл по этой заготовке. Так что если я не ошибаюсь, часть приведенных тобой закорючек относится именно к командами automake.
А вообще, по нему документация есть. Хотя я наслышан, что что make, что automake малосъедобные для ручного приготовления тулзы.
Не совсем понял, зачем ставить toolchain, если уже есть установленный, например в Atmel Studio 6.1.
Обычно я компилирую под виндой следующим образом:
1. Делаю командник в каталоге, где лежит makefile для сборки, т.е. создаю файл, например, с именем build.cmd.
2. В него вставляю следующий текст:
Здесь C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\ — путь к make файлу из нужного тулчейна,
C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\ — путь к бинарникам в тулчейне.
Последняя строка — вызов сборки с указанием двух targets: clean — очистка и all — сборка. Если нужно, можно указать другие targets, они все будут собраны/выполнены.
Что дальше? Запускаю — LUFA собрана.
Обычно так делается, чтобы неиметь компостировать себе мозги с путями, которые есть в PATH в системе.
Разумеется, если есть другой тулчейн, просто заменить пути в build.cmd и компилировать другим компилятором.
Profit!
Разумеется есть и более другие способы, но в данном случае (сборка LUFA) — проще не придумаешь.
Обычно я компилирую под виндой следующим образом:
1. Делаю командник в каталоге, где лежит makefile для сборки, т.е. создаю файл, например, с именем build.cmd.
2. В него вставляю следующий текст:
SET PATH=C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\;C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\;%PATH%
@make clean all
Здесь C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\ — путь к make файлу из нужного тулчейна,
C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\ — путь к бинарникам в тулчейне.
Последняя строка — вызов сборки с указанием двух targets: clean — очистка и all — сборка. Если нужно, можно указать другие targets, они все будут собраны/выполнены.
Что дальше? Запускаю — LUFA собрана.
Обычно так делается, чтобы не
Разумеется, если есть другой тулчейн, просто заменить пути в build.cmd и компилировать другим компилятором.
Profit!
Разумеется есть и более другие способы, но в данном случае (сборка LUFA) — проще не придумаешь.
вызов сборки с указанием двух targets: clean — очистка и all — сборкаТаргет — вариант сборки, release, debug или варианты release-а. А clean и all — это указания утилите make. Сначала make выполняет all, сборку. После этого make выполняет clean, удаляет все промежуточные файлы(напр. объектные) которые были необходимы для полной сборки.
С т.з. makefile, таргет — это просто набор действий и, как уже справедливо отметили, они все равноправны. Make на входе получает список таргетов и последовательно их собирает.
И откуда Ваша последовательность all clean появилась — я не понял.
И откуда Ваша последовательность all clean появилась — я не понял.
Ну, выполнить make clean make all иногда рекомендуют, если сборка завершилась с ошибкой — типа при продолжении сборки могут появиться какие-то ошибки из-за того, что не перекомпилируются какие-то там неправильно собравшиеся объектники, поэтому лучше пересобрать начисто. Не помню только у какой проги я эти рекомендации видел.
С полно сборкой всё просто, я почти всегда её делаю, потому что приходится менять хидеры, а отслеживание зависимостей не в каждом make выполняется корректно (приходилось работать и с такими системами). Vga, Вы правы, а то, что написал Logic, я не понял.
Совершенно правильно, сначала убираем старое(clean), затем новая сборка. Иначе можно со старыми объектниками собрать. Но и после сборки можно убрать лишнее, особенно если проект большой. Хотя это не обязательно.
По «терминологии» таргетом в makefile-е является всё, что указано до двоеточия. В этом числе не только конечный файл, но и о объектные файлы, и clean. Не знал.
По «терминологии» таргетом в makefile-е является всё, что указано до двоеточия. В этом числе не только конечный файл, но и о объектные файлы, и clean. Не знал.
тулчейн стоит потому что студия 4.х, просто давно ей не пользовался. в то время была доступна 5бета (если не ошибаюсь там уже был встроеный тулчейн), но что-то мне не понравилось и я откатился обратно. как-то все руки не доходят :(, рутина заела и в мире есть столько всего другого интересного.
а про батник я написал т.к. автору явно не нужно по сто раз на дню что-то компилить через мейки и для этого лезть и править такие глобальные вещи, которые гораздо позже могут и боком выйти.
например тот же dir.exe я далеко не сразу заметил что эта хрень теперь вместо системной команды — опять же не часто вводишь dir в консоле, как то больше люблю фар
а про батник я написал т.к. автору явно не нужно по сто раз на дню что-то компилить через мейки и для этого лезть и править такие глобальные вещи, которые гораздо позже могут и боком выйти.
например тот же dir.exe я далеко не сразу заметил что эта хрень теперь вместо системной команды — опять же не часто вводишь dir в консоле, как то больше люблю фар
Подскажите пожалуйста сделал по инструкции, пытался собрать makefile для AVRISP-MKII.
компилятор ругается так
Error makefile 32: Command syntax error
Error makefile 33: Command syntax error
Error makefile 34: Command syntax error
Error makefile 35: Command syntax error
Error makefile 36: Command syntax error
Error makefile 37: Command syntax error
Error makefile 38: Command syntax error
Error makefile 39: Command syntax error
Error makefile 40: Command syntax error
на вот эти строчки
# Default target
all:
# Include LUFA build script makefiles
include $(LUFA_PATH)/Build/lufa_core.mk
include $(LUFA_PATH)/Build/lufa_sources.mk
include $(LUFA_PATH)/Build/lufa_build.mk
include $(LUFA_PATH)/Build/lufa_cppcheck.mk
include $(LUFA_PATH)/Build/lufa_doxygen.mk
include $(LUFA_PATH)/Build/lufa_dfu.mk
include $(LUFA_PATH)/Build/lufa_hid.mk
include $(LUFA_PATH)/Build/lufa_avrdude.mk
include $(LUFA_PATH)/Build/lufa_atprogram.mk
windows xp, avrstudio 6,
куда рыть подскажите пожалуйста!
компилятор ругается так
Error makefile 32: Command syntax error
Error makefile 33: Command syntax error
Error makefile 34: Command syntax error
Error makefile 35: Command syntax error
Error makefile 36: Command syntax error
Error makefile 37: Command syntax error
Error makefile 38: Command syntax error
Error makefile 39: Command syntax error
Error makefile 40: Command syntax error
на вот эти строчки
# Default target
all:
# Include LUFA build script makefiles
include $(LUFA_PATH)/Build/lufa_core.mk
include $(LUFA_PATH)/Build/lufa_sources.mk
include $(LUFA_PATH)/Build/lufa_build.mk
include $(LUFA_PATH)/Build/lufa_cppcheck.mk
include $(LUFA_PATH)/Build/lufa_doxygen.mk
include $(LUFA_PATH)/Build/lufa_dfu.mk
include $(LUFA_PATH)/Build/lufa_hid.mk
include $(LUFA_PATH)/Build/lufa_avrdude.mk
include $(LUFA_PATH)/Build/lufa_atprogram.mk
windows xp, avrstudio 6,
куда рыть подскажите пожалуйста!
Гигантское спасибо, всё работает! Только нужно поменять путь к тулчейну, там теперь версия 3.4.1056 (на август 2015)
Только теперь это можно сделать в разы проще. Прямо в среде AtmelStudio 6. Для этого надо установить плагин в студии через Extension Manager. Плагин называется LUFA library. Потом открываешь проект Lufa в самой студии и выбираешь в Lufa программатор AvrIsp-Mkiiи компилируешь средствами студии, и все, получаешь готовый hex файл для программатора.
- Papandopala
- 06 августа 2015, 22:49
- ↑
- ↓
Выявилась еще такая беда:
у меня кроме AVR Studio еще и Embarcadero стоит поэтому при компиляции выводится ошибка
MAKE Versiov 5.41 Copyright (C) 1987. 2014 Embarcadero Technologies. Inc
как указать что нужно другим компилятором пользоваться
у меня кроме AVR Studio еще и Embarcadero стоит поэтому при компиляции выводится ошибка
MAKE Versiov 5.41 Copyright (C) 1987. 2014 Embarcadero Technologies. Inc
как указать что нужно другим компилятором пользоваться
- Sergey1985
- 16 ноября 2015, 16:16
- ↓
Комментарии (75)
RSS свернуть / развернуть