Las Preguntas más Frecuentes (FAQ) de LFS

Seth W. Klein


sk@sethwklein.net
Traducido por el proyecto LFS-ES
11 de Junio de 2003


1. Introducción
1.1. ¿Para qué estas FAQ?
1.2. ¿Qué es LFS?
1.3. Agradecimientos
2. Cómo
2.1. ¿Qué hay respecto al netiquette?
2.2. ¿Qué lista debo utilizar para cada asunto?
2.3. ¿Cuál es el mejor lugar para obtener ayuda?
2.4. Contribuyendo a estas FAQ (Preguntas Frecuentes).
3. Errores de los que se ha Informado Frecuentemente
3.1. Los comandos "ln -s" del libro estan equivocados.
3.2. /bin/foo es una copia de /bin/bar.
3.3. ¿Puedo usar una versión más nueva que la indicada en el Libro?
3.4. Hay una nueva versión del paquete Foo.
3.5. La tecla Suprimir (Delete) no funciona.
3.6. ¡El sistema se apaga si fsck encuentra errores!
4. Mejoras Solicitadas Frecuentemente
4.1. ¿Por qué no usar GRUB en lugar de LILO?
4.2. ¿Por qué no actualizar LILO a la última versión?
4.3. ¿Por qué no se incluyen las FAQ en el libro?
4.4. ¿Por qué aparece vim en el libro?
4.5. ¿Por qué aparece ed en el libro?
4.6. ¿Por qué no hay algún tipo de gestor de paquetes en el libro?
5. Recursos
5.1. ¿Hay alguna información sobre LFS en un sistema Alpha?
5.2. ¿Donde están el paquete lfs-packages o los guiones para wget?
5.3. ¿Cómo encuentro un paquete o un comando?
5.4. ¿Cómo compilo un núcleo o configuro los módulos?
5.5. ¿Qué distribución debería utilizar para empezar con LFS?
5.6. ¿Dónde esta el comando which?
5.7. ¿Donde está portmap?
5.8. ¿Donde está libncurses.a en Mandrake?
5.9. ¿Cómo hago un CD arrancable?
5.10. ¿Cómo creo una instalación realmente pequeña como la que menciona el libro?
5.11. ¿Cómo compilo el sistema LFS de forma cruzada?
5.12. Estoy teniendo problemas para compilar algo realmente viejo.
5.13. ¿Dónde puedo encontrar los logotipos de LFS?
5.14. ¿Los usuarios de LFS juegan al Quake?
6. Pistas Buscadas Frecuentemente
6.1. ¿Qué es un fichero de texto con formato DOS?
6.2. ¿Cómo compilo un paquete?
6.3. ¿Necesito conservar el código fuente después de instalar?
6.4. ¿Donde está /dev/eth0?
6.5. ¿como puedo hacer que mi máquina se apague cuando paro el sistema (shut down)?
6.6. ¿Cómo creo un usuario?
6.7. ¿Por qué copiamos los ficheros de cabecera del núcleo en lugar de hacer enlaces a ellos?
6.8. ¿Son malos los avisos del compilador GCC?
7. Errores Encontrados Frecuentemente
7.1. Errores Ocurridos en Cualquier Momento
7.1.1. No existe el fichero o directorio
7.2. Errores en Tiempo de Compilación
7.2.1. Errores en Tiempo de Compilación para Cualquier Paquete
7.2.1.1. Referencia indefinida a `deflate'
7.2.1.2. bash: ./configure: No such file or directory
7.2.1.3. ./configure: bad interpreter: Permission denied (./configure: intérprete incorrecto: Permiso denegado)
7.2.1.4. El guión configure no puede adivinar el tipo de mi sistema.
7.2.1.5. checking whether we are using GNU C... no (comprobando si estamos utilizando GNU C... no)
7.2.1.6. ¿Por qué el guión configure se cuelga en "checking for signed size_t type..." ("comprobando el signo del tipo size_t...")?
7.2.1.7. Estoy obteniendo el error `/dev/null: Permission denied' ('/dev/null: Permiso denegado')
7.2.1.8. signal 11 (error interno: Violación de segmento).
7.2.1.9. Están apareciendo errores cuando intento construir un paquete que requiere GTK+, pero yo he instalado GTK+ 2.x.
7.2.1.10. X11/Xlib.h: No such file or directory (X11/Xlib.h: No existe el fichero o directorio)
7.2.1.11. Cualquier error mientras se construye alguna parte de Gnome
7.2.2. Errores en Tiempo de Compilación para Paquetes Específicos
7.2.2.1. conflicto de tipos para `gethostname'
7.2.2.2. "lex.l:429: `yytext_ptr' undeclared" ("lex.l:429: `yytext_ptr' no declarado") al compilar modutils
7.2.2.3. referencia no definida a `deflate'
7.2.2.4. Glibc falla con ". . . . it is normal to compile GNU libc with the `linuxthreads' add-on. . . ." (.... es normal compilar libc GNU con el añadido de 'linuxthreads'...)
7.2.2.5. Perl falla con el mensaje "*** missing separator. Stop." ("*** falta un separador. Alto.")
7.2.2.6. Error: Unknown pseudo-op: `.hidden'
7.2.2.7. La construcción de una glibc optimizada falla en spinlock.c
7.2.2.8. Glibc falla con "cannot determine asm global directive" ("no puedo determinar la directiva blobal asm").
7.2.2.9. Falla la glibc y menciona algo de BEGIN y END.
7.2.2.10. Glibc falla con "ld.map: No such file or directory" (ld.map: no existe el fichero o directorio).
7.2.2.11. La construcción estática de sh-utils falla con el mensaje "undefined reference to `getloadavg'" ("referencia no definida a 'getloadavg'").
7.2.3. Errores en Tiempo de Compilación no Listados Anteriormente
7.2.3.1. He usado un parche de GNU para actualizar un programa. ¿Es eso correcto?
7.2.3.2. Cuando usar las opciones de optimización (establecer CFLAGS)
7.2.3.3. Estoy usando una versión que no aparece en el libro. ¿Es eso un problema?
7.2.3.4. No borré el árbol de los fuentes luego de mi último intento ¿Debo hacerlo?
7.3. Errores en Tiempo de Ejecución
7.3.1. Aparecen errores relacionados con net-pf-?.
7.3.2. modprobe: Can't locate module char-major-10-135 (modprobe: No puedo localizar el módulo char-major-10-135)
7.3.3. modprobe: Can't locate module /dev/rtc (modprobe: No puedo localizar el módulo /dev/rtc)
7.3.4. Kernel panic: VFS: unable to mount root fs (Pánico en el núcleo: VFS: incapaz de montar el sistema de archivos raíz)
7.3.5. init: Id "1" respawning too fast: disabled for 5 minutes
7.3.6. ¿Qué significan esos errores de LILO?
7.3.7. ¡El nombre de mi sistema (hostname) aparece como "-f"!
7.3.8. ¿Por qué less (y por tanto man) imprime <AD> en vez de guiones?

1. Introducción

2. Cómo

He aquí algunos puntos completamente prácticos de netiquette. Estos incluyen solamente aquellos puntos que alguien podría comentar que has obviado. Los que participan en las listas de distribución del proyecto encontrarán obvios los primeros. Hacia el final hay más que no son tan obvios.

Las razones para esto van a ser omitidas para ser breves, pero ténganlo por seguro, las hay, y esas razones son más que sólo una preferencia de alguna persona en particular.

Teniendo esto en cuenta, he aquí varios consejos sobre comportamiento seguidos de cuestiones mas "técnicas":

A pesar que este texto se refiere exclusivamente a "las listas" no pretende ignorar los grupos de noticias a los cuales se envían los mensajes.

Por favor, recuerda que es grosero enviar preguntas que ya están respondidas en la documentación obviamente disponible tales como los libros LFS y BLFS, este PMF (FAQ), las recetas de LFS, las páginas del manual apropiadas, el archivo de la lista, y las búsquedas simples en Google. Mientras puedas demostrar que has hecho un esfuerzo para encontrar la respuesta y no te ofenda que te indiquen alguna documentación, no deberíais preocuparos. Aquél que lo haga puede ser ignorado; lo tiene merecido.

La mayoría de los intercambios de insultos (flamewars) comienzan cuando algún novato con un ego extragrande envía una pregunta obvia, entonces algunos le critican (incluso de manera educada), y éste llega a ser públicamente ofendido. Por favor, intenta evitar esta situación. Con pocas palabras intenta remitirles a la documentación exacta que debieron leer. Si crees que debes criticarle, por favor hazlo a través de su correo personal, no en la lista. Aplicad lo mismo a cualquier situación que pueda caldearse.

La lista tiene miembros de muchas nacionalidades por lo que el lenguaje coloquial de todo tipo y idioma será normalmente mal entendido. (Atestiguado por la reciente discusión sobre "bootstrapping".) Cualquier mención a la blasfemia, política, guerra o religión (incluso en la firma) puede molestar a alguien en algún lugar, así que por favor evítalas. Finalmente, se considera correcto el escribir en ingles aunque la gente de la lista sepa más idiomas.

Ahora vamos a por las cosas "más mecánicas".

No envíes mensajes en HTML. Si usas Yahoo, Hotmail, o Outlook y no has desactivado el HTML, entonces está activado. Si estás usando algún otro cliente de correo, por favor verifica esto antes de enviar algún mensaje. Echa un vistazo a http://www.expita.com/nomime.html.

Escribe tus mensajes a 72 caracteres por línea. Si no deseas hacer esto a mano, configura tu cliente de correo para hacerlo automáticamente al enviar.

Responde debajo del texto del mensaje original. En Outlook es difícil hacer esto Hay un añadido (plugin) para arreglar el Outlook en http://home.in.tum.de/~jain/software/outlook-quotefix/, y uno para Outlook Express en http://home.in.tum.de/~jain/software/oe-quotefix/.

Limitar la firma a 4 líneas.

Recorta el texto del mensaje original, y especialmente las firmas. Pero no cortar tanto como para hacer confusa tu respuesta sin consultar el original.

No hagas click en "responder" a menos que de hecho estés respondiendo a un mensaje. Utiliza "nuevo" o "redactar" o como sea que lo llame tu cliente de correo. Responder hace mucho más que establecer la linea del asunto y hará que tu mensaje aparezca en donde no debe, a menos que de hecho estés respondiendo.

Esto que sigue no es lo más importante, pero es útil conocerlo. En las listas de LFS, la gente suele borrar el contenido del campo CC y sólo envía sus respuestas a la lista. Esto probablemente no es una buena idea, pero existe en la práctica debido a una situación política la cual es improbable que cambie.

La respuesta completa está en http://www.linuxfromscratch.org/mailinglists/, pero aquí tienes un resumen:

  • Envía preguntas de soporte sólo a las listas lfs-support y blfs-support. Preguntas del tipo "¿Cómo hago...?" y "Estoy obteniendo este error..." o cualquier otra petición de ayuda deben dirigirse a las listas de soporte, y a ningún sitio más.

  • Si no estás teniendo ningún problema siguiendo el libro LFS, no preguntes en lfs-support.

  • Si no estás enviando ninguna sugerencia para mejorar el propio libro LFS, no envíes a lfs-dev.

  • Sólo se aceptan sugerencias sobre el libro BLFS en la lista blfs-dev.

  • Las cosas son un poco diferentes para blfs-support. Cualquier cosa que no quepa en una de las listas anteriores tiene cabida aquí, excepto para el precio de la cerveza y las peleas de GNU contra BSD.

  • El precio de la cerveza, las peleas de GNU contra BSD y las peleas de Microsoft contra Linux deben restringirse a lfs-chat. Hoy en día, la discusión sobre hardware también debería ir aquí.

Como advertencia especial, si mencionas XFree86, KDE o GNOME puedes estar seguro de que tu pregunta no pertenece a las listas lfs-dev or lfs-support.

http://lucas.hispalinux.es/ tiene traducidos al castellano los COMOs y una gran cantidad de documentación. Puedes encontrar algo allí. En http://www.tldp.org/ se encuentran los originales en inglés.

El sitio de búsqueda de linuxfromscratch.org incluye las listas de correo. Muchas preguntas se han discutido allí al menos una vez. Puedes encontrarlo en http://search.linuxfromscratch.org/.

Si deseas soporte, el IRC normalmente es mejor. Es más rápido y no atasca las listas de correo. Se puede encontrar información sobre los canales IRC de LFS en http://www.linuxfromscratch.org/misc/irc.shtml.

Hay dos canales interesantes en el IRC. #LFS, que es el canal de la comunidad, y #lfs-support, que es para soporte. Si vas a pedir soporte es más fácil encontrar ayuda competente y amistosa en #lfs-support.

Como último recurso, están las listas de correo. La gente se enfadará contigo si no usas la adecuada o si envías mensajes a más de una lista (cross post). Puedes encontrar información sobre las listas de correo en http://www.linuxfromscratch.org/mailinglists/, y además te indica que lista usar.

3. Errores de los que se ha Informado Frecuentemente

Si esta es la primera vez que construyes el LFS, usar una versión que no está en el libro o desviarse del libro de alguna forma, no es una buena idea. En el canal de IRC, los que concurren regularmente tienen un dicho, "FBBG". Como rms, el bot residente rápidamente aclara, esto significa "Follow Book, Book Good" (Sigue el Libro, el Libro es Bueno). Ellos y los participantes de las listas de correo han ayudado muchas veces a algún novato descontento que se desvió del libro en su primera instalación.

Una vez que construyas un sistema "como manda el libro", tendrás una base estable de conocimientos a partir de la que experimentar lo que a tu corazón alegre (o entristezca, como suele suceder).

Para ayudarte durante tu recorrido, aquí tienes algunas notas para versiones específicas:

Si la nueva versión tiene más de un día, es muy probable que haya alguien probándola e informando de ello en las listas de distribución. Busca en los archivos antes de enviar preguntas sobre sí funciona.

Si quieres informar sobre una nueva versión de un paquete, sigue los siguientes pasos y evita duplicar el aviso:

  • Comprueba la página de freshmeat del proyecto para ver si ha sido actualizada. Si no lo ha sido, informa de la nueva versión allí.

  • Si freshmeat ha sido actualizado, comprueba el bugzilla de LFS (o el bugzilla de BLFS) para ver si se ha enviado un mensaje sobre esa versión.

  • Si la versión no está en bugzilla, avisa en la lista de correo lfs-book (o blfs-book para paquetes de BLFS). Y si lo deseas, prueba e informa de cualquier problema o cambio en las instrucciones de compilación.

4. Mejoras Solicitadas Frecuentemente

LFS es un sistema muy básico, a diferencia de las distribuciones tradicionales. La razón es la siguiente: LFS no está pensado para crear tu sistema como tu quieras. Está pensado para contener la suficiente información para permitirte construir tu sistema como tu quieras. No es un fin, es un principio. Cuando hayas acabado con LFS es cuando empiezas a construir tu sistema.

Esto puede ser un problema si no tienes experiencia con sistemas Unix y quieres una típica instalación de escritorio con las X y un navegador, pero no tienes ni idea de qué paquetes necesitas. Por esta razón existe BLFS (Más allá de LFS). Puedes encontrarlo en http://beyond.linuxfromscratch.org/.

De momento, el libro se ha detenido en LILO 22.2 porque las versiones de LILO posteriores a la 22.2 requieren nasm. Aunque instalar nasm no es un problema, el libro y muchos usuarios son reacios a instalar un paquete extra sólo para LILO. Muchos usuarios se están cambiando a GRUB. (El libro posiblemente cambiará a GRUB si los desarrolladores de GRUB hacen una versión a la que llamen estable. Puedes contactar con los desarrolladores de GRUB si deseas que esto suceda.)

Los usuarios que cambien a GRUB pueden omitir bin86, pues sólo es usado por LILO.

La gestión de paquetes -más allá de la proporcionada por los archivos de código fuente - está fuera del alcance del libro. Si ninguna otra parece válida, el número de diferentes "soluciones" debería apuntar a algunas de las razones.

Estas son algunas de las opciones:

Si tienes alguna adición a la lista, por favor, envía por correo electrónico su nombre, URL y demás información al responsable del mantenimiento de estas FAQ o a una lista apropiada de LFS para que pueda añadirse aquí.

5. Recursos

Usualmente, no es difícil, pero algunos pueden requerir una buena búsqueda.

Para encontrar un comando, debes saber a que paquete pertenece. A veces es obvio, pero cuando no lo es, una búsqueda en http://www.debian.org/distrib/packages#search_contents o en http://www.rpmfind.net te dará la respuesta.

Una vez que sepas que paquete es, al buscar en http://freshmeat.net/ por
foo
normalmente aparecerá una página de freshmeat con enlaces a alguna URL donde pueden haber nuevas versiones de las que no se ha informado a freshmeat.

En http://www.google.com/, utilizando una búsqueda como
+foo +index +lsm
se suele encontrar listados de directorios con un fichero LSM (Mapa de Software Linux). El fichero LSM listará un punto de distribución oficial, que posiblemente tendrá la más reciente versión o, al menos, un fichero LSM más reciente que listará un punto de distribución aún más reciente.

Si el resultado de la búsqueda está saturado de paquetes RPM y ficheros Debian, prueba
+foo +index +lsm -RPM -debian
Si salen muy pocos resultados prueba eliminar "+lsm" y "+index".

Los resultados en http://www.ibiblio.org/ con frecuencia son buenos. Para encontrarlos específicamente usa
foo site:ibiblio.org

Si la última versión es demasiado antigua, Debian o un SRPM pueden tener parches que te ayuden, y puede que haya un sustituto moderno para el paquete que una búsqueda en freshmeat seguramente encontrará.

Además de la documentación del núcleo en /usr/src/linux/Documentation o dondequiera que hayas desempaquetado las fuentes del núcleo, y de la ayuda en la herramienta de configuración del núcleo (make menuconfig), lee el Module-HOWTO en http://www.tldp.org/HOWTO/Module-HOWTO/ y el Kernel-COMO en http://lucas.hispalinux.es/COMO-INSFLUG/COMOs/Kernel-Como/.

Me alegra que lo preguntes ;) En el Reino Unido, Ian Molton ejecuta un servidor de Quake para usuarios de LFS. Aquí están los detalles:

  • Los jugadores necesitan la última versión liberada de Quake 3. A Febrero de 2003 es la versión 1.32b que puedes encontrar en ftp://ftp.idsoftware.com/idstuff/quake3/linux/linuxq3apoint-1.32b.x86.run

  • Los jugadores necesitan el fichero pak0.pk3 de la versión completa de Quake 3. Este está disponible en el CD de Quake 3 (incluso en la versión de MS Windows). Debes colocarlo en /usr/local/games/quake3/baseq3/ a menos que instales el Quake 3 en cualquier otro sitio.

  • También necesitan el programa utilizado en el servidor para añadir mapas, que pueden descargar de http://games.mnementh.co.uk/ y lo deben instalar en ~/.q3a/baseq3/ o donde han colocado el fichero pak0.pk3. Es totalmente necesario descargarse los mapas manualmente porque el servidor tiene deshabilitada la descarga automática.

  • Por la misma razón por la que está deshabilitada la descarga automática de mapas, por favor, no descargues nada de la web mientras se está jugando.

  • Aunque sólo se garantiza que el servidor se esté ejecutando cuando está prevista una partida, los jugadores pueden intentar conectarse cuando quieran.

  • Los juegos están planificados todas las semanas, los martes a las 20:00 UTC y los sábados a las 22:00 UTC. Ten en cuenta que las horas están en UTC.

  • Como el servidor es sólo para usuarios de LFS, e Ian quiere evitar el uso de claves, el nombre del servidor sólo lo encontrarás en los archivos del lfs-chat.

  • Si has creado una entrada al servidor en tus "favoritos" pero no lo ves, puede ser porque tienes desactivado "Show empty servers".

6. Pistas Buscadas Frecuentemente

Aquí hay un ejemplo de cuando todo funciona:
tar xvjf foo-0.0.tar.bz2
cd foo-0.0
./configure --prefix=/usr
make
make install
cd ..
rm -rf foo-0.0

Es importante borrar el código fuente al terminar. Los fuentes solo son útiles para reinstalar sin recompilar porque "make clean" y sus amigos no son confiables. Fíjate en el próximo ejemplo que hacer si fallan "./configure" o "make".

La única excepción al borrar los fuentes es el núcleo Linux. Casi todos conservan el árbol de los fuentes del núcleo para no tener que reconfigurarlo todo desde cero si sólo quieren hacer un pequeño cambio. Si se necesita una gran modificación, como cambiar el tipo de procesador, quizá sea necesario borrar y volver a desempaquetar los fuentes del núcleo.

Y aquí va un ejemplo por si algo falla (en este caso configure):
tar xvjf foo-0.0.tar.bz2
cd foo-0.0
./configure --prefix=/usr
.
.
.
*** configure: error: foo requires libess 4.2 or greater
please install libess and rerun configure.

(*** configure: error: foo requiere libess 4.2 o superior)
(por favor, instala libess y vuelve a ejecutar configure.)
cd ..
rm -rf foo-0.0
tar xvjf libess-4.2.tar.bz2
cd libess-4.2
./configure --prefix=/usr
make
make install
cd ..
rm -rf libess-4.2
tar xvjf foo-0.0.tar.bz2
cd foo-0.0
./configure --prefix=/usr
make
make install
cd ..
rm -rf foo-0.0

Nota del editor: El nombre de la librería ficticia libess viene siguiendo a libiberty (de glibc, hasta donde yo sé) y libofat. La razón de esto es la opción -l de gcc, para enlazar con una librería al momento de compilar. Por ejemplo,
gcc -o foo foo.c -lm
enlazaría la librería "m" (math, matemática) con el ejecutable foo. Entonces, para las librerías mencionadas arriba el comando sería:
gcc -o foo foo.c -liberty -lofat -less
(gcc -o foo foo.c -libertad -bajoengrasa -menos)

Puntos extra si captaste en el ejemplo la referencia a la "Guía del Autoestopista Galáctico" (The Hitchhiker's Guide to the Galaxy), de Douglas Adams.

Respuesta larga: probablemente, pero sólo para aquellas personas que han desarrollado el paquete que intentas compilar. Para la mayoría todo irá bien a menos que make finalice con un error.

Veamos un ejemplo:

sk ~/tmp $ cat > Makefile
main:
gcc main.c
sk ~/tmp $ cat > main.c
void main() { exit(0); }
sk ~/tmp $ make
gcc main.c
main.c: In function `main':
main.c:1: warning: return type of `main' is not `int'
sk ~/tmp $ ######## that worked ########
sk ~/tmp $ 
sk ~/tmp $ cat > main.c
int main() { exxit(0) }
sk ~/tmp $ make
gcc main.c
main.c: In function `main':
main.c:1: parse error before `}'
make: *** [main] Error 1
sk ~/tmp $ ######## that failed ########
sk ~/tmp $

7. Errores Encontrados Frecuentemente

7.2. Errores en Tiempo de Compilación

7.2.1. Errores en Tiempo de Compilación para Cualquier Paquete

Si, cuando compilas XFree86, ghostscript, o cualquier otro paquete que utilice libpng, obtienes un error que incluya la siguiente línea:
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `deflate'
Debes volver a compilar e instalar libpng con el parche de
http://www.linuxfromscratch.org/~sklein/libpng-1.2.5-lz.patch. Asegúrate de aplicar el parche inmediatamente después de desempaquetar los fuentes.De esta manera:
tar --no-same-owner -xvjf libpng-1.2.5.tar.bz2
cd libpng-1.2.5
cat ../libpng-1.2.5-lz.patch | patch -p0
ln -s scripts/makefile.linux Makefile
make ZLIBLIB=/lib ZLIBINC=/usr/include
make ZLIBLIB=/lib ZLIBINC=/usr/include install
cd ..
rm -r libpng-1.2.5
No es necesario que diga que si originalmente instalaste zlib en /usr/local o en algún otro lugar diferente deberás ajustar las instrucciones.

La respuesta larga está en http://www.bitwizard.nl/sig11/.

La respuesta corta es que si reiniciando las cosas van a peor, tienes un problema de hardware. (Si el comando make, o lo que estés ejecutando, falla siempre en el mismo sitio, entonces no se trata de un problema de hardware.)

Asumiendo que no has trucado el procesador, el problema de hardware más probable es una mala memoria, la cual puedes comprobar con Memtest86: http://www.memtest86.com/. Si no es esto, mira la respuesta larga.

Los sintomas típicos son los siguientes:

$ echo -en 'x11:\n\tgcc x11.c\n' > Makefile
$ echo -en '#include <X11/Xlib.h>\nmain() { }\n' > x11.c   
$ make
gcc x11.c
x11.c:1: X11/Xlib.h: No such file or directory
make: *** [x11] Error 1
$ rm Makefile x11.c 
$ 

Crear un par de enlaces simbólicos solucionará el problema. Aquí están los comandos:

cd /usr
ln -s X11R6 X11
cd include
ln -s ../X11/include/X11 X11
7.2.2. Errores en Tiempo de Compilación para Paquetes Específicos

Si, cuando compilas XFree86, obtienes:
make[3]: Entering directory `/usr/src/xc/programs/xcursorgen'
rm -f xcursorgen
gcc -m32 -o xcursorgen -O2 -fno-strength-reduce -fno-strict-aliasing -ansi
-pedantic -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-declarations -Wredundant-decls -Wnested-externs -Wundef
-L../../exports/lib   xcursorgen.o -lXcursor -lXext -lX11 -lpng -lm
-Wl,-rpath-link,../../exports/lib
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `deflate'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `inflate'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `inflateInit_'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `crc32'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `deflateInit2_'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `inflateReset'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `deflateReset'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `inflateEnd'
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libpng.so: undefined reference
to `deflateEnd'
collect2: ld returned 1 exit status
make[3]: *** [xcursorgen] Error 1
make[3]: Leaving directory `/usr/src/xc/programs/xcursorgen'
make[2]: *** [install] Error 2
make[2]: Leaving directory `/usr/src/xc/programs'
make[1]: *** [install] Error 2
make[1]: Leaving directory `/usr/src/xc'
make: *** [install] Error 2
Entonces dirigete al
enlace general de esta cuestión.

Estás intentando construir la versión estática de sh-utils y obtienes un error como este:
gcc  -g -O2  -static -o uptime  uptime.o ../lib/libsu.a -lutil
uptime.o: In function `print_uptime':
/lfs/tmp/sh-utils-2.0/src/uptime.c:125: undefined reference to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [uptime] Error 1
make[2]: Leaving directory `/lfs/tmp/sh-utils-2.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/sh-utils-2.0'
make: *** [all-recursive-am] Error 2


uptime.o: En la función `print_uptime':
/lfs/tmp/sh-utils-2.0/src/uptime.c:125: referencia no definida a `getloadavg'
collect2: ld devolvió un estado de salida 1
make[2]: *** [uptime] Error 1
make[2]: Abandonando el directorio `/lfs/tmp/sh-utils-2.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Abandonando el directorio `/lfs/tmp/sh-utils-2.0'
make: *** [all-recursive-am] Error 2
No soy capaz de reproducir este error y, por ello, no puedo presentar una solución comprobada, pero han sido publicadas, por otros, dos soluciones. Sugiero probarlas en el siguiente orden:

7.2.3. Errores en Tiempo de Compilación no Listados Anteriormente

7.3. Errores en Tiempo de Ejecución