blackfin toolchain build question

Denys Vlasenko vda.linux at googlemail.com
Mon Jun 2 03:19:12 UTC 2008


Hi,

I successfully built bfin-linux-uclibc toolchain
(binutils+gcc) using binutils and gcc trees from
svn://firewall-sources.blackfin.uclinux.org:80/svn/toolchain/trunk

I already had quite a few toolchains on my machine
and I have a preferred way to build one.

Therefore I did not use canned scripts from svn
but followed my own procedure, as a more familiar one for me.

Basically, it involves building cross-compiled binutils,
installing it, then building and installing gcc,
then doing the same for libc.
Trying to build gcc doesn't work, it needs usable $TARGET-ld.

I observed the following peculiarity: binutils apparently
tried to build newlib, and that requires $TARGET-cc!



make[4]: Entering directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib'
if [ -z "" ]; then \
  true; \
else \
  rootpre=`${PWDCMD-pwd}`/; export rootpre; \
  srcrootpre=`cd ../../../newlib; ${PWDCMD-pwd}`/; export srcrootpre; \
  lib=`echo ${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
  compiler="bfin-linux-uclibc-cc -B/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib/ -isystem
  for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
...
  done; \
fi
make[4]: Leaving directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib'
Making all in libc
make[4]: Entering directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib/libc'
Making all in argz
make[5]: Entering directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib/libc/argz'
bfin-linux-uclibc-cc -B/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib/ -isystem /.1/usr/src
devel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib/targ-include -isystem /.1/usr/srcdevel/bfin/toolchain/b
inutils-2.17/newlib/libc/include -L/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/./ld -DPACKAGE=\"newlib\" -DVERSIO
N=\"1.14.0\"  -I. -I../../../../../newlib/libc/argz  -O2 -fno-builtin      -O2 -g -O2  -c ../../../../../newlib/libc/argz/dummy.c
make[5]: bfin-linux-uclibc-cc: Command not found
make[5]: *** [dummy.o] Error 127
make[5]: Leaving directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib/libc/argz'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib/libc'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib'
make[2]: *** [all-recursive-am] Error 2
make[2]: Leaving directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc/bfin-linux-uclibc/newlib'
make[1]: *** [all-target-newlib] Error 2
make[1]: Leaving directory `/.1/usr/srcdevel/bfin/toolchain/binutils-2.17/.obj-bfin-linux-uclibc'
make: *** [all] Error 2


This did not happen before to me. I'm puzzled. gcc wants $TARGET-ld but
binutils wants $TARGET-gcc?! How they are supposed to be build with such
circular dependency?

Anyway. I ignored error, ran "make install" for binutils,
then built and installed gcc,
and then rebuilt (and reinstalled) binutils again. No error this time.

But this didn't sound like correct solution at all.

For comparison: x86_64-linux-uclibc binutils build ends like this,
it doesn't try to build newlib:

make[4]: Leaving directory `/.1/usr/srcdevel/uclibc/toolchain_x86_64-linux-uclibc/binutils-2.18/.obj/ld'
make[3]: Leaving directory `/.1/usr/srcdevel/uclibc/toolchain_x86_64-linux-uclibc/binutils-2.18/.obj/ld'
make[2]: Leaving directory `/.1/usr/srcdevel/uclibc/toolchain_x86_64-linux-uclibc/binutils-2.18/.obj/ld'
make[1]: Nothing to be done for `all-target'.

m68k-elf behaves similarly:

make[4]: Leaving directory `/.1/usr/src/binutils-2.17/.obj-m68k-elf/ld'
make[3]: Leaving directory `/.1/usr/src/binutils-2.17/.obj-m68k-elf/ld'
make[2]: Leaving directory `/.1/usr/src/binutils-2.17/.obj-m68k-elf/ld'
make[1]: Nothing to be done for `all-target'.
make[1]: Leaving directory `/.1/usr/src/binutils-2.17/.obj-m68k-elf'

Can somebody shed some light here?
--
vda



More information about the uClibc mailing list