Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR-GCC & AVR-Toolchain-ы (неск.версий) - одновременное использование, настройка среды, Makefile
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
sunjob
AVR-GCC & AVR-Toolchain-ы (неск.версий) - одновременное использование, настройка среды, Makefile

добрый день

в системе установлен стандартный пакет avr-xxx : avr-binutils, avr-gcc, avr-gdb, avr-libc
тестовый проект с makefile - собирается (используется стандартное develop-окружение, без настроек)

добавил в систему avr-Toolchains, распаковал в свои каталоги (использовались готовые/собранные bin-архивы, с уже собранными тулзами)
~/dev/bin/avr/3.4.2/*
~/dev/bin/avr/3.4.3/*
~/dev/bin/avr/3.5.4/*

ВОПРОС 1:
- возможно ли использовать бинарные/готовые сборки avr-Toolchains в нестандартных PREFIX-каталогах (как у меня)?
- что-бы не было коллизий/пересечений со стандартным набором avr-xxx пакетов (стандартные каталоги)
- если "готовые сборки" - нельзя использовать в нестандартных путях, без особых извращений, то можно не объяснять "почему" :о)

ВОПРОС 2:
- если можно (вопрос 1), то какие переменные окружения надо настраивать? (CXX LD ... etc)
- кроме окружения, что ни-будь еще надо настраивать?

ВОПРОС 3:
- тоже самое, применительно к рабочему makefile?
- мейкфайл в данном случае "псевдо-стандартый", можно найте в инете, переменные develop-окружения не менялись, все по умолчанию, т.е. ни какие каталоги/инклуды не прописывались, поэтому - рассматривать будем "сферический makefile в вакууме"

ВОПРОС 4:
- можно просто "пофилософствовать по теме", возможно ваши мысли пригодятся :о)

спасибо
...

slackware-xx.x (avr-xxx: стандартный набор slackBuild от sl14.2)
https://slackbuilds.org/

avr-toolchains
http://www.microchip.com/avr-support/avr-a...8c-compilers%29
AHTOXA
Цитата(sunjob @ Apr 8 2018, 15:16) *
добавил в систему avr-Toolchains, распаковал в свои каталоги (использовались готовые/собранные bin-архивы, с уже собранными тулзами)
~/dev/bin/avr/3.4.2/*
~/dev/bin/avr/3.4.3/*
~/dev/bin/avr/3.5.4/*

ВОПРОС 1:
- возможно ли использовать бинарные/готовые сборки avr-Toolchains в нестандартных PREFIX-каталогах (как у меня)?
- что-бы не было коллизий/пересечений со стандартным набором avr-xxx пакетов (стандартные каталоги)


По-моему, достаточно просто указать в makefile полный путь к компилятору/линкеру, и всё заработает.
Типа:

Код
TOOL = /home/user/dev/bin/avr/3.4.2/bin/avr-

CC    := $(TOOL)gcc
AS    := $(TOOL)gcc -x assembler-with-cpp
BIN    := $(TOOL)objcopy
OBJCOPY := $(TOOL)objcopy
OBJDUMP := $(TOOL)objdump
SIZE    := $(TOOL)size


sunjob
мне мысль одна покоя не дает rolleyes.gif

т.к. "рекомендуется" atmel-toolchain-ы распаковывать в "стандартный корень", то по всей видимости он и собирается с PREFIX=/usr or PREFIX=/usr/local (точно не помню, читал где-то, то-ли в слакбилдах, то-ли еще где)

если так, то, видимо, будет не достаточно просто компилятор/линковщик запускать, нужно обязательно править под них PATH, и возможно, CX LD ...
AHTOXA
Обычно они умеют находить свои либы в пути относительно исполняемого файла. То бишь, из bin:
../avr/bin/ar, и так далее.
В общем, проще попробовать, чем гадать.
sunjob
Цитата
Обычно они умеют
и
Цитата
проще попробовать

обычно уже попробовал wink.gif и бинарник слопал бибилотеки из стандартных каталогов...(makefile, вроде как, без уточнений каталогов)

интересуюсь, приемущественно, надеясь на "боевых" разрабов, которые с подобной проблемой сталкивались/решали
AHTOXA
Я же написал: makefile должен вызывать тулзы по полному пути. И это работает.

Если уж очень лень править makefile, то надо сделать, как посоветовали на лоре: добавить путь к нужной bin-директории в PATH (только добавлять в начало, а не в конец, как там посоветовали).
sunjob
Цитата
makefile должен вызывать тулзы по полному пути

пробовал всяко, не тупее веника biggrin.gif

Цитата
уж очень лень править makefile

совсем не лень, с огромным удовольствием, даже аппетит улучшился

Цитата
только добавлять в начало, а не в конец

ну я на это "как бы" и намекнул автору сообщения biggrin.gif

UPDATE

рихтанул makefile
Код
ifeq ($(AVR_VER), DEF)
### Default PREFIX
AVR             = /usr
else
### Custom ATMEGA PREFIX
AVR             = ~/dev/bin/avr/$(AVR_VER)
PATH            = /bin:$(AVR)/bin:$(AVR)/avr/bin
CPPFLAGS_X      = -I$(AVR)/include -I$(AVR)/i686-pc-linux-gnu/avr/include -I$(AVR)/avr/include
LDFLAGS_ X      = -L$(AVR)/lib -L$(AVR)/avr/lib -L$(AVR)/i686-pc-linux-gnu/avr/lib
endif

...

CPPFLAGS += $(CPPFLAGS_X)
LDFLAGS  += $(LDFLAGS_X)

...

CC       = $(AVR)/bin/avr-gcc
OBJCOPY  = $(AVR)/bin/avr-objcopy
OBJDUMP  = $(AVR)/bin/avr-objdump
SIZE     = $(AVR)/bin/avr-size
NM       = $(AVR)/bin/avr-nm



с первого взгляда собирается, но, видимо, надо дотошно тестировать
буду благодарен, если укажете на что обратить внимание, кроме очевидных вещей ...
_Pasha
Цитата(sunjob @ Apr 8 2018, 13:16) *
ВОПРОС 4:
- можно просто "пофилософствовать по теме", возможно ваши мысли пригодятся :о)

Код
~$ avr-gcc -print-search-dirs
install: /usr/lib/gcc/avr/4.9.2/
programs: =/usr/lib/gcc/avr/4.9.2/:/usr/lib/gcc/avr/4.9.2/:/usr/lib/gcc/avr/:/usr/lib/gcc/avr/4.9.2/:/usr/lib/gcc/avr/:/usr/lib/gcc/avr/4.9.2/../../../avr/bin/avr/4.9.2/:/usr/lib/gcc/avr/4.9.2/../../../avr/bin/
libraries: =/usr/lib/gcc/avr/4.9.2/:/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr/4.9.2/:/usr/lib/gcc/avr/4.9.2/../../../avr/lib/

ну и в общем, вся философия заключена в вызове ключа для каждого из тестируемых тулзов )))))
sunjob
грант мерси!
ARV
Я хоть и в винде сижу, но свои 5 копеек в тему вставлю sm.gif
Пользуюсь Eclipse с его встроенными автогенераторами makefile. В настройках прописываю пути к разным версиям тулчейнов, и все прекрасно собирается. Беда только с тем, что утилита avr-size от версии к версии меняет свои свойства по умолчанию и команды в комстроке, в итоге иной раз не работает, либо выдает в неудобном виде.
Эту проблему решил тупым копированием "удобной" версии во все версии тулчейна. Получилась в этом отношении каша, но все остальное достаточно удобно.
sunjob
Цитата
... утилита avr-size от версии к версии меняет свои свойства ...

для этого в makefile есть очень удобное "макроопределение" команд

Код
CC        = $(AVR)/bin/avr-gcc
CPP       = $(AVR)/bin/avr-g++
OBJCOPY   = $(AVR)/bin/avr-objcopy
OBJDUMP   = $(AVR)/bin/avr-objdump
SIZE      = $(AVR)/bin/avr-size
NM        = $(AVR)/bin/avr-nm

MKDIR     = mkdir -p
REMOVE    = rm -fr
COPY      = cp
WINSHELL  = cmd


далее, по вкусу дорабатываем напильником, и навсегда забываем про "особенности нациоанальной охоты" с разными версиями avr-size и никакой каши... wink.gif

Цитата
... автогенераторами makefile ...

авто-гераторы - это, конечно же хорошо, когда проект небольшой и все очевидно (во вс.сл. для авто-гератора wink.gif), но когда проект разрастается, начинается (у меня sm.gif) неразбериха с исходниками, каталогами, версиями итд... и я, в конечном итоге, "пришел" к своему унивесральному makefile, который все понимает так как ему надо (и его филососфия совпадает с моими взглядами на то, что, где, как и ваще все все - должно работать) да и потом, самое главное, за "все время" не "сраслась" у меня любофь с тяжелыми решениями...

п.с. правда, есть одно, которое всенепременно надо дощюпать, чего и ВАМ, желаю, весьма неплох qt-creator
sunjob
Цитата(ARV @ Apr 12 2018, 11:50) *
... Беда только с тем, что утилита avr-size от версии к версии меняет свои свойства по умолчанию и команды в комстроке ...


недавно разбирался с avr-size, не заметил особенностей и вариаций
раскажите подробнее об этом, если не сложно
ARV
Цитата(sunjob @ May 3 2018, 22:04) *
недавно разбирался с avr-size, не заметил особенностей и вариаций
раскажите подробнее об этом, если не сложно
форматы вывода разные
sunjob
спасибо, ща посмотрим что там да чаво biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.