![]() |
MinGW and Perl 5.12 - Windows 32 bits ActiveState
With Windows 32 bits Activestate perl 5.10, I used to have (and
enjoy !) the "MinGW" package. see http://www.openkomodo.com/blogs/troyt/ppm-install-mingw >> install MinGW >> Submitted by troyt on Wed, 01/28/2009 - 17:06. >> Tags: activeperldmakegccMinGWperlppmwindows >> >> Here's a really cool development for ActivePerl >> users on Windows. MinGW is now available from the >> ActiveState PPM repository: >> >> C:\>ppm install MinGW >> >> This installs the MinGW tools (gcc, dlltool, ar, etc.) >> and dmake in ActivePerl's 'site/bin' directory. However, I have now migrated to Windows 32 bits ActiveState Perl 5.12, and the MinGW package seems to have disappeared ! C:\>ppm install MinGW ppm install failed: Can't find any package that provides MinGW What a lovely package "MinGW" was for Windows 32 bits ActiveState Perl 5.10, I hope it will be available soon for Windows 32 bits ActiveState Perl 5.12 !!! (...and, while we're on the subject, if possible, also for Windows 64 bits ActiveState Perl 5.12, too, but I think that it would be difficult to find a 64 bit version of MinGW ... ) |
Re: MinGW and Perl 5.12 - Windows 32 bits ActiveState
On Apr 17, 1:52*am, Dilbert <dilbert1...@gmail.com> wrote:
> With Windows 32 bits Activestate perl 5.10, I used to have (and > enjoy !) the "MinGW" package. > > However, I have now migrated to Windows 32 bits ActiveState Perl 5.12, > and the MinGW package seems to have disappeared ! > > C:\>ppm install MinGW > ppm install failed: Can't find any package that provides MinGW > As Ben said, the ppm repo for 5.12 isn't fully stocked yet. In the meantime, if you've still got the 5.10 installation sitting there, you can use its MinGW and dmake with 5.12. It's just a matter of adding the perl-5.10/site/bin folder to the *end* of the path. Or you can grab and install MinGW and dmake yourself - without using ppm. (I think 'ppm' makes it a bit simpler, but.) > (...and, while we're on the subject, if possible, also for Windows 64 > bits ActiveState Perl 5.12, too, but I think that it would be > difficult to find a 64 bit version of MinGW ... ) You'll get MinGW64 easy enough at http://mingw-w64.sourceforge.net/ - though, as I write this, it seems that the site is undergoing an upgrade. Unfortunately, mingw64 won't work straight out of the box with x64 ActivePerl. Coincidentally, I've been hacking at this today. Having got everything to the stage where extensions would build, pass their tests, and install just fine, I then found that there can be weird runtime failures when DynaLoader tries to load the extension's dll. (Only seems to affect some extensions - and even then only under certain conditions ... I really can't yet make much sense of what's happening.) In short, for the moment at least, you'd be better off grabbing the freely available "Microsoft Platform SDK for Windows Server 2003 R2" compiler and using it with the x64 ActivePerl builds (irrespective of which version of Windows 64 you're running). That's the same compiler as was used to build the x64 ActiveState perls, and it therefore works very well with those builds. Cheers, Rob |
Re: MinGW and Perl 5.12 - Windows 32 bits ActiveState
On 17 avr, 10:36, sisyphus <sisyphus...@gmail.com> wrote:
> On Apr 17, 1:52*am, Dilbert <dilbert1...@gmail.com> wrote: > > > With Windows 32 bits Activestate perl 5.10, I used to have (and > > enjoy !) the "MinGW" package. > > > However, I have now migrated to Windows 32 bits ActiveState Perl 5.12, > > and the MinGW package seems to have disappeared ! > > > C:\>ppm install MinGW > > ppm install failed: Can't find any package that provides MinGW > > As Ben said, the ppm repo for 5.12 isn't fully stocked yet. > In the meantime, if you've still got the 5.10 installation sitting > there, you can use its MinGW and dmake with 5.12. It's just a matter > of adding the perl-5.10/site/bin folder to the *end* of the path. > > Or you can grab and install MinGW and dmake yourself - without using > ppm. (I think 'ppm' makes it a bit simpler, but.) > You'll get MinGW64 easy enough athttp://mingw-w64.sourceforge.net/- > though, as I write this, it seems that the site is undergoing an > upgrade. > > Unfortunately, mingw64 won't work straight out of the box with x64 > ActivePerl. Coincidentally, I've been hacking at this today. Having > got everything to the stage where extensions would build, pass their > tests, and install just fine, I then found that there can be weird > runtime failures when DynaLoader tries to load the extension's dll. > (Only seems to affect some extensions - and even then only under > certain conditions ... I really can't yet make much sense of what's > happening.) > > In short, for the moment at least, you'd be better off grabbing the > freely available "Microsoft Platform SDK for Windows Server 2003 R2" > compiler and using it with the x64 ActivePerl builds (irrespective of > which version of Windows 64 you're running). That's the same compiler > as was used to build the x64 ActiveState perls, and it therefore works > very well with those builds. Thanks very much to Ben and sisyphys for their reply, the 64 bits in particular is very interesting (...and I admit, asking for the complete PPM repository 24 hours after the release of Perl 5.12 is a bit excessive...). I will follow their advice. |
Re: MinGW and Perl 5.12 - Windows 32 bits ActiveState
On 17 avr, 10:36, sisyphus <sisyphus...@gmail.com> wrote:
> On Apr 17, 1:52*am, Dilbert <dilbert1...@gmail.com> wrote: > > > With Windows 32 bits Activestate perl 5.10, I used to have (and > > enjoy !) the "MinGW" package. > > > However, I have now migrated to Windows 32 bits ActiveState Perl 5.12, > > and theMinGWpackage seems to have disappeared ! > > > C:\>ppm installMinGW > > ppm install failed: Can't find any package that providesMinGW > > As Ben said, the ppm repo for 5.12 isn't fully stocked yet. > > > (...and, while we're on the subject, if possible, also for Windows 64 > > bits ActiveState Perl 5.12, too, but I think that it would be > > difficult to find a 64 bit version ofMinGW... ) > > You'll get MinGW64 easy enough athttp://mingw-w64.sourceforge.net/- > though, as I write this, it seems that the site is undergoing an > upgrade. > > Unfortunately, mingw64 won't work straight out of the box with x64 > ActivePerl. Coincidentally, I've been hacking at this today. Having > got everything to the stage where extensions would build, pass their > tests, and install just fine, I then found that there can be weird > runtime failures when DynaLoader tries to load the extension's dll. > (Only seems to affect some extensions - and even then only under > certain conditions ... I really can't yet make much sense of what's > happening.) > > In short, for the moment at least, you'd be better off grabbing the > freely available "Microsoft Platform SDK for Windows Server 2003 R2" > compiler and using it with the x64 ActivePerl builds (irrespective of > which version of Windows 64 you're running). That's the same compiler > as was used to build the x64 ActiveState perls, and it therefore works > very well with those builds. I know, I can get MinGW64 at http://mingw-w64.sourceforge.net/ or I can grab the freely available "Microsoft Platform SDK for Windows Server 2003 R2", but I like the "no brain, no pain" philosophy of a "ppm install MinGW". So I tried "ppm install MinGW" on Activestate Perl 5.12 - Windows 64 bits, but there is still no MinGW Package available for 64 bits on the Activestate repo. Then I tried "ppm install MinGW" on Perl 5.12 - Windows 32 bits, and guess what -- it worked. Hurray, the MinGW Package for Perl 5.12 (Windows 32 bits) is now available from the Activestate repo. -- *** A big thank you to all those who made this possible !!! *** -- I don't take MinGW for granted (next step for me is to test CPANPLUS with Activestate Perl 5.12 to install xs based modules under Windows) Anyway, here is proof that "ppm install MinGW" on Perl 5.12 (Windows 32 bits) really did work: C:\>perl -v This is perl 5, version 12, subversion 0 (v5.12.0) built for MSWin32- x86-multi-thread (with 1 registered patch, see perl -V for more detail) Copyright 1987-2010, Larry Wall Binary build 1200 [292396] provided by ActiveState http://www.ActiveState.com Built Apr 11 2010 11:30:56 C:\>ppm install MinGW Downloading ActiveState Package Repository packlist...done Updating ActiveState Package Repository database...done Syncing site PPM database with .packlists...done Syncing perl PPM database with .packlists...done Downloading MinGW-5.1.4.1...done Downloading dmake-4.11.20080107...done Unpacking MinGW-5.1.4.1...done Unpacking dmake-4.11.20080107...done Generating HTML for MinGW-5.1.4.1...done Generating HTML for dmake-4.11.20080107...done Updating files in site area...done 1070 files installed C:\> |
Re: MinGW and Perl 5.12 - Windows 32 bits ActiveState
On 17 avr, 10:36, sisyphus <sisyphus...@gmail.com> wrote:
> On Apr 17, 1:52*am, Dilbert <dilbert1...@gmail.com> wrote: > > (...and, while we're on the subject, if possible, also for Windows 64 > > bits ActiveState Perl 5.12, too, but I think that it would be > > difficult to find a 64 bit version of MinGW ... ) > > You'll get MinGW64 easy enough athttp://mingw-w64.sourceforge.net/- > though, as I write this, it seems that the site is undergoing an > upgrade. I went to http://mingw-w64.sourceforge.net/ and I downloaded what I thought would be a MinGW executable package, that is a zip-package that contains precompiled Windows files like "g++.exe", "gcc.exe" and "dmake.exe": Under address http://sourceforge.net/projects/mingw-w64/files/ I downloaded \External binary packages (Win64 hosted) \Binaries \Coin-2.5.0-bin-x64.zip \jpeg-8-bin-x64.zip \expat-2.0.1-bin-x64.zip \yasm-0.8.0-bin-x64.zip \fftw-3.2.2-src.zip \libiconv-1.13.1-bin-x64.zip \gsl-1.14-src.zip \openssl-snapshot20100331-bin-x64.zip \zlib-1.2.4-bin-x64.zip I was hoping to find precompiled files like "g++.exe", "gcc.exe" and "dmake.exe", but none of these packages had any of the required exe-files. > In short, for the moment at least, you'd be better off grabbing the > freely available "Microsoft Platform SDK for Windows Server 2003 R2" > compiler and using it with the x64 ActivePerl builds I can't seem to get the Windows *.exe-files I need for 64 bits from MinGW, so I grabbed the freely available Microsoft Visual C++ 2008 Compiler (*** a whopping 200 meg !!! ***). I am currently downloading (45%...) ...let's see how this works out... |
Re: MinGW and Perl 5.12 - Windows 32 bits ActiveState
On 13 mai, 20:17, Dilbert <dilbert1...@gmail.com> wrote:
> On 17 avr, 10:36, sisyphus <sisyphus...@gmail.com> wrote: > > In short, for the moment at least, you'd be better off grabbing the > > freely available "Microsoft Platform SDK for Windows Server 2003 R2" > > compiler and using it with the x64 ActivePerl builds > > I can't seem to get the Windows *.exe-files I need for 64 bits from > MinGW, so I grabbed the freely available Microsoft Visual C++ 2008 > Compiler (*** a whopping 200 meg !!! ***). > > I am currently downloading (45%...) ...let's see how this works out... I have downloaded and installed "Microsoft Platform SDK for Windows Server 2003 R2". Apparently, I can now compile with Visual C++ 2008 ... ....but the linker complains with a message: fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' I can't find any solution in Google. |
Re: MinGW and Perl 5.12 - Windows 32 bits ActiveState
Dilbert wrote:
>I know, I can get MinGW64 at http://mingw-w64.sourceforge.net/ or I >can grab the freely available "Microsoft Platform SDK for Windows >Server 2003 R2", but I like the "no brain, no pain" philosophy of a >"ppm install MinGW". So I tried "ppm install MinGW" on Activestate >Perl 5.12 - Windows 64 bits, but there is still no MinGW Package >available for 64 bits on the Activestate repo. > >Then I tried "ppm install MinGW" on Perl 5.12 - Windows 32 bits, and >guess what -- it worked. > >Hurray, the MinGW Package for Perl 5.12 (Windows 32 bits) is now >available from the Activestate repo. -- *** A big thank you to all >those who made this possible !!! *** -- I don't take MinGW for granted >(next step for me is to test CPANPLUS with Activestate Perl 5.12 to >install xs based modules under Windows) If your Perl is 32 bits, then your modules should be built for 32 bits, too. -- Bart. |
Re: MinGW and Perl 5.12 - Windows 32 bits ActiveState
On 14 mai, 14:01, Bart Lateur <bart.lat...@telenet.be> wrote:
> Dilbert wrote: > >I know, I can get MinGW64 athttp://mingw-w64.sourceforge.net/or I > >can grab the freely available "Microsoft Platform SDK for Windows > >Server 2003 R2", but I like the "no brain, no pain" philosophy of a > >"ppm install MinGW". So I tried "ppm install MinGW" on Activestate > >Perl 5.12 - Windows 64 bits, but there is still no MinGW Package > >available for 64 bits on the Activestate repo. > > >Then I tried "ppm install MinGW" on Perl 5.12 - Windows 32 bits, and > >guess what -- it worked. > > >Hurray, the MinGW Package for Perl 5.12 (Windows 32 bits) is now > >available from the Activestate repo. -- *** A big thank you to all > >those who made this possible !!! *** -- I don't take MinGW for granted > >(next step for me is to test CPANPLUS with Activestate Perl 5.12 to > >install xs based modules under Windows) > > If your Perl is 32 bits, then your modules should be built for 32 bits, > too. I have got two computers: - one computer with Windows Vista 64 bits and Activestate Perl 5.12 - 64 bits - another computer with Windows XP 32 bits and Activestate Perl 5.12 - 32 bits As already described in the other posts in this thread, I am happy with "ppm install MinGW" on my 32 bits computer. However, on my other 64 bits computer, (although I can perfectly understand that "ppm install MinGW" does not work on a 64 bit Windows system) I still need to have a C-compiler to build XS-modules from CPAN. First I tried to get MinGW64 at http://mingw-w64.sourceforge.net/, but I could not find any package/zip file that contained the required pre- compiled *.exe files for Windows 64 bits. Then I tried the freely available "Microsoft Platform SDK for Windows Server 2003 R2", but honestly, this is a nightmare: first of all, the download+install of VC++/Platform SDK is more than 200 megs, then the linker complains with a message: fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'. I was looking at the article http://jenshuebel.wordpress.com/2009...4-bit-targets/ to fix my problems, but on my system I can't even find the slightest trace of any of the x64/amdx64 directories/dlls mentioned in the article. I can understand that a big company like Activestate can afford to use a MS Visual C++ compiler, but I am simply not clever enough to use the freely available compiler from Microsoft. My only hope is that the good people who gave us "ppm install MinGW" on 32 bits, will repeat their efforts and release the same for 64 bits. |
MinGW and Perl 5.12 - Windows 64 bits ActiveState
[ subject changed to: "MinGW and Perl 5.12 - Windows 64 bits
ActiveState" ] On 14 mai, 15:25, Dilbert <dilbert1...@gmail.com> wrote: > On 14 mai, 14:01, Bart Lateur <bart.lat...@telenet.be> wrote: > > Dilbert wrote: > > >I know, I can get MinGW64 athttp://mingw-w64.sourceforge.net/orI > > >can grab the freely available "Microsoft Platform SDK for Windows > > >Server 2003 R2", but I like the "no brain, no pain" philosophy of a > > >"ppm install MinGW". So I tried "ppm install MinGW" on Activestate > > >Perl 5.12 - Windows 64 bits, but there is still no MinGW Package > > >available for 64 bits on the Activestate repo. > > > If your Perl is 32 bits, then your modules should be built for 32 bits, > > too. > > I have got two computers: > > *- one computer with Windows Vista 64 bits and Activestate Perl 5.12 - > 64 bits > *- another computer with Windows XP 32 bits and Activestate Perl 5.12 > - 32 bits > > As already described in the other posts in this thread, I am happy > with "ppm install MinGW" on my 32 bits computer. > > However, on my other 64 bits computer, (although I can perfectly > understand that "ppm install MinGW" does not work on a 64 bit Windows > system) I still need to have a C-compiler to build XS-modules from > CPAN. > > First I tried to get MinGW64 athttp://mingw-w64.sourceforge.net/, but > I could not find any package/zip file that contained the required pre- > compiled *.exe files for Windows 64 bits. > > Then I tried the freely available "Microsoft Platform SDK for Windows > Server 2003 R2", but honestly, this is a nightmare: first of all, the > download+install of VC++/Platform SDK is more than 200 megs, then the > linker complains with a message: fatal error LNK1112: module machine > type 'X86' conflicts with target machine type 'x64'. > > I was looking at the articlehttp://jenshuebel.wordpress.com/2009/02/12/visual-c-2008-express-edit... > to fix my problems, but on my system I can't even find the slightest > trace of any of the x64/amdx64 directories/dlls mentioned in the > article. > > I can understand that a big company like Activestate can afford to use > a MS Visual C++ compiler, but I am simply not clever enough to use the > freely available compiler from Microsoft. It looks very much as if there simply is no 64 bits in the free available compiler from Microsoft, only 32 bits :( I am just thinking: is there not a manipulation somewhere in "use Config" that tricks Makefile.PL and Build.PL into thinking it was on a 32 bit platform ? -- Maybe then the compile and link will succeed as a 32 bit application, and the 32 bit program should work fine, even with a 64 bit Perl ? -- or is my thinking wrong ? > My only hope is that the good people who gave us "ppm install MinGW" > on 32 bits, will repeat their efforts and release the same for 64 > bits. Whatever the outcome of my battle with MS VC++ will be, I will be relieved when "ppm install MinGW" works on 64 bit Windows. |
Re: MinGW and Perl 5.12 - Windows 64 bits ActiveState
On May 15, 3:41*am, Dilbert <dilbert1...@gmail.com> wrote:
> > It looks very much as if there simply is no 64 bits in the free > available compiler from Microsoft, only 32 bits :( It's still there - though it looks a 32 bit application is being found. What command are you running to set the environment ? What does the 'cl /?' output begin with ? It should be something like: Microsoft (R) C/C++ Optimizing Compiler Version 14.00.40310.41 for AMD64 Copyright (C) Microsoft Corporation. All rights reserved. > > Whatever the outcome of my battle with MS VC++ will be, I will be > relieved when "ppm install MinGW" works on 64 bit Windows. According to Jan Dubois, that probably won't be for a couple of months (at least). ActivePerl 5.12.0 needs some patching before it will work with the MinGW64 compilers. I have patches that enable this (included below)- they're a bit of a hack, and quite possibly *not* the way that ActiveState will deal with the issues. But they've been working fine for me, and you're welcome to give them a try. (I'd be interested to hear of any problems you strike if you do use them - feel free to email me at my CPAN address.) For the MinGW64 compiler, you go to http://sourceforge.net/projects/mingw-w64/files , as you've already discovered. Under "Toolchains targetting Win64" grab either one of the "personal builds" or one of the "automated builds" that has been built for win64 mingw (not for linux or cygwin) - and make sure it's a 64-bit build (as they're also providing a 32- bit compiler). The "automated builds" are a cross-compiler with the names of the executables prefixed with "x86_64-w64-mingw32-" (ie "x86_64-w64-mingw32-gcc.exe", etc.), so it might be simpler if you choose the "sezero_20100428" build ("mingw-w64-bin_x86_64- mingw_20100428_sezero.zip"). My patches accommodate both types of build. Then just unzip and add the bin folder to the path. Cheers, Rob Patch to lib/ExtUtils/MM_Win32.pm (ActivePerl build 1200): ################################################## --- MM_Win32.pm_orig Sat Apr 17 13:38:04 2010 +++ MM_Win32.pm Wed Apr 21 17:40:30 2010 @@ -33,7 +33,9 @@ my $BORLAND = $Config{'cc'} =~ /\bbcc/i ? 1 : 0; my $GCC = $Config{'cc'} =~ /\bgcc/i ? 1 : 0; -my $DLLTOOL = $Config{'dlltool'} || 'dlltool'; +my $dlltool = $Config{'cc'} =~ /x86_64\-w64\-mingw32\-/i ? 'x86_64- w64-mingw32-dlltool' + : 'dlltool'; +my $DLLTOOL = $Config{'dlltool'} || $dlltool; =head2 Overridden methods @@ -359,8 +361,17 @@ sub init_linker { my $self = shift; - - $self->{PERL_ARCHIVE} = "\$(PERL_INC)\\$Config{libperl}"; + + if($GCC && + $Config{libperl} =~ /\.lib/ && + $Config{archname} =~ /\-x64/) { + my $libperl = $Config{libperl}; + $libperl =~ s/\.lib/\.dll/; + $self->{PERL_ARCHIVE} = "$Config{bin}\\$libperl"; + } + else { + $self->{PERL_ARCHIVE} = "\$(PERL_INC)\\$Config{libperl}"; + } $self->{PERL_ARCHIVE_AFTER} = ''; $self->{EXPORT_LIST} = '$(BASEEXT).def'; } ################################################## Patch to lib/ActivePerl/Config.pm (ActivePerl build 1200): ################################################## --- Config.pm_orig Sat Apr 17 12:27:02 2010 +++ Config.pm Mon May 3 12:54:59 2010 @@ -34,8 +34,11 @@ quadtype uquadtype d_casti32 -); + dlltool +); # libperl needs to be inserted into above list (and appropriate _override() uncommented below) + # if we want to link to libperl512.a instead of perl512.dll - SISYPHUS my $compiler_env_initialized; +my $gcc_pre = ''; use Config (); my $CONFIG_OBJ = tied %Config::Config; @@ -98,12 +101,16 @@ } elsif ($^O eq "MSWin32" && (_gcc_requested() || ! ActiveState::Path::find_prog(_orig_conf("cc")))) { my $gcc = _find_prog("gcc"); + if(!$gcc) { + $gcc_pre = 'x86_64-w64-mingw32-'; + $gcc = _find_prog("${gcc_pre}gcc"); + } if (!$gcc && _install_mingw($key)) { $gcc = _find_prog("gcc"); } if ($gcc) { # assume MinGW or similar is available - $gcc = _get_short_path_name($gcc); + unless($gcc_pre) {$gcc = _get_short_path_name($gcc);} $gcc =~ s,\\,/,g; my($mingw) = $gcc =~ m,^(.*)/bin/gcc\.exe$,; if (defined $mingw) { @@ -134,7 +141,7 @@ # New: "-lfoo -lbar" my @libs = split / +/, _orig_conf($key); # Filter out empty prefix and oldnames.lib - @libs = grep {$_ && $_ ne "oldnames.lib"} @libs; + @libs = grep {$_ && $_ ne "oldnames.lib" && $_ ne "bufferoverflowU.lib"} @libs; # Remove '.lib' extension and add '-l' prefix s/(.*)\.lib$/-l$1/ for @libs; _override($key, join(' ', @libs)); @@ -150,24 +157,25 @@ _override("cpp", "$gcc -E"); _override("cpprun", "$gcc -E"); _override("cppminus", "-"); - _override("ar", _find_prog("ar")); - _override("ld", _find_prog("g++")); + _override("ar", _find_prog("${gcc_pre}ar")); + _override("ld", _find_prog("${gcc_pre}g++")); _override("_a", ".a"); _override("_o", ".o"); _override("obj_ext", ".o"); _override("lib_ext", ".a"); - _override("optimize", "-O2"); + _override("optimize", "-s -O2"); _override("i64type", "long long"); _override("u64type", "unsigned long long"); _override("quadtype", "long long"); _override("uquadtype", "unsigned long long"); _override("d_casti32", "define"); + #_override("libperl", "libperl512.a"); # Extract all library paths from lddlflags my @libpaths = map "-L$_", map /^-libpath:(.+)/, _orig_conf("lddlflags") =~ /(?=\S)(?>[^"\s]+|"[^"]*")+/g; - _override("lddlflags", join(" ", "-mdll", @libpaths)); - _override("ldflags", join(" ", @libpaths)); + _override("lddlflags", join(" ", "-s -mdll", @libpaths)); + _override("ldflags", join(" ", '-s', @libpaths)); } elsif (_gcc_requested()) { warn "Cannot find gcc on PATH\n" ################################################## |
| All times are GMT. The time now is 06:06 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.