LINUX.ORG.RU

сборка нативного gcc под arm

 , ,


0

2

приветствую! при сборке gcc под arm926 постоянно валятся ошибки. gcc версии 4.7.1 собирал следующим образом:

./configure --host=arm-none-linux-gnueabi --prefix=/home/arm-lfs/tools --enable-shared --with-gnu-as --with-gnu-ld --disable-multilib --enable-threads=posix --with-arch=armv5te --with-abi=aapcs-linux --with-float=soft --with-mode=arm --enable-__cxa_atexit --enable-target-optspace --disable-bootstrap --enable-languages=c --disable-libada --disable-libssp --disable-libgomp --disable-werror --enable-checking --disable-nls --disable-decimal-float --with-mpfr-include=/home/arm-lfs/tools/include --with-mpfr-lib=/home/arm-lfs/tools/lib --with-mpc-include=/home/arm-lfs/tools/include --with-gmp-include=/home/arm-lfs/tools/include --with-mpc-lib=/home/arm-lfs/tools/lib --with-gmp-lib=/home/arm-lfs/tools/lib

собирал CodeSourcery-2011.03-41.

ошибки такие:

# multilibs.
/bin/sh ../.././libgcc/../move-if-change tmp-libgcc_tm.h libgcc_tm.h
echo '#ifdef __ARM_ARCH_6M__' > addsf3.c
echo '#include "soft-fp/addsf3.c"' >> addsf3.c
echo timestamp > libgcc_tm.stamp
echo '#endif' >> addsf3.c
echo '#ifdef __ARM_ARCH_6M__' > divsf3.c
echo '#ifdef __ARM_ARCH_6M__' > eqsf2.c
echo '#include "soft-fp/divsf3.c"' >> divsf3.c
echo '#endif' >> divsf3.c
echo '#include "soft-fp/eqsf2.c"' >> eqsf2.c
echo '#ifdef __ARM_ARCH_6M__' > gesf2.c
echo '#endif' >> eqsf2.c
echo '#include "soft-fp/gesf2.c"' >> gesf2.c
echo '#ifdef __ARM_ARCH_6M__' > lesf2.c
echo '#endif' >> gesf2.c
echo '#include "soft-fp/lesf2.c"' >> lesf2.c
echo '#endif' >> lesf2.c
echo '#ifdef __ARM_ARCH_6M__' > mulsf3.c
echo '#ifdef __ARM_ARCH_6M__' > negsf2.c
echo '#include "soft-fp/mulsf3.c"' >> mulsf3.c
echo '#include "soft-fp/negsf2.c"' >> negsf2.c
echo '#endif' >> mulsf3.c
echo '#endif' >> negsf2.c
echo '#ifdef __ARM_ARCH_6M__' > subsf3.c
echo '#ifdef __ARM_ARCH_6M__' > unordsf2.c
echo '#include "soft-fp/subsf3.c"' >> subsf3.c
echo '#endif' >> subsf3.c
echo '#include "soft-fp/unordsf2.c"' >> unordsf2.c
echo '#ifdef __ARM_ARCH_6M__' > fixsfsi.c
echo '#endif' >> unordsf2.c
echo '#ifdef __ARM_ARCH_6M__' > floatsisf.c
echo '#include "soft-fp/fixsfsi.c"' >> fixsfsi.c
echo '#include "soft-fp/floatsisf.c"' >> floatsisf.c
echo '#endif' >> fixsfsi.c
echo '#endif' >> floatsisf.c
echo '#ifdef __ARM_ARCH_6M__' > floatunsisf.c
echo '#ifdef __ARM_ARCH_6M__' > adddf3.c
echo '#include "soft-fp/floatunsisf.c"' >> floatunsisf.c
echo '#include "soft-fp/adddf3.c"' >> adddf3.c
echo '#endif' >> floatunsisf.c
echo '#endif' >> adddf3.c
echo '#ifdef __ARM_ARCH_6M__' > divdf3.c
echo '#include "soft-fp/divdf3.c"' >> divdf3.c
echo '#ifdef __ARM_ARCH_6M__' > eqdf2.c
echo '#endif' >> divdf3.c
echo '#include "soft-fp/eqdf2.c"' >> eqdf2.c
echo '#endif' >> eqdf2.c
echo '#ifdef __ARM_ARCH_6M__' > gedf2.c
echo '#ifdef __ARM_ARCH_6M__' > ledf2.c
echo '#include "soft-fp/ledf2.c"' >> ledf2.c
echo '#include "soft-fp/gedf2.c"' >> gedf2.c
echo '#endif' >> gedf2.c
echo '#endif' >> ledf2.c
echo '#ifdef __ARM_ARCH_6M__' > muldf3.c
echo '#ifdef __ARM_ARCH_6M__' > negdf2.c
echo '#include "soft-fp/muldf3.c"' >> muldf3.c
echo '#include "soft-fp/negdf2.c"' >> negdf2.c
echo '#endif' >> muldf3.c
echo '#endif' >> negdf2.c
echo '#ifdef __ARM_ARCH_6M__' > subdf3.c
echo '#ifdef __ARM_ARCH_6M__' > unorddf2.c
echo '#include "soft-fp/subdf3.c"' >> subdf3.c
echo '#include "soft-fp/unorddf2.c"' >> unorddf2.c
echo '#endif' >> subdf3.c
echo '#endif' >> unorddf2.c
echo '#ifdef __ARM_ARCH_6M__' > fixdfsi.c
echo '#ifdef __ARM_ARCH_6M__' > floatsidf.c
echo '#include "soft-fp/fixdfsi.c"' >> fixdfsi.c
echo '#endif' >> fixdfsi.c
echo '#include "soft-fp/floatsidf.c"' >> floatsidf.c
echo '#ifdef __ARM_ARCH_6M__' > floatunsidf.c
echo '#include "soft-fp/floatunsidf.c"' >> floatunsidf.c
echo '#endif' >> floatsidf.c
echo '#endif' >> floatunsidf.c
echo '#ifdef __ARM_ARCH_6M__' > extendsfdf2.c
echo '#include "soft-fp/extendsfdf2.c"' >> extendsfdf2.c
echo '#ifdef __ARM_ARCH_6M__' > truncdfsf2.c
echo '#endif' >> extendsfdf2.c
echo '#include "soft-fp/truncdfsf2.c"' >> truncdfsf2.c
sed -e 's/__PFX__/__/g' \
	    -e 's/__FIXPTPFX__/__gnu_/g' < ../.././libgcc/libgcc-std.ver.in > libgcc-std.ver
echo '#endif' >> truncdfsf2.c
dest=../../host-arm-none-linux-gnueabi/gcc/include/tmp$$-unwind.h; \
	cp unwind.h $dest; \
	chmod a+r $dest; \
	sh ../.././libgcc/../move-if-change $dest ../../host-arm-none-linux-gnueabi/gcc/include/unwind.h
cc   -g -Os -O2  -g -Os -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fPIC -fno-inline -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fPIC -fno-inline -I. -I. -I../../host-arm-none-linux-gnueabi/gcc -I../.././libgcc -I../.././libgcc/. -I../.././libgcc/../gcc -I../.././libgcc/../include -I../.././libgcc/../libdecnumber/no -I../.././libgcc/../libdecnumber -DHAVE_CC_TLS  -o _thumb1_case_sqi_s.o -MT _thumb1_case_sqi_s.o -MD -MP -MF _thumb1_case_sqi_s.dep -DSHARED -DL_thumb1_case_sqi -xassembler-with-cpp -c ../.././libgcc/config/arm/lib1funcs.S
cc1: error: unrecognized command line option "-fbuilding-libgcc"
make[2]: *** [_thumb1_case_sqi_s.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/home/arm-lfs/stage1/gcc-4.7.1/arm-none-linux-gnueabi/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/home/arm-lfs/stage1/gcc-4.7.1'
make: *** [all] Error 2
root@ubuntu:/home/arm-lfs/stage1/gcc-4.7.1# 

видно, что компилятор не распознает данную опцию, т.е. "-fbuilding-libgcc" в gcc-4.7.1/libgcc/Makefile.am убираю данную опцию и появляется другая ошибка

Checking multilib configuration for libgcc...
make[2]: Entering directory `/home/arm-lfs/stage1/build/arm-none-linux-gnueabi/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
cc   -g -Os -O2  -g -Os -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fPIC -fno-inline -g -DIN_LIBGCC2 -fno-stack-protector   -fPIC -fno-inline -I. -I. -I../.././gcc -I../../../gcc-4.7.1/libgcc -I../../../gcc-4.7.1/libgcc/. -I../../../gcc-4.7.1/libgcc/../gcc -I../../../gcc-4.7.1/libgcc/../include -I../../../gcc-4.7.1/libgcc/../libdecnumber/no -I../../../gcc-4.7.1/libgcc/../libdecnumber -DHAVE_CC_TLS  -o _thumb1_case_sqi_s.o -MT _thumb1_case_sqi_s.o -MD -MP -MF _thumb1_case_sqi_s.dep -DSHARED -DL_thumb1_case_sqi -xassembler-with-cpp -c ../../../gcc-4.7.1/libgcc/config/arm/lib1funcs.S
../../../gcc-4.7.1/libgcc/config/arm/lib1funcs.S:113:2: error: #error Unable to determine architecture.
make[2]: *** [_thumb1_case_sqi_s.o] Error 1
make[2]: Leaving directory `/home/arm-lfs/stage1/build/arm-none-linux-gnueabi/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/home/arm-lfs/stage1/build'
make: *** [all] Error 2

как быть? пробовал конфигурировать с различными опциями - всегда один и тот же результат может кто подскажет или кто встречался с подобной проблемой?


Сходу нагуглилось вот это...

У тебя, насколько я вижу, тоже target не указан...

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

solovey, спасибо. действительно, явно сконфигурировав с --host и --target проблем не возникло. все успешно собралось, но есть проблемы при компиляции новым нативным gcc, опять с библиотеками непонятки...

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

проблема следующая: при попытке скомпилировать «Hello, world» на таргете новым компилятором, gcc падает с такой ошибкой:

root@target:~# gcc -o test test.c 
Inconsistency detected by ld.so: dl-deps.c: 622: _dl_map_object_deps: Assertion `nlist > 1' failed!
root@target:~#
устанавливал gcc командой make install в директорию /usr файловой системы таргета

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

binutils отрабатывает исправно, простые примеры транслировал и линковал успешно

lfs ()
Ответ на: комментарий от solovey

да-да, есть такое, именно в версии 2.13 всем спасибо

lfs ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.