Installing Binutils-2.13

Estimated build time:           2.05 SBU
Estimated required disk space:  160 MB

Installation of Binutils

This package is known to behave badly when you have changed its default optimization flags (including the -march and -mcpu options). Binutils is best left alone. Therefore, if you have defined any environment variables that override default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting or modifying them when building binutils. You have been warned.

Install Binutils by running the following commands:

mkdir ../binutils-build &&
cd ../binutils-build &&
../binutils-2.13/configure --prefix=$LFS/static --disable-nls &&
make LDFLAGS=-all-static &&
make install

Command explanations

mkdir ../binutils-build: The installation instructions for Binutils recommend creating a separate build directory instead of compiling the package inside the source tree. So, we create a binutils-build directory and work from there.

--disable-nls: This option disables internationalization (also known as i18n). We don't need this for our static programs and nls often causes problems when you're linking statically.

LDFLAGS=-all-static: Setting the variable LDFLAGS to the value -all-static causes binutils to be linked statically.

Contents of Binutils

Last checked against version 2.12.1.

Program Files

addr2line, ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings and strip

Descriptions

addr2line

addr2line translates program addresses into file names and line numbers. Given an address and an executable, it uses the debugging information in the executable to figure out which file name and line number are associated with a given address.

ar

The ar program creates, modifies, and extracts from archives. An archive is a single file holding a collection of other files in a structure that makes it possible to retrieve the original individual files (called members of the archive).

as

as is primarily intended to assemble the output of the GNU C compiler, gcc, for use by the linker ld.

gasp

gasp is the Assembler Macro Preprocessor.

gprof

gprof displays call graph profile data.

ld

ld combines a number of object and archive files, relocates their data and ties up symbol references. Often the last step in building a new compiled program to run is a call to ld.

nm

nm lists the symbols from object files.

objcopy

objcopy utility copies the contents of an object file to another. objcopy uses the GNU BFD Library to read and write the object files. It can write the destination object file in a format different from that of the source object file.

objdump

objdump displays information about one or more object files. The options control what particular information to display. This information is mostly useful to programmers who are working on the compilation tools, as opposed to programmers who just want their program to compile and work.

ranlib

ranlib generates an index to the contents of an archive, and stores it in the archive. The index lists each symbol defined by an archive member that is a relocatable object file.

readelf

readelf displays information about elf type binaries.

size

size lists the section sizes --and the total size-- for each of the object files in its argument list. By default, one line of output is generated for each object file or each module in an archive.

strings

For each file given, strings prints the printable character sequences that are at least 4 characters long (or the number specified with an option to the program) and are followed by an unprintable character. By default, it only prints the strings from the initialized and loaded sections of object files. For other types of files, it prints the strings from the whole file.

strings is mainly useful for determining the contents of non-text files.

strip

strip discards all or specific symbols from object files. The list of object files may include archives. At least one object file must be given. strip modifies the files named in its argument, rather than writing modified copies under different names.

Library Files

libbfd.[a,so] and libopcodes.[a,so]

Descriptions

libbfd

libbfd is the Binary File Descriptor library.

libopcodes

libopcodes is a native library for dealing with opcodes and is used in the course of building utilities such as objdump. Opcodes are actually "readable text" versions of instructions for the processor.

Binutils Installation Dependencies

Last checked against version 2.11.2.

Autoconf: autoconf, autoheader
Automake: aclocal, automake
Bash: sh
Binutils: ar, as, ld, nm, ranlib, strip
Diffutils: cmp
Fileutils: chmod, cp, ln, ls, mkdir, mv, rm, rmdir, touch
Flex: flex
Gcc: cc, cc1, collect2, cpp0, gcc
Glibc: ldconfig
Grep: egrep, fgrep, grep
M4: m4
Make: make
Gawk: gawk
Sed: sed
Sh-utils: basename, echo, expr, hostname, sleep, true, uname
Texinfo: install-info, makeinfo
Textutils: cat, sort, tr, uniq