gcc 没有找到头文件,尽管它的路径已经包含在 -I 中

gcc 没有找到头文件,尽管它的路径已经包含在 -I 中

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

通过安装可以解决这个问题libcrypt-devel

然后一切都顺利...问题解决了!

这更好地解释这一点:回复:难以编译 Package::Stash::XS

答案2

好的,我相信我已经找到问题所在了。正如我提到的那样,我在 Cygwin 中运行它,看起来 Cygwin 试图使用 Windows strawberry Perl 的 gcc,因为它自己的 gcc 没有安装!Windows gcc 可能与 Cygwin 样式路径存在问题,因此出现了奇怪的错误。我现在已经安装了 Cygwin 的 gcc,这个问题已经解决了。它接下来抱怨了,这也通过从 Cygwin 安装对话框<crypt.h>安装解决了。libcrypt-devel

相关内容