cygwin编译安装软件缺少头文件解决办法
问题现象
安装perl软件Digest::MD4
#cd Digest-MD4-1.9/
#perl Makefile.PL
Checking if your kit is complete…
Looks good
Generating a Unix-style Makefile
Writing Makefile for Digest::MD4
Writing MYMETA.yml and MYMETA.json
#make install
cp MD4.pm blib/lib/Digest/MD4.pm
Running Mkbootstrap for MD4 ()
chmod 644 “MD4.bs”
“/usr/bin/perl.exe” -MExtUtils::Command::MM -e ‘cp_nonempty’ – MD4.bs blib/arch /auto/Digest/MD4/MD4.bs 644
“/usr/bin/perl.exe” “/usr/share/perl5/5.26/ExtUtils/xsubpp” -typemap ‘/usr/shar e/perl5/5.26/ExtUtils/typemap’ -typemap ‘/drives/d/Cache/MobaXterm/slash/home/mo baxterm/excel/Digest-MD4-1.9/typemap’ MD4.xs > MD4.xsc
mv MD4.xsc MD4.c
gcc -c -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE -ggdb -O2 -pipe -Wall -Werror=format-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --par am=ssp-buffer-size=4 -fdebug-prefix-map=/mnt/share/maint/perl.x86/build=/usr/src /debug/perl-5.26.2-1 -fdebug-prefix-map=/mnt/share/maint/perl.x86/src/perl-5.26. 2=/usr/src/debug/perl-5.26.2-1 -fwrapv -fno-strict-aliasing -DUSEIMPORTLIB -O3 -DVERSION=“1.9” -DXS_VERSION=“1.9” “-I/usr/lib/perl5/5.26/i686-cygwin-thre ads-64int/CORE” MD4.c
In file included from /usr/lib/perl5/5.26/i686-cygwin-threads-64int/CORE/op.h:65 4:0,
from /usr/lib/perl5/5.26/i686-cygwin-threads-64int/CORE/perl.h: 3921,
from MD4.xs:41:
/usr/lib/perl5/5.26/i686-cygwin-threads-64int/CORE/reentr.h:104:26: 致命错误:cr ypt.h:No such file or directory
#include <crypt.h>
^
编译中断。
make: *** [Makefile:328:MD4.o] 错误 1
问题解决
根据问题提示,是缺少头文件,但是如何确定该头文件在哪个模块中?
从网上找到解决办法,在cygwin网站上搜索该头文件,会出现所有包含该头文件的模块,从中选取最优可能的模块安装到cygwin上,再尝试安装上述perl模块。
网址为: https://cygwin.com/cgi-bin2/package-grep.cgi
题外话
安装cygwin软件时,由于国内原因,无法从mirrors.kernel.org上下载安装包,所以需要从其它国内的镜像上下载。
由于我使用的是集成了cygwin的MobaXterm,所以这里就需要修改slash/bin/apt-cyg中的mirror字段到mirrors.163.com