Glibc-2.3.3-lfs-5.1

El paquete Glibc contiene la librería C principal. Esta librería proporciona todas las rutinas básicas para la ubicación de memoria, busqueda de directorios, abrir y cerrar ficheros, leerlos y escribirlos, manejo de cadenas, coincidencia de patrones, aritmética, etc...

Tiempo estimado de construcción:  11.8 SBU
Espacio requerido en disco:       734.2 MB

La instalación de Glibc depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Instalación de Glibc

Se sabe que este paquete se comporta mal si cambias sus parámetros de optimización (incluyendo las opciones -march y -mcpu). Por tanto, si tienes definida cualquier variable de entorno que sobreescribalas optimizaciones por defecto, como CFLAGS y CXXFLAGS, te recomendamos que las desactives cuando construyas Glibc.

Básicamente, compilar Glibc de forma diferente a como el libro sugiere pone la estabilidad de tu sistema en grave riesgo.

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

mkdir ../glibc-build
cd ../glibc-build

A continuación, prepara Glibc para su compilación:

../glibc-2.3.3-lfs-5.1/configure --prefix=/tools \
    --disable-profile --enable-add-ons=linuxthreads \
    --with-binutils=/tools/bin --with-headers=/tools/include \
    --without-gd --without-cvs

El significado de las opciones de configure:

  • --disable-profile: Esto construye las librerías sin información de perfiles. Omite esta opción si planeas usar perfiles en las herramientas temporales.

  • --enable-add-ons=linuxthreads: Esto le indica a Glibc que utilice el añadido Linuxthreads como su libreria de hilos.

  • --with-binutils=/tools/bin y --with-headers=/tools/include: Estrictamente hablando, estas opciones no son necesarias, pero nos aseguran que nada vaya mal con respecto a las cabeceras del núcleo y los programas de Binutils que se usen durante la construcción de Glibc.

  • --without-gd: Esta evita la construcción del programa memusagestat, el cual insiste extrañamente en enlazarse contra las librerías del sistema anfitrión (libgd, libpng, libz, y demás).

  • --without-cvs: Esto se indica para evitar que los Makefiles intenten hacer automáticamente un 'cvs checkout' cuando se utiliza una imagen CVS. Pero no es realmente necesario en estos momentos. Lo usamos porque silencia un molesto pero inofensivo aviso sobre la ausencia de un programa autoconf.

Durante esta fase puede que veas el siguiente mensaje de aviso:

configure: WARNING:
*** These auxiliary programs are missing or incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

configure: AVISO:
*** Versión incompatible o ausente de estos programas auxiliares: msgfmt
*** algunas características serán desactivadas.
*** Compruebe en el fichero INSTALL la versión requerida.

Normalmente, la ausencia o incompatibilidad del programa msgfmt es inofensiva, pero se cree que en ocasiones puede causar problemas al ejecutar el banco de pruebas.

Compila el paquete:

make

La compilación está completa. Como se mencionó antes, no recomendamos ejecutar los bancos de pruebas de las herramientas temporales en este capítulo. Si de todas formas deseas ejecutar el banco de pruebas de Glibc, hazlo con el siguiente comando:

make check

El banco de pruebas de Glibc depende en gran medida de ciertas funciones de tu sistema anfitrión, en particular del núcleo. Adicionalmente aquí, en este capítulo, algunas pruebas pueden verse afectadas adversamente por las herramientas existentes o el entorno del sistema anfitrión. Por supuesto, esto no será un problema cuando ejecutes el banco de pruebas de Glibc dentro del entorno chroot en el Capítulo 6. En general, se espera que el banco de pruebas de Glibc pase siempre con éxito. Sin embargo, como se menciona anteriormente, bajo ciertas circunstancias algunos fallos son inevitables. Aquí hay una lista con las cuestiones más comunes a tener en cuenta:

  • La prueba math falla en ocasiones cuando se ejecuta en sistemas donde la CPU no es una Intel genuina o una AMD genuina relativamente nueva. Es sabido que ciertos ajustes de optimización también afectan.

  • La prueba gettext falla en ocasiones debido a problemas del sistema anfitrión. La razón exacta aún no está clara.

  • La prueba atime falla en ocasiones cuando la partición LFS está montada con la opción noatime o debido a otras rarezas del sistema de ficheros.

  • La prueba shm puede fallar en el caso de que el sistema anfitrión utilice el sistema de ficheros devfs pero no tenga un sistema de ficheros tmpfs montado en /dev/shm, debido a la falta de soporte para tmpfs en el núcleo.

  • Cuando se ejecutan en hardware antiguo y lento, varias pruebas pueden fallar debido a que se excede el tiempo estimado.

En resumen, no te preocupes demasiado si ves fallos en el banco de pruebas de Glibc en este capítulo. La Glibc del Capítulo 6 es la que acabaremos usando al final, por lo que es la que realmente queremos ver pasar las pruebas (pero incluso ahí puede que todavía ocurran algunos fallos, la prueba math por ejemplo). Cuando aparezca un fallo, anótalo y continua ejecutando de nuevo make check. El banco de pruebas debería continuar a partir de donde se quedó. Puedes evitar esta secuencia de inicio-parada ejecutando make -k check. Pero si lo haces, asegúrate de registrar la salida para que más tarde puedas revisar el fichero de registro y examinar el número total de errores.

Aunque es un mensaje inofensivo, la fase de instalación de Glibc se quejará de la ausencia del fichero /tools/etc/ld.so.conf. Evita este confuso aviso con:

mkdir /tools/etc
touch /tools/etc/ld.so.conf

Ahora instala el paquete:

make install

Diferentes países y culturas tienen diferentes convenciones sobre cómo comunicarse. Estas convenciones van desde las más simples, como el formato para representar fechas y horas, a las más complejas, como el lenguaje hablado. La “internacionalización” de los programas GNU funciona mediante el uso de locales.

[Nota]

Nota

Si no estás ejecutando los bancos de pruebas en este capítulo, como recomendamos, no hay razón para instalar ahora las locales. Las instalaremos en el siguiente capítulo.

Si de todas formas quieres instalar las locales de Glibc, hazlo con el siguiente comando:

make localedata/install-locales

Una alternativa al comando anterior es instalar solamente aquellas locales que necesites o desees. Esto puede hacerse usando el comando localedef. Puedes encontrar más información sobre esto en el fichero INSTALL de las fuentes de Glibc. Sin embargo, hay un número de locales que son esenciales para que las comprobaciones de paquetes posteriores se realicen. En particular, la prueba de libstdc++ en GCC. Las siguientes instrucciones, en vez del objetivo anterior install-locales, instalarán el conjunto mínimo de locales necesario para que las pruebas se ejecuten correctamente:

mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP

Los detalles sobre este paquete se encuentran en “Contenido de Glibc”.