J'obtiens le problème suivant lorsque j'essaie d'exécuter make
sur bibliothèque 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
Je ne sais pas quoi faire à propos de cette erreur. Le fichier libc-header-start.h
Est présent sur mon système:
$ find /usr -name libc-header-start.h
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h
L'exécution de gcc -H -fsyntax-only /usr/include/stdio.h
Renvoie correctement
. /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.
De plus, la compilation et l'exécution d'un fichier C sanity-check fonctionnent correctement (il suffit d'exécuter printf("hello!");
dans sa méthode principale).
Toutes mes excuses s'il s'agit d'une erreur bien connue - mon expérience avec les bibliothèques C s'arrête à les compiler et à les installer à l'aide de make
.
[~ # ~] mise à jour [~ # ~] Selon la réponse acceptée ci-dessous, j'ai exécuté Sudo apt-get install gcc-multilib
pour installer les bibliothèques 32 bits manquantes.
Ensuite, j'ai eu une erreur avec une cause similaire: "/usr/bin/ld: cannot find -lX11" error when installing htk
. J'ai résolu ce problème en exécutant Sudo apt-get install libx11-dev:i386 libx11-dev
Pour récupérer la bibliothèque 32 bits manquante.
Le -m32
indique à gcc de compiler pour une plate-forme 32 bits. Sur une machine 64 bits, gcc n'est normalement fourni qu'avec des bibliothèques 64 bits. Vous avez deux options:
Compilez plutôt en 64 bits. Modifiez cette ligne dans le fichier nommé configure
:
CFLAGS="-m32 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'Arch=\"$Host_cpu\"' $CFLAGS"
Supprimer -m32
, te donne:
CFLAGS="-ansi -D_SVID_SOURCE -DOSS_AUDIO -D'Arch=\"$Host_cpu\"' $CFLAGS"
Courir ./configure
, puis make clean
, puis make
Cependant, je ne suggérerais pas de faire cela. Les auteurs de la bibliothèque ont fait tout leur possible pour créer cette version pour 32 bits sur un système 64 bits, et cela pourrait ne pas fonctionner correctement si vous changez cela. (Il compile cependant.)