LINUX.ORG.RU

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

 ,


0

1

добрый день

в системе установлен стандартный пакет 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 в вакууме»

НЕ ВОПРОС:

- можно просто «пофилософствовать по теме», возможно ваши мысли пригодятся :о)

спасибо ...

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

https://slackbuilds.org/

avr-toolchains

http://www.microchip.com/avr-support/avr-and-arm-toolchains-(c-compilers)

★★

Как-то всё сложно и много вопросов. Должно же быть достаточно сделать что-то вроде:

PATH="$PATH:$HOME/dev/bin/avr/3.4.2/bin" make CROSS=avr-
Или даже так:
make CROSS=$HOME/dev/bin/avr/3.4.2/bin/avr-
Главное, чтобы в Makefile программы определялись в стиле:
CC = $(CROSS)gcc

xaizek ★★★★★ ()
Ответ на: комментарий от xaizek
PATH="$PATH:$HOME/dev/bin/avr/3.4.2/bin"

однозначно не покатит :о)

+

CROSS

это произвольная переменная? (набегом не нашел шо це таке)

sunjob ★★ ()
Ответ на: комментарий от sunjob

однозначно не покатит :о)

Почему? Там все имена могут быть с префиксом и ничего не скрывать.

это произвольная переменная?

«Стандартная» вроде PREFIX, DESTDIR и других.

xaizek ★★★★★ ()
Ответ на: комментарий от xaizek

Почему?

потому что... :о)

$PATH:$HOME/ ...

Стандартная

если PREFIX, DESTDIR - само собой ... то вот не в курсе про CROSS, я спросил у гугеля,но он мне не ответиль... может плохо спрашивал?! :о)

https://www.google.ru/search?q=environment+CROSS ни одного попадания

правда и с другими переменными в подобном запросе - не густо, в противовес с slackBuild - все нормально, но с CROSS - все так же ...

p.s. но не суть...

sunjob ★★ ()
Последнее исправление: sunjob (всего исправлений: 2)

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 ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.