Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: сборка gnu gcc-4.4.1-3 - ошибка
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Krom
Сконфигурировано со следующими опциями:
configure --target=$TARGET --prefix=$PREFIX\
--with-newlib --with-gnu-as --with-gnu-ld --disable-shared\
--enable-languages=c --enable-interwork --enable-multilib\
--disable-nls --disable-win32-registry --disable-werror\
--without-headers

где TARGET=arm-elf PREFIX=/usr/local/arm

При сборке после минут так это двадцати работы выдает следующую ошибку:

/tmp/cc2Pmx1O.s: Assembler messages:
/tmp/cc2Pmx1O.s:78: Internal error!
Assertion failure in make_mapping_symbol at .././gas/config/tc-arm.c line 2492.
Please report this bug.
make[5]: *** [/usr/local/arm/build/gcc/arm-elf/thumb/libgcc/crtend.o] Ошибка 1
make[5]: Leaving directory `/usr/local/arm/build/gcc/gcc'
make[4]: *** [gcc-extra-parts] Ошибка 2
make[4]: Leaving directory `/usr/local/arm/build/gcc/arm-elf/thumb/libgcc'
make[3]: *** [multi-do] Ошибка 1
make[3]: Leaving directory `/usr/local/arm/build/gcc/arm-elf/libgcc'
make[2]: *** [all-multi] Ошибка 2
make[2]: Leaving directory `/usr/local/arm/build/gcc/arm-elf/libgcc'
make[1]: *** [all-target-libgcc] Ошибка 2
make[1]: Leaving directory `/usr/local/arm/build/gcc'
make: *** [all] Ошибка 2

ЧТо бы это могло быть? Кто-нибудь собирал 4.4? Куда сообщать об ошибке?
amaora
Возможно это связвно с вот этими изменениями в binutils
http://www.nabble.com/Update-ARM-mapping-s...td24760784.html

Как и куда отправлять багрепорт написано в binutils/README

Проблема в thumb, без multilib должно собраться.
Krom
На 4.4 я забил, так как он оказывается unstable. Собрал 4.3.4, последние версии binutils и newlib и openocd. 5 дней плясок с бубном, но в итоге все заработало. Больше всего времени ушло на openocd, там много чего поменялось по сравнению с 747й версией,но в итоге и с ним разобрался. Если кому интересно, могу расписать как и что.
prm
Было бы интересно увидеть пошаговое руководство для сборки тулчайна. Хотя бы краткое на конкретном примере. Думаю, многие бы попробовали повторить, повысив тем самым свой профессиональный уровень.
Terminator
Цитата(Krom @ Sep 1 2009, 13:30) *
...Больше всего времени ушло на openocd, там много чего поменялось по сравнению с 747й версией,но в итоге и с ним разобрался. Если кому интересно, могу расписать как и что.


Про openocd очень интересно.
С новой версией у меня никак не получается прошить sam7 "одной командой". Приходится запускать openocd и из telnet-а слать команды на перешивку smile3046.gif
sasamy
Цитата(prm @ Sep 1 2009, 11:43) *
Было бы интересно увидеть пошаговое руководство для сборки тулчайна. Хотя бы краткое на конкретном примере. Думаю, многие бы попробовали повторить, повысив тем самым свой профессиональный уровень.


http://tuxotronic.org/wiki/tutorial/arm7-build-toolchain
alx2
Цитата(sasamy @ Sep 1 2009, 15:15) *
Уже спрашивал в другой теме, но, насколько я помню, так никто и не ответил. Я, в отличие от предлагаемого по вышеуказанной ссылке плана сборки, выполняю пункты 2, 3 и 4 за один раз (при конфигцрации gcc говорю --with-newlib, и последжующий make собирает сразу и gcc, и newlib). Лично для меня очевидно, что план из двух пунктов вдвое проще, чем из четырех. Тем не менее, в этом форуме все время рекомендуют идти именно длинным путем. Почему? Какие это дает преимущества?
sasamy
Цитата(alx2 @ Sep 3 2009, 19:47) *
Я, в отличие от предлагаемого по вышеуказанной ссылке плана сборки, выполняю пункты 2, 3 и 4 за один раз (при конфигцрации gcc говорю --with-newlib, и последжующий make собирает сразу и gcc, и newlib).


По ссылке все пункты - 1,2,3,4 выполняются за один раз - make smile.gif А вообще

Цитата
--with-newlib
Specifies that `newlib' is being used as the target C library.
This causes __eprintf to be omitted from libgcc.a on the
assumption that it will be provided by `newlib'.


Не совсем понятно как у вас собирается еще и newlib за один make. Понятно если до трех шагов сократить - без последнего 4, но я так не пробовал потому что всегда пользуюсь готовыми скриптами для сборки - сильно экономит время и нервы smile.gif
alx2
Цитата(sasamy @ Sep 3 2009, 23:36) *
Не совсем понятно как у вас собирается еще и newlib за один make.
Не совсем понятно, что именно Вам не понятно. smile.gif В смысле, что значит "как"? Попробуйте сами - увидите.
tar -yxf gcc-core-x.x.x.tar.bz2
tar -yxf gcc-g++-x.x.x.tar.bz2
tar -zxf newlib-x.x.x.tar.gz
cd gcc-x.x.x
ln -fs ../newlib-x.x.x/newlib .
cd ..
mkdir builddir
cd builddir
../gcc-x.x.x/configure ..... --with-newlib
make
make install
amaora
Мой вариант для 4.4.1 (с uClibc) http://paravozeg.narod.ru/tcmakev3.gz

Правка: перед запуском скрипта,
# cd /usr/local
# ln -s /path_to_script_dir/sysroot/usr/local/arm arm

ну и PATH надо заранее поправить, это как всегда.

alx2
Странно, только сейчас узнал, что newlib не есть часть gcc, конфигурил с --with-newlib а newlib не добавлял, собиралось и работало.
Krom
Цитата(Terminator @ Sep 1 2009, 13:38) *
Про openocd очень интересно.
С новой версией у меня никак не получается прошить sam7 "одной командой". Приходится запускать openocd и из telnet-а слать команды на перешивку smile3046.gif

Как запущу все окончательно, обязательно распишу. Так вроде все протестил, вроде работает, но при попытке использовать билиотечные функции начинает ругаться:
/usr/local/arm/lib/gcc/arm-elf/4.3.4/../../../../arm-elf/bin/ld: /usr/local/arm/lib/gcc/arm-elf/4.3.4/../../../../arm-elf/lib/libc.a(lib_a-strncmp.o)(strncmp): warning: interworking not enabled.
first occurrence: main.o: Thumb call to ARM
/usr/local/arm/lib/gcc/arm-elf/4.3.4/../../../../arm-elf/bin/ld: /usr/local/arm/lib/gcc/arm-elf/4.3.4/../../../../arm-elf/lib/libc.a(lib_a-strncmp.o)(strncmp): warning: interworking not enabled.
first occurrence: main.o: Thumb call to ARM

Какого ему надо не пойму. Опция -mthumb задана. Почему берет библиотеку /usr/local/arm/arm-elf/lib/libc.a а не /usr/local/arm/arm-elf/lib/thumb/libc.a нифига не понимаю. Опцию чтоли забыл какую-нить задать?

С этим вроде разобрался, но сомневаюсь, что сделал правильно, развейте, плиз, сомнения. Я тупо вставил в мэйкфайд следующую строку:
LDFLAGS += -L /usr/local/arm/arm-elf/lib/thumb -lc

Это правильно или есть более верные способы?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.