Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Steps to build Perl 5.6.2 in Cygwin 1.7.11

Tags:

cygwin

perl

I cannot seem to build perl 5.6.2 in Cygwin 1.7.11.

Here are the steps I am following to do it so far.

Download perl 5.6.2 source from website and untar to some folder "perl-5.6.2"

cd perl-5.6.2/bld
sh ../Configure -des -Dmksymlinks -Dprefix=/common/ndd/perl/5.6.2 -DDEBUGGING 2>&1
make 2>&1
make install 2>&1

Here are the logs from this:

http://pastebin.com/pqLg4S7z

What happens is make creates "perl-5.6.2/bld/perl.exe" and this file generates an abort signal every time.

Here is the backtrace from running gdb on it. (Note: I configured with -DDEBUGGING so all the gcc debug flags should be enabled.)

(gdb) run
Starting program: /openlogic/build/work/perl-5.6.2/bld/perl.exe
[New Thread 3348.0xf54]
[New Thread 3348.0x48c]

Program received signal SIGABRT, Aborted.
0x00000000 in ?? ()
(gdb) backtrace
#0  0x00000000 in ?? ()
#1  0x7792f8b1 in ntdll!RtlUpdateClonedSRWLock ()
   from /cygdrive/c/Windows/system32/ntdll.dll
#2  0x757f0a91 in WaitForSingleObjectEx ()
   from /cygdrive/c/Windows/syswow64/KERNELBASE.dll
#3  0x000000a8 in ?? ()
#4  0x00000000 in ?? ()
(gdb) quit

Here id the ldd.exe command ran on perl.exe

$ ldd /ndipiazza/build/work/perl-5.6.2/bld/perl.exe
        ntdll.dll => /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x77910000)
        kernel32.dll => /cygdrive/c/Windows/syswow64/kernel32.dll (0x75cb0000)
        KERNELBASE.dll => /cygdrive/c/Windows/syswow64/KERNELBASE.dll (0x757e0000)
        libperl5_6_2.dll => /ndipiazza/build/work/perl-5.6.2/bld/libperl5_6_2.dll (0x66140000)
        cygcrypt-0.dll => /usr/bin/cygcrypt-0.dll (0x67db0000)
        cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
        ??? => ??? (0x570000)

Can anyone see why I would be getting this sigabrt?

EDIT: here is a link to a discussion going on in Cygwin mailing list: http://cygwin.com/ml/cygwin/2012-07/msg00368.html

like image 474
Nicholas DiPiazza Avatar asked Dec 26 '22 22:12

Nicholas DiPiazza


1 Answers

5.6 is outdated for your build environment. Maintenance patches exist.

I recommend to install perlbrew and patchperl:

$ perlbrew install-patchperl

which will DTRT.

like image 191
daxim Avatar answered Jan 17 '23 09:01

daxim