6.11. Binutils-2.16.1

El paquete Binutils contiene un enlazador, un ensamblador y otras utilidades para trabajar con ficheros objeto.

Tiempo estimado de construcción: 1.5 SBU testsuite included
Espacio requerido en disco: 172 MB testsuite included

6.11.1. Instalación de Binutils

Verifica que tus pseudo-terminales (PTYs) funcionan adecuadamente dentro del entorno chroot. Comprueba que todo está correcto realizando una simple prueba:

expect -c "spawn ls"

Si recibes el siguiente mensaje, el entorno chroot no está correctamente configurado para operar con PTYs:

The system has no more ptys.
Ask your system administrator to create more.

El sistema no tiene más ptys.
Pídele al administrador del sistema que cree más.

Debes solucionar el problema antes de ejecutar los bancos de pruebas de Binutils y GCC.

La documentación de Binutils recomienda construirlo fuera del árbol de las fuentes, en un directorio de construcción dedicado:

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

Prepara Binutils para su compilación:

../binutils-2.16.1/configure --prefix=/usr \
    --enable-shared

Compila el paquete:

make tooldir=/usr

Significado del parámetro de make:

tooldir=/usr

Normalmente, tooldir (el directorio donde se instalarán los ejecutables) se establece como $(exec_prefix)/$(target_alias). Por ejemplo, en máquinas i686 esto se convertiría en /usr/i686-pc-linux-gnu. Como este es un sistema personalizado, no es necesario tener en /usr dicho directorio específico de un objetivo. $(exec_prefix)/$(target_alias) se utilizaría si el sistema fuese usado para compilación cruzada (por ejemplo, para compilar un paquete en una máquina Intel, pero generando código que se ejecutará en máquinas PowerPC).

[Importante]

Importante

En esta sección, el banco de pruebas para Binutils se considera crítico. No te lo saltes bajo ninguna circunstancia.

Comprueba los resultados:

make check

Instala el paquete:

make tooldir=/usr install

Instala el fichero de cabecera libiberty, pues lo necesitan algunos paquetes:

cp -v ../binutils-2.16.1/include/libiberty.h /usr/include

6.11.2. Contenido de Binutils

Programas instalados: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings y strip
Librerías instaladas: libiberty.a, libbfd.{a,so} y libopcodes.{a,so}

Descripciones cortas

addr2line

Traduce direcciones de programas a nombres de ficheros y números de líneas. Dándole una dirección y un ejecutable, usa la información de depuración del ejecutable para averiguar qué fichero y número de línea está asociado con dicha dirección.

ar

Crea, modifica y extrae desde archivos.

as

Un ensamblador que ensambla la salida de gcc dentro de ficheros objeto.

c++filt

Es usado por el enlazador para decodificar símbolos de C++ y Java, guardando las funciones sobrecargadas para su clasificación.

gprof

Muestra los datos del perfil del gráfico de llamada.

ld

Un enlazador que combina un número de ficheros objeto y de archivos en un único fichero, reubicando sus datos y estableciendo las referencias a los símbolos.

nm

Lista los símbolos que aparecen en un fichero objeto dado.

objcopy

Traduce un tipo de ficheros objeto a otro.

objdump

Muestra información sobre el fichero objeto indicado, con opciones para controlar la información a mostrar. La información mostrada es útil fundamentalmente para los programadores que trabajan sobre las herramientas de compilación.

ranlib

Genera un índice de los contenidos de un archivo, y lo coloca en el archivo. El índice lista cada símbolo definido por los miembros del archivo que son ficheros objeto reubicables.

readelf

Muestra información sobre binarios de tipo ELF.

size

Lista los tamaños de las secciones y el tamaño total para los ficheros objeto indicados.

strings

Muestra, para cada fichero indicado, las cadenas de caracteres imprimibles de al menos la longitud especificada (4 por defecto). Para los ficheros objeto muestra, por defecto, sólo las cadenas procedentes de las secciones de inicialización y carga. Para otros tipos de ficheros explora el fichero al completo.

strip

Elimina símbolos de ficheros objeto.

libiberty

Contiene rutinas usadas por varios programas GNU, incluidos getopt, obstack, strerror, strtol y strtoul.

libbfd

La librería del Descriptor de Fichero Binario.

libopcodes

Una librería para manejar mnemónicos. Se usa para construir utilidades como objdump. Los mnemónicos son las versiones en “texto legible” de las instrucciones del procesador.