LINUX.ORG.RU

Сообщения lfs

 

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

приветствую! при сборке 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

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

 , ,

lfs
()

build native arm binutils

день добрый!

собираю нативный binutils для arm926, и вот с чем столкнулся.

на x86 хосте имеется кросскомпилятор CodeSourcery. с его помощью я собираю нативные binutils c с такими опциями

../binutils-2.22/configure --prefix=/arm-lfs/tools --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --with-lib-path=/arm-lfs/tools/lib --with-sysroot=/arm-lfs --disable-nls --disable-werror

все собирается успешно и при попытке залить вновь созданные утилитки на плату - получаю, что glibc нужной нет!

делаю следующее, например, для AR, которую только что собрал

objdump -p ar

Version References:
  required from libgcc_s.so.1:
    0x0b792655 0x00 03 GCC_3.5
  required from libc.so.6:
    0x06969191 0x00 05 GLIBC_2.11
    0x0d696917 0x00 04 GLIBC_2.7
    0x0d696914 0x00 02 GLIBC_2.4

и вижу, что нужна GLIBC_2.11

самое интересное то, что на хосте, на котором я собирал стоит glibc именно этой версии, CodeSourcery toolchain имеет тоже свою версию и на плате у меня стоит другая версия glibc.

уже перепробовал линковать с конкретной версией

LDFLAGS=-Wl,-rpath,/board_nfs_path/lib и CFLAGS=-static 
... бесполезно.

вопрос, почему я компилирую кросскомпилятором binutils и он мне подцепляет glibc той версии, на машине которой я собираю?

кто может сказать, что не так

заранее благодарю

lfs
()

glibc-2.15 проблема при сборке под arm

здравствуйте!

пытаюсь собрать glibc-2.15 PASS 1 при помощи кросс-компилятора CodeSourcery-2011.03-41

скачал и распоковал в glibc-2.15 glibc-ports-2.15

собираю нативные тулчайн для процессора arm926ej-s из glibc-build директории следующей командой

CC=/path/CodeSourcery-2011.03-41/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc \ AR=/path/CodeSourcery-2011.03-41/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ar \ RANLIB=/path/CodeSourcery-2011.03-41/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ranlib \ ../glibc-2.15/configure \ --prefix=/tools \ --target=arm-none-linux-gnueabi \ --host=arm-none-linux-gnueabi \ --disable-profile \ --enable-add-ons=nptl,glibc-ports-2.15 \ --enable-kernel=2.6.25 \ --with-headers=/tools/include \ libc_cv_forced_unwind=yes \ libc_cv_ctors_header=yes \ libc_cv_c_cleanup=yes

все очень долго компилируется и в один момент линкер выдает такую ошибку:

age-1/glibc-build/dlfcn/libdl.so /opt/lfs/stage-1/glibc-build/elf/ld.so /opt/lfs/stage-1/glibc-build/malloc/libmemusage_pic.a(memusage.os): In function `me': /opt/lfs/stage-1/glibc-2.15/malloc/memusage.c:253: undefined reference to `__aeabi_read_tp' /opt/lfs/stage-1/glibc-2.15/malloc/memusage.c:258: undefined reference to `__aeabi_read_tp' /opt/lfs/stage-1/glibc-build/malloc/libmemusage_pic.a(memusage.os): In function `update_data': /opt/lfs/stage-1/glibc-2.15/malloc/memusage.c:140: undefined reference to `__aeabi_read_tp' /opt/lfs/stage-1/glibc-2.15/malloc/memusage.c:154: undefined reference to `__aeabi_read_tp' /opt/lfs/stage-1/glibc-build/malloc/libmemusage_pic.a(memusage.os): In function `init': /opt/lfs/stage-1/glibc-2.15/malloc/memusage.c:319: undefined reference to `__aeabi_read_tp' collect2: ld returned 1 exit status make[2]: *** [/opt/lfs/stage-1/glibc-build/malloc/libmemusage.so] Error 1 make[2]: Leaving directory `/opt/lfs/stage-1/glibc-2.15/malloc' make[1]: *** [malloc/others] Error 2 make[1]: Leaving directory `/opt/lfs/stage-1/glibc-2.15' make: *** [all] Error 2

ни кто не сталкивался с этим? есть какие то мысли, как исправить? спасибо

 , ,

lfs
()

RSS подписка на новые темы