我已经下载了the latest source distribution of 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
我该如何解决这个问题?
最佳答案
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
所以基本上它试图做的是“复制以下路径,如果它们是链接,则只需复制链接,而不是底层文件。”
p
选项存在于 Mac 下,与 Linux 行为相同。但是,d
选项不存在。
我试图找出一种方法来模仿 Mac cp
的“复制链接,而不是目标”的行为,据我所知,没有什么令人愉快的方法可以做到它。
幸运的是,有一个粗略的解决办法。来自 Mac 下的 man cp
:
Symbolic links are always followed unless the -R flag is set, in which case symbolic links are not followed, by default.
换句话说,由于我们知道我们只是复制文件,因此您只需将 d
标志替换为 R
标志即可。该行为在技术上有所不同(非常),但在这种特定情况下并不重要。您需要找到 Makefile 中使用的 cp 标志(希望在文件顶部的 CP 变量中)并简单地更改它们。
如果您确定 cp
是 Makefile 中最后执行的内容,您也可以直接复制并粘贴它,而不用更改 Makefile。
关于macos - 在 Mac OSX 上安装 flite 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23001775/