понедельник, 24 ноября 2008 г.

Компиляция gcc для Atmel AVR. Ошибка с libgcc.mvars

Начал компилировать новый GCC (4.3.2) под AVR (Atmel) для разработки программ микроконтроллеров. И случились грабли.

С binutils проблем не возникло, взяли с ftp://ftp.gnu.org/gnu/binutils/
./configure --target=avr --prefix=/usr/local/atmel
make
make install

Затем взяли GCC с ftp://ftp.gnu.org/gnu/gcc
добавили путь
export PATH=/usr/local/atmel/bin:$PATH
./configure --target=avr --prefix=/usr/local/atmel --enable-languages=c
make

и получили:

Makefile:144: ../.././gcc/libgcc.mvars: No such file or directory
make[2]: *** No rule to make target `../.././gcc/libgcc.mvars'. Stop.

А все потому, что копилировал я в том же каталоге, где лежат исходники.
Разработчики в Installing GCC: Configuration рекомендуют компилировать в отдельном каталоге не принадлежащем дереву каталогов исходников.
Т.е. создаем каталог /tmp/avr, а в нем src. В /tmp/avr/src распаковываем gcc. Создаем /tmp/avr/obj
и переходим в него. И уже из этого каталога (/tmp/avr/obj) даем команду на конфигурирование:

/tmp/avr/src/configure --target=avr --prefix=/usr/local/atmel --enable-languages=c \
--disable-shared --disable-libssp
make
make install

Обратите внимание на полный путь (/tmp/avr/src/configure) - это важно.
И еще --disable-libssp, иначе выскочит что-то про ошибки компиляции libssp, а именно ssp.c

И еще установим avr-libc.
./configure --build=`./config.guess` --host=avr --prefix=/usr/local/atmel
make
make install

2 комментария:

  1. Спасибо за комент, поменял расположение и моментально прошло. Так бы ещё месяц сидел по Makefile'ам. ))

    ОтветитьУдалить
  2. Рад, что Вам это время сэкономило.

    ОтветитьУдалить