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

Не так давно я пересел на AtmelStudio6 с AVRStudio4. Есть у меня классный программатор клон STK500. Который просто прекрасно работает с 4й версией. Вот и получается, что пишу я теперь проги под 6й версией, а программатором пользуюсь из под 4ой. Неудобно как то. Попробовал подключить программатор к 6й. Работает через пень колоду. То работает, то не работает. Решил я сделать новый, чтоб работал по 6й версией и не пукал. Решил что это будет AVRISP mkII.

Нарыл я проект 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 очищает от прежней сборки файлов.
Вот можно видео глянуть как это происходит.
Продолжение здесь.

Комментарии (75)

RSS свернуть / развернуть
Сборка makefile
это как-то неестественно звучит. А впрочем, да, есть же autoconf, automake.
И видео почему-то невидимо.
0
Чета глюк какой то с видео. Сделал все по правилам, а оно не отображается. Но я сделал по другому, теперь отображается. Так напиши статейку дополнительно, почему нет? Я сам бы с удовольствием почитал. Я начал рыть здесь и ничего не нашел на эту тему. Вот как смог так смог.
0
This video is private.
If the owner of this video has granted you access, please log in.
0
Исправил.
0
А winavr уже не канает?
0
оу, пока писал — меня опередили ;)
0
Да нет почему. Может у тебя какой нибудь другой способ есть для сборки, так опиши его.
0
я WinAVR имею в виду, когда зашёл комента этого не было. начал писать, отправил и выше моего уже появился этот комент :)
0
ну Вы как то все усложнили… надо было просто установить WinAVR и открыть проект LUFA, скомпилировать и радоваться полученному hex :) при желании можно поправить makefile'ы для того, чтоб скомпилировало не всё подряд, а только чтото определённое.
0
Все подряд не компилируется. Заходишь в нужную папку и набираешь make. Компилируется только то что в папке.
0
как это не компилируется? возможно мы по разному пользуемся установленным WinAVR.
Открываем Programmers Notepad, потом проект Lufa и make All:

и всё получается.
0
Я не это имел виду. Компилится только та часть, которую я сам и компилирую. Можно все зараз, можно по частям. Нет проблем.
0
А этот Programmers Notepad надо отдельно устанавливать? Где он находится?
0
вместе с WinAVR устанавливается по умолчанию.
0
Установил только что, и нет чета. Посмотри куда указывает шорткат. В кукую папку?
0
Поставил WINAVR на другой комп, там все появилось.
0
видимо при установке отменил :)
0
>>под 6й версией, а программатором пользуюсь из под 4ой
Для прошивки можно использовать bat-файл. Его можно вызывать как external tool. Запускать всю 4-ку необязательно.
0
Так напиши про это, а лучше видео выложи, так понятнее будет.
0
Да, представляю себе видео: Запускае блокнот, набираем предложение, сохраняем с расширением *.bat, запускаем полученный батник — ёпты-крута! команду пусть с видео в блокнотик перепечатывают. :)
+1
пользуюсь AVRISP mkii на основе at90usb162, прошивка с lufa (с повешенным номером версии, чтоб в 6.1 работало) и прекрасно проекты заливаются напрямую с Atmel Studio 6.1 и 5й.
и даже не знаю, какие тут проблемы могут возникнуть… всё в проекте lufa описанно.

ну еси батники городить интереснее — то ничего не поделаешь, видимо Вы линуксоид :)
0
Вот вот, я тоже хочу себе такой программатор AVRISP mkii забабахать. Завтра должен получить AT90USB162. Ну и останется только собрать. По какой схеме собирал? не поделишся?
0
собирал тот, что тут же, в сообщесте есть схема там в приложении. НО. с прошивкой оттуда максимум на 5й Студии запустите. Прошиваем на ту, чт в Lufa и светодиоды тогда бесполезны (и один из них по схеме ещё висит получается на выходе тактирования, может мешать малость). так чт, собираем по той схеме, за исключением светодиодов (выбрасываем всё или переназначаем в lufa при желании) а так же находим в LUFA-130303\AVRISP-MKII версию прошивки MKII и увеличиваем. (иначе Atmel Studio 6,1 ругается и предлагает обновиться)
вот и всё :)
0
и один из них по схеме ещё висит получается на выходе тактирования, может мешать малость
Это на каком выводе? 27й?
а так же находим в LUFA-130303\AVRISP-MKII версию прошивки MKII и увеличиваем
Не совсем понял, что нужно увеличить?
0
На какой частоте работает загрузчик в AT90USB162 не в курсе?
0
0
Сборка makefile
Makefile — это файл с правилами по которым собирается проект. Сам Makefile собирать не надо. И от операционной системы это не зависит.
0
Как бы ты назвал, давай переименуем.
0
С козырей зашел :)
Я бы назвал по другому. Например «Использование GNU-утилит для сборки проектов в винде».
0
Сделал по твоему. Пускай все правильно и грамотно будет.
0
Зря послушал — плохо переименовал: слишком заумно и на целую главу в книжке потянет, а сути про то как запустить makefile нет.

Лучше так: How run AVR GCC makefile on Windows
0
А это идея.
0
Увожаемый, прекратите переименовывать пост! Это влечет за собой массу технических последствий, а которых вы, наверное, пока не знаете… А то я уже заеб… ся чистить РСС от этих телодвижений=)
0


Оператор РСС: Чо за х… кто помехи ставит?
0
Увожаемый, прекратите переименовывать пост! Это влечет за собой массу технических последствий, а которых вы, наверное, пока не знаете…
…Но о которых скоро узнаете. Звучит таинственно и даже интригующе.
+1
Ну я то как-бы пользуюсь RSS и при каждой смене названия, у меня просто накакано повторных комментариев…
0
Прости братка, больше какать так не буду. Я ж не знал чесслово.
+1
Да, насколько знаю я, Ди тоже не в восторге от таких маневров
0
Как запустить makefile под WINDOWS.
Неплохой заголовок.
Кратко и по сути проблемы.
0
Еще лучше… Те же яйца, но с другой стороны.
0
От операционной системы может зависеть очень многое: библиотеки, компиляторы и т. п., и makefile должен учитывать эти различия. Если нужна переносимость программы, то для сборки многоплатформенного makefile часто используются GNU Autotools. Тогда makefile генерируется на стороне пользователя путём запуска скрипта configure.
Но здесь был более простой случай, проблема была лишь в том, что на windows вообще не было утилиты make.
0
Спасибо за ликбез, возможно кому-нидь и пригодится.
Если что, я автотулзами уже больше десяти лет пользуюсь.
0
Вообще-то, это зависит от тулчейна, с которым собирали нечто. А насколько разные тулчейны под операционные системы — это другое дело
0
Ага, так об этом я и говорю. В частности, на виндовс из коробки вообще нет никакого тулчейна.
0
Кроме MinGW имеет смысл обратить внимание ещё на Cygwin. Можно выбирать из тьмы пакетов, Xserver тоже можно поставить…
0
да что вы хотите от автора, он же только начал в этом разбираться и хочет помочь другим таким же.
но запустить makefile это конечно круто :)
думаю в начале статьи не помешало бы описать истинное назначение makefile а не только проблемы возникшие на разных версиях IDE. вот например для чайников habrahabr.ru/post/155201/ про makefile и его назначение. в свою очередь хотелось бы узнать вкратце про MinGW и Cygwin так сказать основные фичи, достоинства и недостатки и что за хрень Xserver.
0
MinGW — компилятор, сборка GCC под винду. Cygwin — весь POSIX-слой для винды (грубо говоря, MSYS-макси), в том числе содержит и свой порт GCC под винду. В качестве чисто компилятора под винду обычно используется MinGW (иногда и другие сборки, скажем с Code::Blocks сейчас вроде идет TDM-GCC).
Xserver (точнее, X Window System) — графическая и оконная подсистема никсов.
0
  • avatar
  • Vga
  • 21 сентября 2013, 19:06
да еще бы узнать что означают всякие закорючки в 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
0
если быть точным, то эти куски я привел из файла makefile.in (не знаю может расширение .in что-то означает)
Это не мейк, а заготовка для automake. Он вызовется из configure и сгенерирует мейкфайл по этой заготовке. Так что если я не ошибаюсь, часть приведенных тобой закорючек относится именно к командами automake.
А вообще, по нему документация есть. Хотя я наслышан, что что make, что automake малосъедобные для ручного приготовления тулзы.
0
  • avatar
  • Vga
  • 21 сентября 2013, 19:01
make для небольших проектов вполне можно готовить руками.
+1
Не совсем понял, зачем ставить toolchain, если уже есть установленный, например в Atmel Studio 6.1.
Обычно я компилирую под виндой следующим образом:
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 собрана.
Обычно так делается, чтобы не иметь компостировать себе мозги с путями, которые есть в PATH в системе.
Разумеется, если есть другой тулчейн, просто заменить пути в build.cmd и компилировать другим компилятором.
Profit!
Разумеется есть и более другие способы, но в данном случае (сборка LUFA) — проще не придумаешь.
0
вызов сборки с указанием двух targets: clean — очистка и all — сборка
Таргет — вариант сборки, release, debug или варианты release-а. А clean и all — это указания утилите make. Сначала make выполняет all, сборку. После этого make выполняет clean, удаляет все промежуточные файлы(напр. объектные) которые были необходимы для полной сборки.
0
Ну вообще-то, с точки зрения make, all и clean — два равноправных таргета.
0
  • avatar
  • Vga
  • 22 сентября 2013, 06:24
С т.з. makefile, таргет — это просто набор действий и, как уже справедливо отметили, они все равноправны. Make на входе получает список таргетов и последовательно их собирает.
И откуда Ваша последовательность all clean появилась — я не понял.
0
Ну, выполнить make clean make all иногда рекомендуют, если сборка завершилась с ошибкой — типа при продолжении сборки могут появиться какие-то ошибки из-за того, что не перекомпилируются какие-то там неправильно собравшиеся объектники, поэтому лучше пересобрать начисто. Не помню только у какой проги я эти рекомендации видел.
0
  • avatar
  • Vga
  • 22 сентября 2013, 11:35
С полно сборкой всё просто, я почти всегда её делаю, потому что приходится менять хидеры, а отслеживание зависимостей не в каждом make выполняется корректно (приходилось работать и с такими системами). Vga, Вы правы, а то, что написал Logic, я не понял.
0
Точнее, не в каждом makefile'е, если я правильно понимаю суть. Сам по себе make не умеет следить за зависимостями, они указываются в скрипте.
В этом плане мне все же больше нравятся модульные языки, вроде паскаля, где каждый объектный модуль зависит только от своего исходного файла.
0
  • avatar
  • Vga
  • 22 сентября 2013, 20:27
Это да, я некорректно выразил мысль. Все зависимости в makefile, мы вообще их прописывали во внешнем файле.
А мы сейчас используем MSVC, там хорошо отслеживаются зависимости.
0
Совершенно правильно, сначала убираем старое(clean), затем новая сборка. Иначе можно со старыми объектниками собрать. Но и после сборки можно убрать лишнее, особенно если проект большой. Хотя это не обязательно.
По «терминологии» таргетом в makefile-е является всё, что указано до двоеточия. В этом числе не только конечный файл, но и о объектные файлы, и clean. Не знал.
0
тулчейн стоит потому что студия 4.х, просто давно ей не пользовался. в то время была доступна 5бета (если не ошибаюсь там уже был встроеный тулчейн), но что-то мне не понравилось и я откатился обратно. как-то все руки не доходят :(, рутина заела и в мире есть столько всего другого интересного.
а про батник я написал т.к. автору явно не нужно по сто раз на дню что-то компилить через мейки и для этого лезть и править такие глобальные вещи, которые гораздо позже могут и боком выйти.
например тот же dir.exe я далеко не сразу заметил что эта хрень теперь вместо системной команды — опять же не часто вводишь dir в консоле, как то больше люблю фар
0
Подскажите пожалуйста сделал по инструкции, пытался собрать 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,
куда рыть подскажите пожалуйста!
0
пробовал менять это строску «LUFA_PATH = ../../LUFA » из этого же makefile на дерикторию lufa не помогло (((
0
все спасибо, уже разобрался )
0
К «сам разобрался» принято прикладывать и описание того, как разобрался и в чем была проблема…
0
Гигантское спасибо, всё работает! Только нужно поменять путь к тулчейну, там теперь версия 3.4.1056 (на август 2015)
0
Тоже собирал make для AVRISP-MKII
0
Только теперь это можно сделать в разы проще. Прямо в среде AtmelStudio 6. Для этого надо установить плагин в студии через Extension Manager. Плагин называется LUFA library. Потом открываешь проект Lufa в самой студии и выбираешь в Lufa программатор AvrIsp-Mkiiи компилируешь средствами студии, и все, получаешь готовый hex файл для программатора.
0
Блин, я ж ставил в студии LUFA
Не догадался, что так можно
0
Выявилась еще такая беда:
у меня кроме AVR Studio еще и Embarcadero стоит поэтому при компиляции выводится ошибка
MAKE Versiov 5.41 Copyright (C) 1987. 2014 Embarcadero Technologies. Inc
как указать что нужно другим компилятором пользоваться
0
Мутить с переменной Path. Программа ищется в перечисленных в ней директориях в порядке указания оных.
0
Мутить с path не получилось делаю пока так как посоветовал Papandopala. Вот только где выбирать программатор AvrIsp-Mkii
0
1. Cкачать WinAVR
2. Установить (или распаковать?)
3. PROFIT!

Или я опять не понял суть проблемы?
0
АА почему не Atmel AVR Toolchain? WinAVR же после перехода проекта под крылышкоа атмел больше не развивается.
0
А куда развиваться-то?
Главное, чтобы все работало.
А я и не знал, что есть ещё Atmel AVR Toolchain :)
Вот оно че, Михалыч :)
0
Там довольно старый GCC, в новых оптимизатор лучше как минимум.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.