Aloha! salu2 a tod@s. En este apartado se citan algunos problemas encontrados en la construcción del sistema temporal del
cápitulo 5 y como fueron (o serán) solucionados.
/* Cabeceras API de Linux-2.6.22.5*/
Cita: |
El núcleo Linux necesita exponer una Interfaz de Programación de Aplicaciones (API) para ser usada por la librería C del sistema (Glibc en LFS). Esto se hace sanitizando los diversos ficheros de cabecera incluidos en el paquete con las fuentes de núcleo Linux.
|
En cristiano Las Cabeceras API de Linux no son ningun paquete en especial que se encuentre en LFS solo es la instalación de algunos archivos de cabecera (*.h) en lugares como:
/usr/include/{asm{,-generic},linux,mtd,rdma,sound}/*.h
Asi que solo descomprime el nucleo de Linux (linux- 2. 6. 22. 5. tar. bz2) y ejecuta los comandos mostrados en el Caps. 5.5.1. Instalación de las cabeceras API de Linux.
/* Ajuste de herramientas: */
El problema consiste de que al momento de ejecutar el comando:
Código: |
gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' \
> `dirname $(gcc -print-libgcc-file-name)`/specs
|
Se genera un error:
sed: can't read /mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.1.2/specs: No such file or directory
Hasta el momento de crear éste post la solución más acertada fue la siguiente:
1) Crear el archivo specs manualmente en:
Código: |
`dirname $(gcc -print-libgcc-file-name)`
|
usando:
Código: |
gcc -dumpspecs > `dirname $(gcc -print-libgcc-file-name)`/specs
|
2) Despues ejecutar el comando nuevamente:
Código: |
gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' `dirname $(gcc -print-libgcc-file-name)`/specs
|
En la consola se muestra el cambio despues de haber ejecutado el comando.
Cita: |
*dynamic_linker:
/tools/lib/ld-linux.so.2
|
Nota:
Se puede omitir este paso ya que el archivo specs no surte ningun cambio (al menos en las pruebas realizadas).
3) Se edita el fichero specs en la ruta:
Código: |
vi `dirname $(gcc -print-libgcc-file-name)`/specs
|
buscamos la linea:
Cita: |
*dynamic_linker:
/lib/ld-linux.so.2
|
y la cambiamos por:
Cita: |
*dynamic_linker:
/tools/lib/ld-linux.so.2
|
Listo!, podemos hacer las pruebas de sanidad otra vez.
Borramos el archivo a.out anterior
Volvemos a compilarlo...
Revisamos el enlazador dinamico.
Código: |
readelf -l a.out | grep ': /tools'
|
Cita: |
Caps. 5.7 Si todo funciona correctamente, no debe haber errores y la salida del último comando debe ser:
[Requesting program interpreter: /tools/lib/ld-linux.so.2]
|
Nota:
Cita: |
Caps. 5.7 Confirma que /tools/lib aparezca como el prefijo de tu enlazador dinámico.
|
Como hasta este punto todo ha salido bien (al menos dá la impresión) podeis seguir con lo descrito en el libro (seguir por donde ibas).
La construccion de las herramientas temporales se ha terminado y hasta el momento todo marcha bien.
salu2
_________________
Diniremix Immortal
The OpenDoorGroup Team