我正在尝试通过 安装模块 ( 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
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:
XS.xs:1:20: fatal error: EXTERN.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
在线:
#line 1 "XS.xs"
#include "EXTERN.h"
Run Code Online (Sandbox Code Playgroud)
但是,该文件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
Run Code Online (Sandbox Code Playgroud)
可能是什么问题,我怎样才能使编译成功?我试过更改-I为-iquote(尽管 gcc 手册确实说双引号包括最终也使用 -I),但这无济于事。我的第一个想法是这是一个权限问题,但这是 Cygwin 并且 cpanm 像我一样运行,我确实EXTERN.h对 CORE 目录具有读取访问权限和 exec 访问权限。