5.3. Binutils-2.16.1 - Fase 1

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

Tiempo estimado de construcción: 1 SBU
Espacio requerido en disco: 189 MB

5.3.1. Instalación de Binutils

Es importante que Binutils sea el primer paquete que compiles, pues tanto Glibc como GCC llevan a cabo varias comprobaciones sobre el enlazador y el ensamblador disponibles para determinar qué características activar.

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

mkdir -v ../binutils-build
cd ../binutils-build
[Nota]

Nota

Si quieres que los valores de los SBUs mostrados en el resto del libro sean de utilidad, mide el tiempo que se tarda en construir este paquete desde la compilación hasta la primera instalación. Para ello, envuelve los comandos dentro de un comando time de esta forma: time { ./configure ... && make && make install; }.

Prepara Binutils para su compilación:

../binutils-2.16.1/configure --prefix=/tools --disable-nls

Significado de las opciones de configure:

--prefix=/tools

Esto le indica al guión configure que los programas de Binutils se instalarán en el directorio /tools.

--disable-nls

Esta opción desactiva la internacionalización, pues i18n no es necesario en las herramientas temporales.

Compila el paquete:

make

La compilación se ha completado. Normalmente deberíamos ejecutar ahora el banco de pruebas, pero en esta temprana fase el entorno de trabajo para los bancos de pruebas (Tcl, Expect y DejaGnu) todavía no está en su sitio. Los beneficios de ejecutar las pruebas ahora son mínimos, pues los programas de esta primera fase pronto serán sustituidos por los de la segunda.

Instala el paquete:

make install

Prepara el enlazador para la posterior fase de “ajuste”:

make -C ld clean
make -C ld LIB_PATH=/tools/lib
cp -v ld/ld-new /tools/bin

Significado de los parámetros de make:

-C ld clean

Esto le indica al programa make que elimine todos los ficheros compilados que haya en el subdirectorio ld.

-C ld LIB_PATH=/tools/lib

Esta opción vuelve a construir todo dentro del subdirectorio ld. Especificar la variable LIB_PATH del Makefile en la línea de comandos nos permite obviar su valor por defecto y apuntar a nuestro directorio de herramientas temporales. El valor de esta variable especifica la ruta de búsqueda de librerías por defecto del enlazador. Estos preparativos se utilizan más tarde en este capítulo.

Los detalles sobre este paquete se encuentran en la Sección 6.11.2, “Contenido de Binutils”.