在Mac OSX上安装flite出现错误

4
我已经下载了flite的最新源码分发文件,并按照常规安装流程进行了安装。
$ ./configure
$ make
$ sudo make install

然而,当我尝试将该库安装到我的系统时,遇到了一个奇怪的错误。
$ 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

我该如何修复这个问题?

3个回答

5

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

考虑来自Linux系统中man cp 的以下代码片段:

   -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

所以,它的基本作用是“复制以下路径,如果它们是链接,则只复制链接,而不是底层文件。”
Mac下存在p选项,与linux行为等效。然而,d选项不存在。
我尝试找出一种模仿“复制链接而不是目标”的方法,但据我所知,没有简单的方法可以做到这一点。
幸运的是,有一个粗糙的解决方法。从Mac下的man cp中得知:

符号链接总是被遵循,除非设置了-R标志,在这种情况下,默认情况下不会跟随符号链接。

换句话说,由于我们知道我们只复制文件,因此可以将d标志简单地替换为R标志。虽然这种行为在技术上是不同(非常不同),但在这种特定情况下并不重要。您需要找到Makefile中使用的cp标志(希望在文件顶部的CP变量中),并简单更改它们。
如果您确定cp是Makefile中执行的最后一件事,那么您也可以复制并粘贴它,而不是更改Makefile。

1
我能够使用Corbin的建议解决这个问题。在搜索Makefile后,我能够找到错误的来源。
我正在使用flite-2.0.0-release,Makefile位于以下目录中:/flite-2.0.0-release/main/
最后几行如下:
#       The libraries: static and shared (if built)
        cp -pd $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pd $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

我已将它更改为以下内容:
#       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
我最近遇到了同样的问题,TJ Rana指导了我正确的方向,但这里是在MacOS上安装flite的整个过程(原文在此):
Flitevox或Flitelib是一个开源的小型运行时语音引擎。将文本传递给它,然后创建一个机器人说出它的音频文件。对于某些项目来说非常酷和有用。
Flitelib不是FFmpeg构建中可用的本地过滤器,也不在源代码内部。尽管文档指出需要使用--enable-libflite进行配置,但在安装FFmpeg之前必须安装flitelib。如果您尝试启用该过滤器,将会收到以下错误提示:
$ ./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并安装:
$ git clone https://github.com/festvox/flite.git
$ cd flite/
$ ./configure
$ make
$ sudo make install

如果您正在运行Linux,则此安装可以完美地运行。如果您正在运行MacOS,则会收到以下错误:
$ 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。我在Stack Overflow上找到了这个解决方案:https://dev59.com/G37aa4cB1Zd3GeqPsZtt#29075638,但是以下是修复步骤。
在“flite/main”文件夹中,您需要使用MacOS版本的命令编辑Makefile。
$ cd main/
$ vim Makefile

替换以下内容(来自TJ Rana):

#       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):

#       The libraries: static and shared (if built)
        cp -pR $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pR $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

我们如何再次尝试安装flite:

$ sudo make install

flite不应显示任何错误,安装应该完成。
现在回到ffmpeg源过滤器:
$ ./configure --enable-libflite --enable-cross-compile
$ make install

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

$ ffplay -f lavfi -i flite=text='Hello World!'

Hello world将会说话!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接