Mac 上的 CMU pocketsphinx:GCC 在 stdio.h 中抛出错误
CMU pocketsphinx on Mac: GCC throwing errors in stdio.h
我已经在 mac 上安装了最新版本的 sphinxbase 和 pocketsphinx。在这个 CMU 的 site
他们提供了一个简单的 hello world 代码来测试安装的有效性。代码如下所示:
#include <pocketsphinx.h>
int main(int argc, char *argv[])
{
ps_decoder_t *ps = NULL;
cmd_ln_t *config = NULL;
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", MODELDIR "/en-us/en-us",
"-lm", MODELDIR "/en-us/en-us.lm.bin",
"-dict", MODELDIR "/en-us/cmudict-en-us.dict",
NULL);
return 0;
}
我必须在下面输入此命令才能使用 GCC 进行编译
gcc -o hello_ps hello_ps.c \
-DMODELDIR=\"`pkg-config --variable=modeldir pocketsphinx`\" \
`pkg-config --cflags --libs pocketsphinx sphinxbase`
其中 pkg-config 会处理包含和库路径。
但是编译returns在stdio.h文件中出现如下错误(pocketsphinx.h包含stdio.h).
Restrict requires a pointer or reference (int is invalid)
在几个地方还有
Unknown typename _FILE (Expanded from macro 'FILE')
我浏览了 stdio.h 文件并找到了这些相应的语句,但我不知道它的作用。我知道 restrict 关键字不是 C++ 标准的一部分,但即使在使用 c99 编译时,它仍然会抛出相同的错误。任何帮助将不胜感激。
根据日志,您有一个额外的文件 /usr/local/include/stdio.h
,它不是标准的包含文件。此文件由其他软件安装并导致问题。
您需要从系统中删除有问题的 stdio.h(可能还有其他额外的 headers)。
正确的 stdio.h 在 /usr/include folder
.
我已经在 mac 上安装了最新版本的 sphinxbase 和 pocketsphinx。在这个 CMU 的 site 他们提供了一个简单的 hello world 代码来测试安装的有效性。代码如下所示:
#include <pocketsphinx.h>
int main(int argc, char *argv[])
{
ps_decoder_t *ps = NULL;
cmd_ln_t *config = NULL;
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", MODELDIR "/en-us/en-us",
"-lm", MODELDIR "/en-us/en-us.lm.bin",
"-dict", MODELDIR "/en-us/cmudict-en-us.dict",
NULL);
return 0;
}
我必须在下面输入此命令才能使用 GCC 进行编译
gcc -o hello_ps hello_ps.c \
-DMODELDIR=\"`pkg-config --variable=modeldir pocketsphinx`\" \
`pkg-config --cflags --libs pocketsphinx sphinxbase`
其中 pkg-config 会处理包含和库路径。
但是编译returns在stdio.h文件中出现如下错误(pocketsphinx.h包含stdio.h).
Restrict requires a pointer or reference (int is invalid)
在几个地方还有
Unknown typename _FILE (Expanded from macro 'FILE')
我浏览了 stdio.h 文件并找到了这些相应的语句,但我不知道它的作用。我知道 restrict 关键字不是 C++ 标准的一部分,但即使在使用 c99 编译时,它仍然会抛出相同的错误。任何帮助将不胜感激。
根据日志,您有一个额外的文件 /usr/local/include/stdio.h
,它不是标准的包含文件。此文件由其他软件安装并导致问题。
您需要从系统中删除有问题的 stdio.h(可能还有其他额外的 headers)。
正确的 stdio.h 在 /usr/include folder
.