5.12. Cross Binutils-2.24

The Binutils package contains a linker, an assembler, and other tools for handling object files.

5.12.1. Installation of Cross Binutils

It is important that Binutils be compiled before Glibc and GCC because both Glibc and GCC perform various tests on the available linker and assembler to determine which of their own features to enable.

The Binutils documentation recommends building Binutils outside of the source directory in a dedicated build directory:

mkdir -v ../binutils-build
cd ../binutils-build

Prepare Binutils for compilation:

AR=ar AS=as ../binutils-2.24/configure \
    --prefix=/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} \
    --with-sysroot=${CLFS} --with-lib-path=/tools/lib --disable-nls \
    --disable-static --disable-multilib --disable-werror

The meaning of the new configure options:

AR=ar AS=as

This prevents Binutils from compiling with ${CLFS_HOST}-ar and ${CLFS_HOST}-as as they are provided by this package and therefore not installed yet.

--host=${CLFS_HOST}

When used with --target, this creates a cross-architecture executable which creates files for ${CLFS_TARGET} but runs on ${CLFS_HOST}.

--target=${CLFS_TARGET}

When used with --host, this creates a cross-architecture executable that creates files for ${CLFS_TARGET} but runs on ${CLFS_HOST}.

--with-sysroot=${CLFS}

Tells configure to build a linker that uses ${CLFS} as its root directory for its search paths.

--with-lib-path=/tools/lib

This tells the configure script to specify the library search path during the compilation of Binutils, resulting in /tools/lib being passed to the linker. This prevents the linker from searching through library directories on the host.

--disable-nls

This disables internationalization as i18n is not needed for the cross-compile tools.

--disable-multilib

This option disables the building of a multilib capable Binutils.

--disable-werror

This prevents the build from stopping in the event that there are warnings from the host's compiler.

Compile the package:

make

Install the package:

make install

Details on this package are located in Section 10.18.2, “Contents of Binutils.”