Cannot install Algorithm::AhoCorasick::XS on Windows 10, MSYS2: ‘sigjmp_buf’ does not name a type; did you mean ‘Sigjmp_buf’

爷,独闯天下 提交于 2021-01-28 06:08:43

问题


I am trying to install Algorithm::AhoCorasick::XS on Windows 10, MSYS2:

$ perl Makefile.PL
Generating a Unix-style Makefile
Writing Makefile for Algorithm::AhoCorasick::XS
Writing MYMETA.yml and MYMETA.json
cp lib/Algorithm/AhoCorasick/XS.pm blib/lib/Algorithm/AhoCorasick/XS.pm
Running Mkbootstrap for XS ()
chmod 644 "XS.bs"
"/usr/bin/perl.exe" -MExtUtils::Command::MM -e 'cp_nonempty' -- XS.bs blib/arch/auto/Algorithm/AhoCorasick/XS/XS.bs 644
g++ -c   -Wall -std=c++11 -DUSEIMPORTLIB -march=x86-64 -mtune=generic -O2 -pipe   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\"  "-I/usr/lib/perl5/core_perl/CORE"   Matcher.cpp
"/usr/bin/perl.exe" "/usr/share/perl5/core_perl/ExtUtils/xsubpp"  -C++ -typemap '/usr/share/perl5/core_perl/ExtUtils/typemap' -typemap '/home/hakon/perl/cpan-source/Algorithm-AhoCorasick-XS-0.04/perlobject.map' -typemap '/home/hakon/perl/cpan-source/Algorithm-AhoCorasick-XS-0.04/typemap' -typemap '/home/hakon/perl/cpan-source/Algorithm-AhoCorasick-XS-0.04/typemap'  ac.xs > ac.xsc
mv ac.xsc ac.c
g++ -c   -Wall -std=c++11 -DUSEIMPORTLIB -march=x86-64 -mtune=generic -O2 -pipe   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\"  "-I/usr/lib/perl5/core_perl/CORE"   ac.c
In file included from ac.xs:11:
ppport.h:4594: warning: "WIDEST_UTYPE" redefined
 4594 | #  define WIDEST_UTYPE U64TYPE
      |
In file included from /usr/lib/perl5/core_perl/CORE/perl.h:2753,
                 from ac.xs:5:
/usr/lib/perl5/core_perl/CORE/handy.h:1251: note: this is the location of the previous definition
 1251 | #   define WIDEST_UTYPE U64
      |
In file included from /usr/lib/perl5/core_perl/CORE/perl.h:28,
                 from ac.xs:5:
/usr/lib/perl5/core_perl/CORE/config.h:1011:20: error: ‘sigjmp_buf’ does not name a type; did you mean ‘Sigjmp_buf’?
 1011 | #define Sigjmp_buf sigjmp_buf
      |                    ^~~~~~~~~~
/usr/lib/perl5/core_perl/CORE/cop.h:34:5: note: in expansion of macro ‘Sigjmp_buf’
   34 |     Sigjmp_buf  je_buf;  /* uninit if je_prev is NULL */
      |     ^~~~~~~~~~
make: *** [Makefile:341: ac.o] Error 1

What can be the problem here?


回答1:


It seems like the C++ option -std=c++11 is confusing MSYS2. In Makefile.PL line #20, we have:

CCFLAGS       => '-Wall -std=c++11',

if I remove -std=c++11 and save the file and recompile, it works fine:

$ make clean
$ perl Makefile.PL
$ make
cp lib/Algorithm/AhoCorasick/XS.pm blib/lib/Algorithm/AhoCorasick/XS.pm
Running Mkbootstrap for XS ()
chmod 644 "XS.bs"
"/usr/bin/perl.exe" -MExtUtils::Command::MM -e 'cp_nonempty' -- XS.bs blib/arch/auto/Algorithm/AhoCorasick/XS/XS.bs 644
g++ -c   -Wall -DUSEIMPORTLIB -march=x86-64 -mtune=generic -O2 -pipe   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\"  "-I/usr/lib/perl5/core_perl/CORE"   Matcher.cpp
"/usr/bin/perl.exe" "/usr/share/perl5/core_perl/ExtUtils/xsubpp"  -C++ -typemap '/usr/share/perl5/core_perl/ExtUtils/typemap' -typemap '/home/hakon/perl/cpan-source/Algorithm-AhoCorasick-XS-0.04/perlobject.map' -typemap '/home/hakon/perl/cpan-source/Algorithm-AhoCorasick-XS-0.04/typemap' -typemap '/home/hakon/perl/cpan-source/Algorithm-AhoCorasick-XS-0.04/typemap'  ac.xs > ac.xsc
mv ac.xsc ac.c
g++ -c   -Wall -DUSEIMPORTLIB -march=x86-64 -mtune=generic -O2 -pipe   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\"  "-I/usr/lib/perl5/core_perl/CORE"   ac.c
In file included from ac.xs:11:
ppport.h:4594: warning: "WIDEST_UTYPE" redefined
 4594 | #  define WIDEST_UTYPE U64TYPE
      |
In file included from /usr/lib/perl5/core_perl/CORE/perl.h:2753,
                 from ac.xs:5:
/usr/lib/perl5/core_perl/CORE/handy.h:1251: note: this is the location of the previous definition
 1251 | #   define WIDEST_UTYPE U64
      |
g++ -c   -Wall -DUSEIMPORTLIB -march=x86-64 -mtune=generic -O2 -pipe   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\"  "-I/usr/lib/perl5/core_perl/CORE"   test.c
rm -f blib/arch/auto/Algorithm/AhoCorasick/XS/XS.dll
g++  --shared  -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong  Matcher.o ac.o test.o  -o blib/arch/auto/Algorithm/AhoCorasick/XS/XS.dll  \
  /usr/lib/perl5/core_perl/CORE/msys-perl5_32.dll    \

chmod 755 blib/arch/auto/Algorithm/AhoCorasick/XS/XS.dll
Manifying 1 pod document
$ make test
"/usr/bin/perl.exe" -MExtUtils::Command::MM -e 'cp_nonempty' -- XS.bs blib/arch/auto/Algorithm/AhoCorasick/XS/XS.bs 644
PERL_DL_NONLAZY=1 "/usr/bin/perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/basic.t ....... ok
t/details.t ..... ok
t/edge_cases.t .. ok
t/utf8.t ........ ok
t/variation.t ... ok
All tests successful.
Files=5, Tests=1624,  2 wallclock secs ( 0.14 usr  0.06 sys +  0.64 cusr  0.85 csys =  1.69 CPU)
Result: PASS

See also this question.



来源:https://stackoverflow.com/questions/65637999/cannot-install-algorithmahocorasickxs-on-windows-10-msys2-sigjmp-buf-doe

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!