Your key question seems to be:
why the building of the compiler need the target binutils ?
As described in Building a cross compiler, part of the build process for a GNU cross-compiler is to build runtime libraries for the target using the newly-compiled cross-compiler. So the binutils
for the target need to be present for that step to succeed.
It may be possible to build the cross-compiler first, using empty files for the subset of binutils
components that gcc
needs - such as as
and ld
and ar
and ranlib
- then build and install the target binutils
components into the proper locations, then build the target runtime libraries.
But it would be less error-prone to do things the following way (and the documentation recommends this): build binutils
for the target first, place the specified executables in gcc
's source tree, then build the cross-compiler.