Package::Stash::XS
我正在尝试通过安装模块 ( ) cpanm
,但由于 gcc 错误,安装失败。命令:
gcc -c -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -fno-strict-aliasing -pipe -fstack-protector -DUSEIMPORTLIB -O3 -DVERSION=\"0.28\" -DXS_VERSION=\"0.28\" "-I/usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE" XS.c
失败并出现错误:
XS.xs:1:20: fatal error: EXTERN.h: No such file or directory
compilation terminated.
在该行:
#line 1 "XS.xs"
#include "EXTERN.h"
但是,该文件EXTERN.h
确实存在于-I
包含的/usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE
:
$ ls /usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE/E*
/usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE/EXTERN.h
问题可能出在哪里?我该如何让编译成功?我尝试过将 改为-I
(-iquote
尽管 gcc 手册确实说双引号包含最终也会使用 -I),但这没有帮助。我首先想到的是权限问题,但这是 Cygwin,cpanm 以我的身份运行,并且我确实EXTERN.h
对 CORE 目录具有读取权限和执行权限。
答案1
答案2
好的,我相信我已经找到问题所在了。正如我提到的那样,我在 Cygwin 中运行它,看起来 Cygwin 试图使用 Windows strawberry Perl 的 gcc,因为它自己的 gcc 没有安装!Windows gcc 可能与 Cygwin 样式路径存在问题,因此出现了奇怪的错误。我现在已经安装了 Cygwin 的 gcc,这个问题已经解决了。它接下来抱怨了,这也通过从 Cygwin 安装对话框<crypt.h>
安装解决了。libcrypt-devel