%general-entities; ]> Binutils-&binutils-version; Binutils <para>The Binutils package contains a linker, an assembler, and other tools for handling object files.</para> </sect2> <sect2 role="installation"> <title>Installation of Binutils To make sure that the proper syntax is used for a couple of tools, apply the following patch: patch -Np1 -i ../&binutils-posix-patch; The following patches merges all updates from the &binutils-version; Branch from the binutils developers: patch -Np1 -i ../&binutils-branch_update-patch; 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: ../binutils-&binutils-version;/configure --prefix=/usr \ --build=${CLFS_HOST} --host=${CLFS_TARGET} \ --target=${CLFS_TARGET} --enable-shared Compile the package: make configure-host During make configure-host you may receive the following error message. It is safe to ignore. WARNING: `flex' is missing on your system. You should only need it if you modified a `.l' file. You may need the `Flex' package in order for those modifications to take effect. You can get `Flex' from any GNU archive site. make tooldir=/usr The meaning of the make parameter: tooldir=/usr Normally, the tooldir (the directory where the executables will ultimately be located) is set to $(exec_prefix)/$(target_alias). Because this is a custom system, this target-specific directory in /usr is not required. Install the package: make DESTDIR=${CLFS} tooldir=/usr install Install the libiberty header file that is needed by some packages: cp -v ../binutils-&binutils-version;/include/libiberty.h ${CLFS}/usr/include Contents of Binutils Installed programs Installed libraries addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, and strip libiberty.a, libbfd.[a,so], and libopcodes.[a,so] Short Descriptions addr2line Translates program addresses to file names and line numbers; given an address and the name of an executable, it uses the debugging information in the executable to determine which source file and line number are associated with the address addr2line ar Creates, modifies, and extracts from archives ar as An assembler that assembles the output of gcc into object files as c++filt Used by the linker to de-mangle C++ and Java symbols and to keep overloaded functions from clashing c++filt gprof Displays call graph profile data gprof ld A linker that combines a number of object and archive files into a single file, relocating their data and tying up symbol references ld nm Lists the symbols occurring in a given object file nm objcopy Translates one type of object file into another objcopy objdump Displays information about the given object file, with options controlling the particular information to display; the information shown is useful to programmers who are working on the compilation tools objdump ranlib Generates an index of the contents of an archive and stores it in the archive; the index lists all of the symbols defined by archive members that are relocatable object files ranlib readelf Displays information about ELF type binaries readelf size Lists the section sizes and the total size for the given object files size strings Outputs, for each given file, the sequences of printable characters that are of at least the specified length (defaulting to four); for object files, it prints, by default, only the strings from the initializing and loading sections while for other types of files, it scans the entire file strings strip Discards symbols from object files strip libiberty Contains routines used by various GNU programs, including getopt, obstack, strerror, strtol, and strtoul libiberty libbfd The Binary File Descriptor library libbfd libopcodes A library for dealing with opcodes—the readable text versions of instructions for the processor; it is used for building utilities like objdump. libopcodes