HTKライブラリ でmake
を実行しようとすると、次の問題が発生します。
_(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
_
このエラーの対処方法がわかりません。 _libc-header-start.h
_ファイルは私のシステムにあります:
_$ find /usr -name libc-header-start.h
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h
_
_gcc -H -fsyntax-only /usr/include/stdio.h
_を実行すると、適切に戻ります
_. /usr/include/x86_64-linux-gnu/bits/libc-header-start.h
.. /usr/include/features.h
... /usr/include/x86_64-linux-gnu/sys/cdefs.h
_
等.
また、健全性チェックCファイルのコンパイルと実行は正常に機能します(メインメソッドでprintf("hello!");
を実行するだけです)。
これがよく知られているエラーである場合はお詫びします-Cライブラリでの私の経験は、make
を使用してコンパイルおよびインストールすることで停止します。
[〜#〜] update [〜#〜]以下の承認された回答に従って、不足している32ビットライブラリをインストールするために_Sudo apt-get install gcc-multilib
_を実行しました。
その後、同様の原因でエラーが発生しました:_"/usr/bin/ld: cannot find -lX11" error when installing htk
_。 _Sudo apt-get install libx11-dev:i386 libx11-dev
_を実行して不足している32ビットライブラリを取得することで、これを解決しました。
-m32
は、32ビットプラットフォーム向けにコンパイルするようにgccに指示しています。 64ビットマシンでは、gccには通常64ビットライブラリのみが付属しています。次の2つのオプションがあります。
代わりに64ビット用にコンパイルしてください。 configure
という名前のファイルで次の行を変更します。
CFLAGS="-m32 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'Arch=\"$Host_cpu\"' $CFLAGS"
-m32
を削除すると、次のようになります。
CFLAGS="-ansi -D_SVID_SOURCE -DOSS_AUDIO -D'Arch=\"$Host_cpu\"' $CFLAGS"
./configure
、次にmake clean
、次にmake
を実行します
ただし、これを行うことはお勧めしません。ライブラリの作成者は、64ビットシステムで32ビット用にこのビルドを作成するために手を尽くしており、これを変更すると正しく動作しない可能性があります。 (ただし、コンパイルは可能です。)