Перейти к содержанию

    

AVR-GCC & AVR-Toolchain-ы (неск.версий) - одновременное использование, настройка среды, Makefile

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
добавил в систему 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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне мысль одна покоя не дает :rolleyes:

 

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

 

если так, то, видимо, будет не достаточно просто компилятор/линковщик запускать, нужно обязательно править под них PATH, и возможно, CX LD ...

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обычно они умеют находить свои либы в пути относительно исполняемого файла. То бишь, из bin:

../avr/bin/ar, и так далее.

В общем, проще попробовать, чем гадать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Обычно они умеют
и
проще попробовать

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

 

интересуюсь, приемущественно, надеясь на "боевых" разрабов, которые с подобной проблемой сталкивались/решали

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я же написал: makefile должен вызывать тулзы по полному пути. И это работает.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
makefile должен вызывать тулзы по полному пути

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

 

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

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

 

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

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

 

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

 

 

с первого взгляда собирается, но, видимо, надо дотошно тестировать

буду благодарен, если укажете на что обратить внимание, кроме очевидных вещей ...

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ВОПРОС 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/

ну и в общем, вся философия заключена в вызове ключа для каждого из тестируемых тулзов )))))

Изменено пользователем _Pasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я хоть и в винде сижу, но свои 5 копеек в тему вставлю :)

Пользуюсь Eclipse с его встроенными автогенераторами makefile. В настройках прописываю пути к разным версиям тулчейнов, и все прекрасно собирается. Беда только с тем, что утилита avr-size от версии к версии меняет свои свойства по умолчанию и команды в комстроке, в итоге иной раз не работает, либо выдает в неудобном виде.

Эту проблему решил тупым копированием "удобной" версии во все версии тулчейна. Получилась в этом отношении каша, но все остальное достаточно удобно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
... утилита 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 и никакой каши... ;)

 

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

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

 

п.с. правда, есть одно, которое всенепременно надо дощюпать, чего и ВАМ, желаю, весьма неплох qt-creator

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
... Беда только с тем, что утилита avr-size от версии к версии меняет свои свойства по умолчанию и команды в комстроке ...

 

недавно разбирался с avr-size, не заметил особенностей и вариаций

раскажите подробнее об этом, если не сложно

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
недавно разбирался с avr-size, не заметил особенностей и вариаций

раскажите подробнее об этом, если не сложно

форматы вывода разные

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, ща посмотрим что там да чаво :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти