make:***没有规则生成目标`/usr/lib/perl 5/core_perl/Config.pm',` makefile'需要,停止

acruukt9  于 2023-03-30  发布在  Perl
关注(0)|答案(1)|浏览(134)

我试图在windows上的git bash perl中安装一些额外的模块。我试图安装ExtUtils::ParseXS时被卡住了。我能够编译C部分(这是困难的部分),但随后它停止了,并出现以下错误:make: *** No rule to make target '/usr/lib/perl5/core_perl/Config.pm', needed by 'makefile'. Stop.
奇怪的是,/usr/lib/perl5/core_perl/Config.pm确实存在!
以下是(生成的)Makefile失败的部分(完整的Makefile对于stackoverflow来说太大):

# This Makefile is for the ExtUtils::ParseXS extension to perl.
...
DIRFILESEP = /
DFSEP = $(DIRFILESEP)
PERL_ARCHLIBDEP = /usr/lib/perl5/core_perl
FIRST_MAKEFILE = Makefile
...
# Where is the Config information that we are using/depend on
CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h
...
# We take a very conservative approach here, but it's worth it.
# We move Makefile to Makefile.old here to avoid gnu make looping.
$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
    $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
    $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
    -$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
    -$(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
    - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
    $(PERLRUN) Makefile.PL
    $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
    $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
    $(FALSE)

我正在git bash中运行make命令。任何帮助都将不胜感激!

ycl3bljg

ycl3bljg1#

“Git bash”是一个使用MSYS构建的bash,MSYS是一个unix仿真环境。
你使用的是make的Windows版本,你希望它能与虚拟的unix环境交互,只有使用MSYS构建的程序才能做到这一点。
因此,您需要弄清楚如何安装使用MSYS构建的make
除非你有特别的理由使用git提供的bash,否则我建议你使用另一种方法,我怀疑它会容易得多。
它看起来像MSYS 2有一个包管理器,可能更有用。但我对它一无所知。
你可以使用Cygwin。它是unix仿真环境,就像MSYS一样。它提供了bash。但不仅仅是bash。它通过它的包管理器提供了git、perl、make、python等等。包管理器有一个易于使用的Windows GUI界面(以及命令行界面)。(Cygwin安装程序本身就是软件包管理器。可以随时重新运行它来更新、删除或添加软件包。)我已经用了很长时间了,现在还在用。
我现在使用Windows Subsystem for Linux v2下安装的Ubuntu。把WSL想象成内置在Windows中的Linux虚拟机。相对容易安装。(不需要分区或类似的东西。)主机可以访问虚拟机的文件(通过\\WSL$),反之亦然(通过/mnt/c),但程序是原生Linux程序;它们只会在虚拟机内部运行。有很多Linux发行版可用。

相关问题