首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac上安装flite时出错

在Mac上安装flite时出错
EN

Stack Overflow用户
提问于 2014-04-11 01:05:39
回答 3查看 1.5K关注 0票数 4

我已经下载了flite的最新来源分布,并开始了安装它的一般过程。

代码语言:javascript
复制
$ ./configure
$ make
$ sudo make install

但是,当我试图将库安装到我的系统时,我遇到了一个奇怪的错误。

代码语言:javascript
复制
$ sudo make install
Installing
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
mkdir -p /usr/local/include/flite
/usr/bin/install -c -m 644 include/*.h /usr/local/include/flite
/usr/bin/install -c -m 755 ../bin/flite_time /usr/local/bin
cp -pd ../build/i386-darwin13.1.0/lib/libflite_cmu_us_kal.a ../build/i386-darwin13.1.0/lib/libflite_cmu_time_awb.a ../build/i386-darwin13.1.0/lib/libflite_cmu_us_kal16.a ../build/i386-darwin13.1.0/lib/libflite_cmu_us_awb.a ../build/i386-darwin13.1.0/lib/libflite_cmu_us_rms.a ../build/i386-darwin13.1.0/lib/libflite_cmu_us_slt.a ../build/i386-darwin13.1.0/lib/libflite_usenglish.a ../build/i386-darwin13.1.0/lib/libflite_cmulex.a ../build/i386-darwin13.1.0/lib/libflite.a /usr/local/lib
cp: illegal option -- d
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
make[1]: *** [install] Error 64
make: *** [install] Error 2

我怎么才能解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-11 02:04:01

在Mac使用的BSD cp和大多数linux发行版的GNU cp之间有一些细微的区别。

考虑一下来自linux盒的以下man cp片段:

代码语言:javascript
复制
   -d     same as --no-dereference --preserve=links

   -P, --no-dereference
          never follow symbolic links in SOURCE

   --preserve[=ATTR_LIST]
          preserve  the  specified  attributes (default: mode,ownership,timestamps), if possible additional attributes: context,
          links, xattr, all

基本上,它要做的是“复制以下路径,如果它们是链接,只需复制链接,而不是底层文件。”

p选项存在于Mac下,相当于linux的行为。然而,d选项没有出现。

我试着用Mac cp来模仿“复制链接,而不是目标”的行为,据我所知,没有一种愉快的方法可以做到。

幸运的是,周围有一项粗制滥造。来自Mac下的man cp

符号链接始终遵循,除非设置了-R标志,在这种情况下,默认情况下不遵循符号链接。

换句话说,因为我们知道我们只是在复制文件,所以您可以简单地将d标志替换为R标志。这种行为在技术上是不同的(非常不同),但在这种特殊情况下并不重要。您需要找到Makefile中使用的cp标志(希望在文件顶部的CP变量中),只需更改它们。

如果您确信cp是Makefile中执行的最后一件事,您也可以复制和粘贴它,而不是更改Makefile。

票数 5
EN

Stack Overflow用户

发布于 2015-03-16 11:24:59

我用科尔宾的建议解决了这个问题。在搜索Makefile之后,我发现了错误的来源。

我使用的是flite-2.0.0-版本,Makefile位于以下目录:/flite-2.0.0-release/main/

最后几行有以下几行:

代码语言:javascript
复制
#       The libraries: static and shared (if built)
        cp -pd $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pd $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

我已将其更改为:

代码语言:javascript
复制
#       The libraries: static and shared (if built)
        cp -pR $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pR $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

通过将cp -pd替换为cp -pR,我成功地安装了flite。我希望这个建议能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2020-04-13 13:46:22

最近我遇到了同样的问题,TJ将我引向了正确的方向,但下面是在MacOS (原文在这里)上安装flite的整个过程:

Flitevox或Flitelib是一个开源的小型运行时语音引擎。传递它的文本,并创建一个声音文件与机器人说。非常酷和有用的一些项目。

Flitelib不是FFmpeg构建中可用的本地过滤器,也不是源代码中的本地过滤器。尽管文档声明配置需要启用-libflite,但是在安装FFmpeg之前需要安装flitelib。如果您确实尝试启用筛选器,则会得到以下错误:

代码语言:javascript
复制
$ ./configure --disable-indevs --enable-libflite --enable-cross-compile
ERROR: libflite not found

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.

在这篇文章中,我将向您展示如何安装flite并使其与FFmpeg一起工作。

首先从源代码下载flitevox并安装:

代码语言:javascript
复制
$ git clone https://github.com/festvox/flite.git
$ cd flite/
$ ./configure
$ make
$ sudo make install

如果您正在运行linux,则此安装工作非常完美。如果您正在运行MacOS,您将得到以下错误:

代码语言:javascript
复制
$ sudo make install
Password:
Installing
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
mkdir -p /usr/local/include/flite
/usr/bin/install -c -m 644 include/*.h /usr/local/include/flite
/usr/bin/install -c -m 755 ../bin/flite_time /usr/local/bin
cp -pd ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_kal.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_time_awb.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_kal16.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_awb.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_rms.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_slt.a ../build/x86_64-darwin19.0.0/lib/libflite_usenglish.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_indic_lang.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_grapheme_lang.a ../build/x86_64-darwin19.0.0/lib/libflite_cmulex.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_indic_lex.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_grapheme_lex.a ../build/x86_64-darwin19.0.0/lib/libflite.a /usr/local/lib
cp: illegal option -- d
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
make[1]: *** [install] Error 64
make: *** [install] Error 2

这是因为MacOS使用不同的“cp”变量,而不是linux。我在解决方案中找到了这个堆栈溢出的答案:https://stackoverflow.com/a/29075638/525576,但是下面是修复它的步骤。

在文件夹“flite/main”中,需要使用命令的MacOS版本编辑Makefile:

代码语言:javascript
复制
$ cd main/
$ vim Makefile

替换如下(来自TJ Rana):

代码语言:javascript
复制
#       The libraries: static and shared (if built)
        cp -pd $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pd $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

to (-pd to -pR):

代码语言:javascript
复制
#       The libraries: static and shared (if built)
        cp -pR $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pR $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

如何再次尝试安装flite:

代码语言:javascript
复制
$ sudo make install

flite不应该显示任何错误,安装应该是完整的。

现在回到ffmpeg源过滤器中:

代码语言:javascript
复制
$ ./configure --enable-libflite --enable-cross-compile
$ make install

安装工作将完成。若要测试flite是否正在工作,请打开一个新的终端并键入:

代码语言:javascript
复制
$ ffplay -f lavfi -i flite=text='Hello World!'

你好,世界会说话的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23001775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档