-These are the GNU binutils. These are utilities of use when dealing
-with object files.
+ README for BINUTILS
-The linker (ld) is in a separate directory, which should be ../ld.
-Linker-specific notes are in ../ld/README.
+These are the GNU binutils. These are utilities of use when dealing
+with binary files, either object files or executables. These tools
+consist of the linker (ld), the assembler (gas), and the profiler
+(gprof) each of which have their own sub-directory named after them.
+There is also a collection of other binary tools, including the
+disassembler (objdump) in this directory. These tools make use of a
+pair of libraries (bfd and opcodes) and a common set of header files
+(include).
-As of version 2.5, the assembler (as) is also included in this package, in
-../gas. Assembler-specific notes can be found in ../gas/README.
+There are README and NEWS files in most of the program sub-directories
+which give more information about those specific programs.
-Recent changes are in ./NEWS, ../ld/NEWS, and ../gas/NEWS.
Unpacking and Installation -- quick overview
============================================
-When you unpack the binutils-2.9.tar.gz file, you'll get a directory
-called something like `binutils-2.9', which contains various files and
-directories. Most of the files in the top directory are for
-information and for configuration. The actual source code is in
-subdirectories.
+When you unpack the binutils archive file, you will get a directory
+called something like `binutils-XXX', where XXX is the number of the
+release. (Probably 2.13 or higher). This directory contains
+various files and sub-directories. Most of the files in the top
+directory are for information and for configuration. The actual
+source code is in sub-directories.
To build binutils, you can just do:
- cd binutils-2.9
+ cd binutils-XXX
./configure [options]
make
make install # copies the programs files into /usr/local/bin
mkdir objdir
cd objdir
- ../binutils-2.9/configure [options]
+ ../binutils-XXX/configure [options]
make
make install
By default, the binutils will be configured to support the system on
which they are built. When doing cross development, use the --target
-configure option to specify a different target.
+configure option to specify a different target, eg:
+
+ ./configure --target=foo-elf
The --enable-targets option adds support for more binary file formats
besides the default. List them as the argument to --enable-targets,
./configure --enable-targets=sun3,rs6000-aix,decstation
-The name 'all' compiles in support for all valid BFD targets (this was
-the default in releases before 2.3):
+The name 'all' compiles in support for all valid BFD targets:
./configure --enable-targets=all
+On 32-bit hosts though, this support will be restricted to 32-bit
+target unless the --enable-64-bit-bfd option is also used:
+
+ ./configure --enable-64-bit-bfd --enable-targets=all
+
You can also specify the --enable-shared option when you run
configure. This will build the BFD and opcodes libraries as shared
libraries. You can use arguments with the --enable-shared option to
a binutils release are bfd and opcodes.
The binutils will be linked against the shared libraries. The build
-step will attempt to place the correct library in the runtime search
+step will attempt to place the correct library in the run-time search
path for the binaries. However, in some cases, after you install the
binaries, you may have to set an environment variable, normally
LD_LIBRARY_PATH, so that the system can find the installed libbfd
To build under openVMS/AXP, see the file makefile.vms in the top level
directory.
+
+Native Language Support
+=======================
+
+By default Native Language Support will be enabled for binutils. On
+some systems however this support is not present and can lead to error
+messages such as "undefined reference to `libintl_gettext'" when
+building there tools. If that happens the NLS support can be disabled
+by adding the --disable-nls switch to the configure line like this:
+
+ ../binutils-XXX/configure --disable-nls
+
+
If you don't have ar
====================
-If your system does not already have an ar program, the normal
+If your system does not already have an 'ar' program, the normal
binutils build process will not work. In this case, run configure as
usual. Before running make, run this script:
cd binutils
MAKE="${MAKE_PROG}"
export MAKE
-${MAKE} $* ar_DEPENDENCIES= ar_LDADD='../bfd/*.o `cat ../libiberty/required-list ../libiberty/needed-list | sed -e "s,\([^ ][^ ]*\),../libiberty/\1,g"` `if test -f ../intl/gettext.o; then echo '../intl/*.o'; fi`' ar
+${MAKE} $* ar_DEPENDENCIES= ar_LDADD='../bfd/*.o ../libiberty/*.o `if test -f ../intl/gettext.o; then echo '../intl/*.o'; fi`' ar
This script will build an ar program in binutils/ar. Move binutils/ar
into a directory on your PATH. After doing this, you can run make as
Porting
=======
-Binutils-2.9 supports many different architectures, but there
+Binutils-2.13 supports many different architectures, but there
are many more not supported, including some that were supported
-by earlier versions. We are hoping for volunteers to
-improve this situation.
+by earlier versions. We are hoping for volunteers to improve this
+situation.
The major effort in porting binutils to a new host and/or target
architecture involves the BFD library. There is some documentation
in ../bfd/doc. The file ../gdb/doc/gdbint.texinfo (distributed
-with gdb-4.x) may also be of help.
+with gdb-5.x) may also be of help.
Reporting bugs
==============
-Send bug reports and patches to bug-gnu-utils@gnu.org. Always mention
-the version number you are running; this is printed by running any of
-the binutils with the --version option. We appreciate reports about
-bugs, but we do not promise to fix them.
+Send bug reports and patches to:
+
+ bug-binutils@gnu.org.
+
+Always mention the version number you are running; this is printed by
+running any of the binutils with the --version option. We appreciate
+reports about bugs, but we do not promise to fix them.
VMS
===
Installing the release
Provided that your directory setup conforms to the GNU on openVMS
-standard, you already have a concealed deviced named 'GNU_ROOT'.
+standard, you already have a concealed device named 'GNU_ROOT'.
In this case, a simple
$ gmake install
and define all programs as foreign commands.
-If you're satiesfied with the compilation, you may want to remove
+If you're satisfied with the compilation, you may want to remove
unneeded objects and libraries:
$ gmake clean