“Error fatal: bits/libc-header-start.h: No existe tal archivo o directorio” al compilar HTK

3 minutos de lectura

avatar de usuario
William

Recibo el siguiente problema al intentar ejecutar make sobre el biblioteca HTK:

(cd HTKLib && make HTKLib.a) \
  || case "" in *k*) fail=yes;; *) exit 1;; esac;
make[1]: Entering directory '/home/william/speech/htk/HTK-3.4.1/htk/HTKLib'
gcc  -m32 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I. -DPHNALG   -c -o HGraf.o HGraf.c
In file included from HShell.h:40:0,
                 from HGraf.c:54:
/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory
 #include <bits/libc-header-start.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
<builtin>: recipe for target 'HGraf.o' failed
make[1]: *** [HGraf.o] Error 1
make[1]: Leaving directory '/home/william/speech/htk/HTK-3.4.1/htk/HTKLib'
Makefile:96: recipe for target 'HTKLib/HTKLib.a' failed
make: *** [HTKLib/HTKLib.a] Error 1

No estoy seguro de qué hacer con este error. Él libc-header-start.h El archivo está presente en mi sistema:

$ find /usr -name libc-header-start.h
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h

Corriendo gcc -H -fsyntax-only /usr/include/stdio.h devuelve apropiadamente

. /usr/include/x86_64-linux-gnu/bits/libc-header-start.h
.. /usr/include/features.h
... /usr/include/x86_64-linux-gnu/sys/cdefs.h

etc.

Además, compilar y ejecutar un archivo C de verificación de cordura funciona bien (simplemente ejecutando printf("hello!"); en su método principal).

Disculpas si se trata de un error conocido: mi experiencia con las bibliotecas C se limita a compilarlas e instalarlas usando make.

ACTUALIZAR
Según la respuesta aceptada a continuación, ejecuté sudo apt-get install gcc-multilib para instalar las bibliotecas de 32 bits que faltan.

Posteriormente recibí un error con una causa similar: "/usr/bin/ld: cannot find -lX11" error when installing htk. Resolví esto ejecutando sudo apt-get install libx11-dev:i386 libx11-dev para recuperar la biblioteca de 32 bits que falta.

  • ¿Es este un sistema de 64 o 32 bits? (es decir, ¿cuál es la salida de uname -a?)

    – Nick ODell

    7 de enero de 2019 a las 22:09

  • La invocación gcc que muestras es gcc -m32, que le dice a gcc que compile un binario de 32 bits. Para ello, no buscará archivos de cabecera en /usr/include/x86_64-linux-gnu/porque ese directorio (como indica su nombre) contiene encabezados para compilaciones de 64 bits.

    – rico

    7 de enero de 2019 a las 22:23

avatar de usuario
Nick ODell

Él -m32 le dice a gcc que compile para una plataforma de 32 bits. En una máquina de 64 bits, gcc normalmente solo viene con bibliotecas de 64 bits. Tienes dos opciones:

  1. Instale encabezados y bibliotecas de 32 bits. Así es como harías esto en Ubuntu.

    Ejecute este comando:

    sudo apt-get install gcc-multilib
    
  2. Compile para 64 bits en su lugar. Modifique esta línea en el archivo llamado configure:

     CFLAGS="-m32 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS"
    

    Borrar -m32dandote:

     CFLAGS="-ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS"
    

    Correr ./configureentonces make cleanentonces make

    Sin embargo, no sugeriría hacer esto. Los autores de la biblioteca hicieron todo lo posible para hacer esta compilación para 32 bits en un sistema de 64 bits, y es posible que no funcione correctamente si cambia esto. (Sin embargo, compila).

  • Consejo para mejorar tu google-fu: la parte más importante para encontrar una solución es buscar la parte correcta de tu mensaje de error. Si hubiera buscado “bits/libc-header-start.h: No such file or directory”, habría encontrado a otras personas con el mismo problema.

    – Nick ODell

    8 de enero de 2019 a las 16:13

  • para no sonar argumentativo, pero probé exactamente esa cadena de búsqueda y no fue sencillo obtener esta solución particular de los resultados de Google (sin el beneficio de la retrospectiva)

    – William

    8 de enero de 2019 a las 16:51

  • Ah, OK. Eso suena bastante frustrante. Bueno, gracias por investigar esto de antemano. Te lo agradezco.

    – Nick ODell

    8 de enero de 2019 a las 17:38

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad