Los detalles sobre este paquete se encuentran en la Sección 6.11.2, “Contenido de Binutils”.
El paquete Binutils contiene un enlazador, un ensamblador y otras utilidades para trabajar con ficheros objeto.
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
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:
CC="gcc -B/usr/bin/" ../binutils-2.17/configure \ --prefix=/tools --disable-nls --disable-werror
Significado de las opciones de configure:
CC="gcc
-B/usr/bin/"
Esto fuerza que gcc prefiera el enlazador
del anfitrión en /usr/bin
. Esto
es necesario con ciertos anfitriones en los que el nuevo
ld construido
aquí no es compatible con el gcc del anfitrión.
--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.
--disable-werror
Esto evita que la construcción se pare en el caso de que el compilador del anfitrión genere avisos.
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”.