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

сборка gnu gcc-4.4.1-3 - ошибка

Сконфигурировано со следующими опциями:

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? Куда сообщать об ошибке?

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


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

Возможно это связвно с вот этими изменениями в binutils

http://www.nabble.com/Update-ARM-mapping-s...td24760784.html

 

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

 

Проблема в thumb, без multilib должно собраться.

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


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

На 4.4 я забил, так как он оказывается unstable. Собрал 4.3.4, последние версии binutils и newlib и openocd. 5 дней плясок с бубном, но в итоге все заработало. Больше всего времени ушло на openocd, там много чего поменялось по сравнению с 747й версией,но в итоге и с ним разобрался. Если кому интересно, могу расписать как и что.

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


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

Было бы интересно увидеть пошаговое руководство для сборки тулчайна. Хотя бы краткое на конкретном примере. Думаю, многие бы попробовали повторить, повысив тем самым свой профессиональный уровень.

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


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

...Больше всего времени ушло на openocd, там много чего поменялось по сравнению с 747й версией,но в итоге и с ним разобрался. Если кому интересно, могу расписать как и что.

 

Про openocd очень интересно.

С новой версией у меня никак не получается прошить sam7 "одной командой". Приходится запускать openocd и из telnet-а слать команды на перешивку :smile3046:

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


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

Было бы интересно увидеть пошаговое руководство для сборки тулчайна. Хотя бы краткое на конкретном примере. Думаю, многие бы попробовали повторить, повысив тем самым свой профессиональный уровень.

 

http://tuxotronic.org/wiki/tutorial/arm7-build-toolchain

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


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

Уже спрашивал в другой теме, но, насколько я помню, так никто и не ответил. Я, в отличие от предлагаемого по вышеуказанной ссылке плана сборки, выполняю пункты 2, 3 и 4 за один раз (при конфигцрации gcc говорю --with-newlib, и последжующий make собирает сразу и gcc, и newlib). Лично для меня очевидно, что план из двух пунктов вдвое проще, чем из четырех. Тем не менее, в этом форуме все время рекомендуют идти именно длинным путем. Почему? Какие это дает преимущества?

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


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

Я, в отличие от предлагаемого по вышеуказанной ссылке плана сборки, выполняю пункты 2, 3 и 4 за один раз (при конфигцрации gcc говорю --with-newlib, и последжующий make собирает сразу и gcc, и newlib).

 

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

 

--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, но я так не пробовал потому что всегда пользуюсь готовыми скриптами для сборки - сильно экономит время и нервы :)

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


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

Не совсем понятно как у вас собирается еще и newlib за один make.
Не совсем понятно, что именно Вам не понятно. :) В смысле, что значит "как"? Попробуйте сами - увидите.

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

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


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

Мой вариант для 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 не добавлял, собиралось и работало.

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

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


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

Про openocd очень интересно.

С новой версией у меня никак не получается прошить sam7 "одной командой". Приходится запускать openocd и из telnet-а слать команды на перешивку :smile3046:

Как запущу все окончательно, обязательно распишу. Так вроде все протестил, вроде работает, но при попытке использовать билиотечные функции начинает ругаться:

/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

 

Это правильно или есть более верные способы?

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...