| README for BINUTILS |
| |
| 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). |
| |
| There are README and NEWS files in most of the program sub-directories |
| which give more information about those specific programs. |
| |
| |
| Unpacking and Installation -- quick overview |
| ============================================ |
| |
| 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.12 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-XXX |
| ./configure [options] |
| make |
| make install # copies the programs files into /usr/local/bin |
| # by default. |
| |
| This will configure and build all the libraries as well as the |
| assembler, the binutils, and the linker. |
| |
| If you have GNU make, we recommend building in a different directory: |
| |
| mkdir objdir |
| cd objdir |
| ../binutils-XXX/configure [options] |
| make |
| make install |
| |
| This relies on the VPATH feature of GNU make. |
| |
| 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, 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, |
| separated by commas. For example: |
| |
| ./configure --enable-targets=sun3,rs6000-aix,decstation |
| |
| 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 |
| indicate that only certain libraries should be built shared; for |
| example, --enable-shared=bfd. The only potential shared libraries in |
| 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 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 |
| shared library. |
| |
| To build under openVMS/AXP, see the file makefile.vms in the top level |
| directory. |
| |
| |
| If you don't have ar |
| ==================== |
| |
| 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: |
| |
| #!/bin/sh |
| MAKE_PROG="${MAKE-make}" |
| MAKE="${MAKE_PROG} AR=true LINK=true" |
| export MAKE |
| ${MAKE} $* all-libiberty |
| ${MAKE} $* all-intl |
| ${MAKE} $* all-bfd |
| 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 |
| |
| 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 |
| usual to build the complete binutils distribution. You do not need |
| the ranlib program in order to build the distribution. |
| |
| Porting |
| ======= |
| |
| Binutils-2.12 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. |
| |
| 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-5.x) may also be of help. |
| |
| Reporting bugs |
| ============== |
| |
| 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 |
| === |
| |
| This section was written by Klaus K"ampf <kkaempf@rmi.de>. It |
| describes how to build and install the binutils on openVMS (Alpha and |
| Vax). (The BFD library only supports reading Vax object files.) |
| |
| Compiling the release: |
| |
| To compile the gnu binary utilities and the gnu assembler, you'll |
| need DEC C or GNU C for openVMS/Alpha. You'll need *both* compilers |
| on openVMS/Vax. |
| |
| Compiling with either DEC C or GNU C works on openVMS/Alpha only. Some |
| of the opcodes and binutils files trap a bug in the DEC C optimizer, |
| so these files must be compiled with /noopt. |
| |
| Compiling on openVMS/Vax is a bit complicated, as the bfd library traps |
| a bug in GNU C and the gnu assembler a bug in (my version of) DEC C. |
| |
| I never tried compiling with VAX C. |
| |
| |
| You further need GNU Make Version 3.76 or later. This is available |
| at ftp.progis.de or any GNU archive site. The makefiles assume that |
| gmake starts gnu make as a foreign command. |
| |
| If you're compiling with DEC C or VAX C, you must run |
| |
| $ @setup |
| |
| before starting gnu-make. This isn't needed with GNU C. |
| |
| On the Alpha you can choose the compiler by editing the toplevel |
| makefile.vms. Either select CC=cc (for DEC C) or CC=gcc (for GNU C) |
| |
| |
| Installing the release |
| |
| Provided that your directory setup conforms to the GNU on openVMS |
| standard, you already have a concealed device named 'GNU_ROOT'. |
| In this case, a simple |
| |
| $ gmake install |
| |
| suffices to copy all programs and libraries to the proper directories. |
| |
| Define the programs as foreign commands by adding these lines to your |
| login.com: |
| |
| $ gas :== $GNU_ROOT:[bin]as.exe |
| $ size :== $GNU_ROOT:[bin]size.exe |
| $ nm :== $GNU_ROOT:[bin]nm.exe |
| $ objdump :== $GNU_ROOT:[bin]objdump.exe |
| $ strings :== $GNU_ROOT:[bin]strings.exe |
| |
| If you have a different directory setup, copy the binary utilities |
| ([.binutils]size.exe, [.binutils]nm.exe, [.binutils]objdump.exe, |
| and [.binutils]strings.exe) and the gnu assembler and preprocessor |
| ([.gas]as.exe and [.gas]gasp.exe]) to a directory of your choice |
| and define all programs as foreign commands. |
| |
| |
| If you're satisfied with the compilation, you may want to remove |
| unneeded objects and libraries: |
| |
| $ gmake clean |
| |
| |
| If you have any problems or questions about the binutils on VMS, feel |
| free to mail me at kkaempf@rmi.de. |