Linux From Scratch XV: Instalamos binutils y algo más

Siguiendo con la serie de artículos sobre la instalación de Linux From Scratch y después de haber ajustado el toolchain en mi anterior artículo, en este toca empezar compilando e instalando binutils. Después instalaremos algunos paquetes más antes de terminar la fiesta. 🙂

instalando binutils

En primer lugar, lanzamos el script para entrar en el chroot y generar el paquete, si queremos. Si no queremos, basta con quitar el nombre del paquete.

[~/lfs]$ sudo lfs binutils-2.22
root:/# expect -c "spawn ls"
spawn ls

El segundo comando es para comprobar que nuestro sistema es capaz de crear terminales virtuales. En mi caso ha funcionado. Si no fuera así, habría que corregir el problema para poder pasar los tests de binutils y gcc.

Ahora descomprimimos el código fuente y aplicamos un parche que evita un fallo con las optimizaciones del compilador. Además, eliminamos la instalación de standards.info, ya que la versión que viene con las binutils es muy antigua y, posteriormente, autoconf va a instalar una versión más moderna.

root:/# cd sources
root:/sources# tar xvf binutils-2.22.tar.bz2
root:/sources# cd binutils-2.22
root:/sources/binutils-2.22# rm -fv etc/standards.info
root:/sources/binutils-2.22# sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in
root:/sources/binutils-2.22# patch -Np1 -i ../binutils-2.22-build_fix-1.patc

Ya podemos configurar el código fuente, compilarlo y pasar los tests. Primero hay que crear un directorio para compilar binutils, ya que se recomienda hacerlo así.

root:/sources/binutils-2.22# mkdir -v ../binutils-build
root:/sources/binutils-2.22# cd ../binutils-build
root:/sources/binutils-build# ../binutils-2.22/configure --prefix=/usr --enable-shared
root:/sources/binutils-build# make tooldir=/usr
root:/sources/binutils-build# make -k check

Los tests de binutils son críticos, así que hay que asegurarse de que pasen. Afortunadamente a mi no me han dado ningún problema, así que ahora paso a instalar los ficheros. El comando cp es para instalar libiberty.h, que no se instala por defecto y lo van a necesitar otros paquetes más adelante.

root:/sources/binutils-build# make tooldir=/usr install
root:/sources/binutils-build# cp -v ../binutils-2.22/include/libiberty.h /usr/include

Por último, salimos del chroot para que el script nos genere el paquete binario y lo instalamos como siempre. Este último comando no es necesario si no estamos usando los scripts.

root:/sources/binutils-build# exit
[~/lfs]$ sudo lfsinst binutils-2.22.txz

Instalando GMP

A continuación vamos a instalar varios paquetes que son necesarios para que gcc funcione. Vamos a empezar con GMP.

[~/lfs]$ sudo lfs gmp-5.0.5
root:/# cd sources/
root:/sources# tar xvf gmp-5.0.5.tar.xz
root:/sources# cd gmp-5.0.5
root:/sources/gmp-5.0.5# ./configure --prefix=/usr --enable-cxx --enable-mpbsd

Los primeros comandos ya los conocemos. El configure lleva dos opciones interesantes: –enable-cxx para activar el soporte para C++ y –enable-mpbsd para que compile la librería libmp que es necesaria por otros programas. A continuación compilamos y pasamos los tests.

root:/sources/gmp-5.0.5# make
root:/sources/gmp-5.0.5# make check 2>&1 | tee gmp-check-log
root:/sources/gmp-5.0.5# awk '/tests passed/{total+=$2} ; END{print total}' gmp-check-log
166

Los tests de este paquete también son críticos, así que hay que comprobar que hayan pasado correctamente. El último comando es el que usamos para ello. Lo que hace es contar el número de tests que han pasado. Son 166, que es lo correcto. Si fueran menos, tendríamos un problema.

root:/sources/gmp-5.0.5# make install
root:/sources/gmp-5.0.5# mkdir -v /usr/share/doc/gmp-5.0.5
root:/sources/gmp-5.0.5# cp    -v doc/{isa_abi_headache,configuration} doc/*.html \
>          /usr/share/doc/gmp-5.0.5

Con estos comandos instalamos los ficheros que hemos generado al compilar. Los dos últimos instalan también la documentación, que no se instala por defecto con el make install. Con esto tenemos el paquete compilado y sólo falta salir del chroot, esperar a que genere el paquete binario e instalarlo.

root:/sources/gmp-5.0.5# exit
[~/lfs]$ sudo lfsinst gmp-5.0.5.txz

Instalando MFPR

Este es otro paquete de los que necesita el gcc. Empezamos usando el script para entrar en el chroot y que nos genere el paquete. Luego descomprimimos el código fuente.

[~/lfs]$ sudo lfs mpfr-3.1.1
root:/# cd sources/
root:/sources# tar xvf mpfr-3.1.1.tar.xz

Ahora lo configuramos y pasamos los tests. Los tests de este paquete también son críticos, así que hay que asegurarse de pasarlos.

root:/sources/mpfr-3.1.1# ./configure  --prefix=/usr        \
>              --enable-thread-safe \
>              --docdir=/usr/share/doc/mpfr-3.1.1
root:/sources/mpfr-3.1.1# make
root:/sources/mpfr-3.1.1# make check

En mi caso, todos los tests han pasado correctamente, así que ahora sólo falta instalar los ficheros. La documentación, se instala aparte con los dos últimos comandos.

root:/sources/mpfr-3.1.1# make install
root:/sources/mpfr-3.1.1# make html
root:/sources/mpfr-3.1.1# make install-html

Y ahora, como siempre, salimos del chroot e instalamos el paquete.

root:/sources/mpfr-3.1.1# exit
[~/lfs]$ sudo lfsinst mpfr-3.1.1.txz

Instalando MPC

Este es el último paquete de los necesarios para el gcc. Este es muy fácil de compilar, ya que lo único destacable que tiene es la opción –prefix=/usr que usaremos en el configure para que se instale en /usr. Lo demás es igual que cualquier compilación normal de cualquier código fuente de linux.

[~/lfs]$ sudo lfs mpc-1.0
root:/# cd sources/
root:/sources# tar xvf mpc-1.0.tar.gz
root:/sources# cd mpc-1.0

Una vez descomprimido el código fuente, compilamos, pasamos los tests e instalamos.

root:/sources/mpc-1.0# ./configure --prefix=/usr
root:/sources/mpc-1.0# make
root:/sources/mpc-1.0# make check
root:/sources/mpc-1.0# make install

Y, por último, salimos del chroot e instalamos el paquete.

root:/sources/mpc-1.0# exit
[~/lfs]$ sudo lfsinst mpc-1.0.txz

Y eso es todo. En el próximo post empezamos con el gcc.

EOF

Anuncios

3 pensamientos en “Linux From Scratch XV: Instalamos binutils y algo más

  1. Obux

    ninguno de tus post da trabajo!!!! vaya vaya… todo a la primera… interesante lo de las librerias para poder compilar gcc allí te das cuenta que no es tan fácil configurar desde cero un sistema basado en *unix o GNU/Linux.

    saludos sigue adelante..

    1. hexborg Autor de la entrada

      No te creas. Sí que tengo algún pequeño problemilla de vez en cuando. En el próximo, que ya estoy preparando, me he quedado sin memoria al compilar gcc. 🙂 Ya lo contaré todo. De todos modos, no es de esperar que surjan problemas graves. Ten en cuenta que estoy siguiendo un libro que ya viene preparado con las instrucciones justas para que todo funcione con las versiones exactas de cada paquete según indica el propio libro. Si tuviera que averiguar yo mismo todos los ajustes que hay que hacer a cada uno de los paquetes para que todo vaya bien, me parecería imposible. Sobre todo teniendo en cuenta que cambia con cada versión. La verdad es que el trabajo que hacen tanto los creadores de Linux From Scratch como los de las distribuciones que no están basadas en otras me parece envidiable.

      Saludos y gracias por comentar.

Los comentarios están cerrados.