Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Editores de Código - SciTEInstalar Clang desde cero

Instalar Binutils desde cero




Instalar Binutils desde cero




Copyright

Copyright © José Luis Lara Carrascal  2014-2018   http://manualinux.eu



Sumario

Introducción
Instalación
Optimizaciones
Enlaces



 
Introducción

En este manual trataremos la instalación de una versión especial del conjunto de herramientas de binarios de GNU, conocidas con el nombre de Binutils, que entre otra serie de cosas, proporcionan el enlazador dinámico GNU ld, y el ensamblador GNU as. Esta versión especial es requerida para poder compilar el plugin LLVM Gold, en el manual de instalación de Clang, requerido para poder disponer de la optimización LTO, en las compilaciones que realicemos con Clang. En el caso de GCC, el uso del enlazador dinámico ld.gold, mejora la optimización LTO, aplicada en el proceso de compilación.



Instalación

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Binutils para la elaboración de este documento.

* GCC - (8.1.0)
* Gawk - (4.2.1)
* M4 - (1.4.18)
* Libtool - (2.4.6)
* Make - (4.2.1)
* Automake - (1.16.1)
* Autoconf - (2.69)
* Gettext - (0.19.8.1)
* Bison - (3.0.5)
* Flex - (2.6.4)

Librerías de Desarrollo

* Zlib - (1.2.11)



Descarga

binutils-2.31.1.tar.xz

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=amdfam10 -mtune=amdfam10'

Donde pone amdfam10 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Valores CPU
Genéricos
Intel
AMD
VIA
IDT

Parámetros adicionales

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64"

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf binutils-2.31.1.tar.xz
$ mkdir binutils-2.31.1_build
$ cd binutils-2.31.1_build
$ ../binutils-2.31.1/configure --prefix=/usr --enable-shared --enable-threads \
--disable-werror --enable-lto --enable-gold=default --enable-plugins --with-system-zlib \
--enable-64-bit-bfd --libdir=/usr/lib64

Explicación de los comandos

mkdir binutils-2.31.1_build : Creamos un directorio de compilación, para no compilar directamente en el directorio de las fuentes.
--prefix=/usr : Instala Binutils en el directorio principal /usr.
--enable-shared : Activa la compilación de las librerías compartidas.
--enable-threads : Activa el soporte multihilo en el enlazador dinámico ld.gold

--disable-werror
: Evita que los avisos sean tratados como errores en el proceso de compilación.
--enable-lto : Activa el soporte de la optimización LTO.
--enable-gold=default : Activa la compilación del enlazador dinámico ld.gold, y lo establece como predefinido del sistema. En procesos de compilación en los que dé problemas el uso de éste, estableceremos la siguiente variable de entorno para utilizar el enlazador predefinido del paquete.

$ export LDFLAGS+=' -fuse-ld=bfd'

--enable-plugins : Activa el soporte de plugins.
--with-system-zlib : Compila el soporte de la versión de Zlib que tengamos en nuestro sistema, en lugar de la integración estática de la versión específica incluida en el paquete.

--enable-64-bit-bfd : Activa el soporte de la arquitectura de procesador de 64 bits en el enlazador dinámico.
--libdir=/usr/lib64 : Instala las librerías en /usr/lib64, en sistemas de 64 bits multiarquitectura.

Compilación

$ make tooldir=/usr

Parámetros de compilación opcionales

-j2 : Si tenemos un procesador de doble núcleo (dual-core), y el kernel está optimizado para el mismo y es SMP, con este parámetro aumentaremos el número de procesos de compilación simultáneos a un nivel de 2 y aceleraremos el tiempo de compilación del programa de forma considerable.
-j4 : Lo mismo que arriba pero con procesadores de 4 núcleos (quad-core).

Instalación como root

$ su
# make tooldir=/usr install-strip
# ldconfig -v

Borrar las locales adicionales instaladas con la utilidad BleachBit

$ su -c "bleachbit -c system.localizations"

Estadísticas de Compilación e Instalación de Binutils

Estadísticas de Compilación e Instalación de Binutils
CPU AMD Phenom(tm) II X4 965 Processor
MHz 3415.709
RAM 4096 MB
Sistema de archivos XFS
Versión del Kernel 4.17.8-ck1 SMP PREEMPT x86_64
Modo de frecuencia de la CPU ondemand
Versión de Glibc 2.27
Compilador GCC 8.1.0
Parámetros de optimización -03 -march=amdfam10 -mtune=amdfam10
Parámetros de compilación -j4
Tiempo de compilación 2' 46"
Archivos instalados 199
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 2
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 30,2 MB

Desinstalación como root

1) MODO TRADICIONAL

Este programa no tiene soporte para desinstalación con el comando 'make uninstall'. 

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

binutils-2.31.1-scripts.tar.gz

$ su
# tar zxvf binutils-2.31.1-scripts.tar.gz
# cd binutils-2.31.1-scripts
# ./Desinstalar_binutils-2.31.1

La desinstalación de Binutils conlleva la restauración del enlazador dinámico que existía antes en el sistema. Restauración que tenemos que realizar a través de los paquetes binarios proporcionados por la distribución, o en su lugar, desde la instalación desde código fuente de la versión anterior de este paquete, siguiendo los pasos descritos en este manual. Tener esto muy en cuenta a la hora de intentar desinstalar este paquete.

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf binutils-2.31.1-scripts.tar.gz
# cd binutils-2.31.1-scripts
# ./Respaldar_binutils-2.31.1

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_binutils-2.31.1



Enlaces


http://www.gnu.org/software/binutils >> La web de Binutils.


Foro Galería Blog


Actualizado el 19-07-2018

Instalar Binutils desde cero

Editores de Código - SciTEInstalar Clang desde cero