[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fw: Linux版スピーチサーバー作成に必要なファイル



 南谷です。
 現在の状況を報告します。
まず、sdkのインストール先ですが、Debianには巧妙なパッケージ
管理機能があり、debパッケージになっていないものは/usr/local
以下にインストールすることになっています。そこで、配置を
/lib > /usr/local/lib
/usr/lib/dtalker > /usr/local/lib/dtalker
/usr/include > /usr/local/include
に変更しました。ss1のconfig.hは適宜修正しました。
 同様にemacspeakのファイルは~/share以下にインストールしま
した。
 それで、ss1をmakeしたところ
g++  -ggdb  -c -o ssmain.o ssmain.cpp
g++  -ggdb  -c -o ssfunc.o ssfunc.cpp
g++  -ggdb  -c -o dtfunc.o dtfunc.cpp
dtfunc.cpp: In method `ssSharedInfo::ssSharedInfo()':
dtfunc.cpp:13: implicit declaration of function `int pthread_mutexattr_settype(.
..)'
make: *** [dtfunc.o] Error 1
となり、いろいろ調べてみると/usr/include/pthread.hのなかに

#ifdef __USE_UNIX98
/* Set the mutex kind attribute in *ATTR to KIND (either PTHREAD_MUTEX_NORMAL,
   PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_ERRORCHECK, or
   PTHREAD_MUTEX_DEFAULT).  */
extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
     __THROW;

/* Return in *KIND the mutex kind attribute in *ATTR.  */
extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
                                      __attr, int *__restrict __kind) __THROW;
#endif

という記述を見つけました。__USE_UNIX98はss1では定義していない
ようなので、非常にまずいとは思いつつ、#ifdef #endifをコメント
アウトしてみるとmakeできました。
 さらに
export DTK_TCL=~/cvs/LinuxSpeechServer/ss1
を実行し、.emacsの最後に
(setq load-path
      (append '("~/share/emacs/site-lisp/emacspeak/lisp/")
              load-path))
(setenv "DTK_TCL" "~/cvs/LinuxSpeechServer/ss1")
(load-file "~/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.el")
を追加してemacsを起動してみると、ミニバッファに
Process speaker not running
と出力され、期待した結果は得られませんでした。なお、この状態で
キー入力するとその度にエラーが表示されます。emacspeakのelisp
の中に気になる記述があったので、
export DTK_PROGRAM=~/cvs/LinuxSpeechServer/ss1
も実行してみましたが、結果は同じでした。
 試しにss1をコマンドラインから起動してみるとreadyとなり、
入力待ちになるのですが、適当な文字列を入れてエンターすると
ignoringと表示され、セグフォで落ちます。
 このような状態でちょっと頭を抱えています。なにか参考になり
そうなことがあれば、ご指摘下さい。