Tiempo estimado de construcción: 11.8 SBU Estimación del espacio necesario en disco: 800 MB |
Glibc es la librería C que proporciona las llamadas al sistema y las funciones básicas, tales como open, malloc, printf, etc. La librería C es utilizada por todos los programas enlazados dinámicamente.
Programas instalados: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump y zic
Librerías instaladas: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so y libutil.[a,so]
Glibc depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.
Antes de instalar Glibc, debes entrar al directorio glibc-2.3.2 con el comando cd y desempaquetar Glibc-linuxthreads dentro de este directorio, no en el directorio donde normalmente desempaquetas las fuentes.
Nota: En este capítulo vamos a ejecutar el banco de pruebas para Glibc. Sin embargo, hay que resaltar que ejecutar aquí el banco de pruebas de Glibc no se considera tan importante como ejecutarlo en el Capítulo 6.
Se sabe que este programa 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 pueda sobreescribir las optimizaciones por defecto, como CFLAGS y CXXFLAGS, te recomendamos que las desactives antes de construir Glibc.
Básicamente, compilar Glibc de forma diferente a como el libro sugiere pone la estabilidad de tu sistema en grave riesgo.
Aunque es un mensaje inofensivo, la instalación de Glibc se quejará de la ausencia del fichero /tools/etc/ld.so.conf. Corrige este molesto aviso con:
mkdir /tools/etc touch /tools/etc/ld.so.conf |
Igualmente, Glibc tiene un sutil problema cuando se compila con GCC 3.3.1. Aplica el siguiente parche para corregirlo:
patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch |
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.2/configure --prefix=/tools \ --disable-profile --enable-add-ons \ --with-headers=/tools/include \ --with-binutils=/tools/bin \ --without-gd |
El significado de las opciones de configure:
--disable-profile: Esto desactiva la construcción de librerías con información de perfiles. Este comando puede omitirse si planeas usar perfiles.
--enable-add-ons: Esto activa los añadidos que se instalarán con Glibc, en nuestro caso Linuxthreads.
--with-binutils=/tools/bin y --with-headers=/tools/include: Estrictamente hablando, estas opciones no son necsarias, 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 opción asegura que no se construya el programa memusagestat, el cual insiste extrañamente en enlazarse contra las librerías del sistema anfitrión (libgd, libpng, libz, y demás).
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: *** Estos programas auxiliares no se encontraron o son versiones incompatibles: msgfmt *** algunas características serán desactivadas. *** Compruebe en el fichero INSTALL la versión requerida.
La ausencia o incompatibilidad del programa msgfmt normalmente es inofensiva, pero se cree que en ocasiones puede causar problemas al ejecutar el banco de pruebas.
Compila el paquete:
make |
Ejecuta el banco de pruebas:
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 tambien 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 realmentente queremos ver pasar. Pero recuerda, incluso en el Capítulo 6 puede que todavía ocurran algunos fallos, por ejemplo la prueba math. 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, asegurate de registrar la salida para que más tarde puedas revisar el fichero de registro y examinar el número total de errores.
Ahora instala el paquete:
make install |
Diferentes paises 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. Instalaremos ahora las locales de Glibc:
make localedata/install-locales |
Una alternativa al comando anterior es instalar sólamente 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-2.3.2. 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 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 |