我已经下载了 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

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

有帮助吗?

解决方案

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

考虑以下片段 man cp 来自 Linux 盒子:

   -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, ,据我所知,没有什么令人愉快的方法可以做到这一点。

幸运的是,有一个粗略的解决办法。从 man cp 在Mac下:

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

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

如果您确定 cp 是 Makefile 中最后执行的事情,您也可以直接复制并粘贴它,而不是更改 Makefile。

其他提示

我能够使用 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 -pdcp -pR, ,我能够成功安装flite。我希望这个建议有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top