Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MinGW and Perl 5.12 - Windows 32 bits ActiveState

952 views
Skip to first unread message

Dilbert

unread,
Apr 16, 2010, 11:52:17 AM4/16/10
to
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 ... )

Ben Morrow

unread,
Apr 16, 2010, 4:13:39 PM4/16/10
to

Quoth Dilbert <dilbe...@gmail.com>:

> 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,

Really? THat was quick...

> and the MinGW package seems to have disappeared !

5.12 we released, what, yesterday? So I would expect the ppms to be
behind a little.

> 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 ... )

64bit MinGW exists, and can be used to build perl. I've no idea if it's
compatible with whatever compiler AS use for their 64bit builds.

Ben

sisyphus

unread,
Apr 17, 2010, 4:36:04 AM4/17/10
to
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

Dilbert

unread,
Apr 17, 2010, 6:38:18 AM4/17/10
to
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.

Dilbert

unread,
May 13, 2010, 6:52:19 AM5/13/10
to
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:\>

Dilbert

unread,
May 13, 2010, 2:17:22 PM5/13/10
to
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...

Dilbert

unread,
May 14, 2010, 7:34:14 AM5/14/10
to

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.

Bart Lateur

unread,
May 14, 2010, 8:01:06 AM5/14/10
to
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.

Dilbert

unread,
May 14, 2010, 9:25:20 AM5/14/10
to
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

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/02/12/visual-c-2008-express-edition-and-64-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.

Dilbert

unread,
May 14, 2010, 1:41:52 PM5/14/10
to
[ 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.

sisyphus

unread,
May 15, 2010, 3:56:42 AM5/15/10
to
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"

##################################################

Peter J. Holzer

unread,
May 15, 2010, 5:57:43 AM5/15/10
to

You are mixing 32-bit ("x86") and 64-bit ("x64") code. You can't do
that. They need to match. If I understood you correctly, your perl is
64-bits, so you need to compile your modules in 64-bit mode, too.

hp

Dilbert

unread,
May 15, 2010, 6:24:07 AM5/15/10
to
On 15 mai, 09:56, sisyphus <sisyphus...@gmail.com> wrote:
> 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.

My "cl" clearly indicates a 32 bit application:

++ C:\>cl /?
++ Compilateur d'optimisation Microsoft (R) 32 bits C/C++
++ version 15.00.30729.01 pour 80x86
++ Copyright (C) Microsoft Corporation. All rights reserved.

However, I am on 64 bit Windows Vista with a 64 bit Activestate Perl
installation:

++ C:\>perl -v
++ This is perl 5, version 12, subversion 0 (v5.12.0) built for
++ MSWin32-x64-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 10 2010 22:58:59

I have downloaded the freely available VC++ compiler from
http://msdn.microsoft.com/fr-fr/express/aa975050.aspx

The vcvarsall.bat command that sets the environment variables is
located in C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC:

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>dir
++ Le volume dans le lecteur C s'appelle HP
++ Le numéro de série du volume est BA3E-0466
++
++ Répertoire de C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC
++
++ 15/05/2010 11:45 <REP> .
++ 15/05/2010 11:45 <REP> ..
++ 14/05/2010 13:20 <REP> bin
++ 13/05/2010 20:17 <REP> Express
++ 13/05/2010 20:18 <REP> include
++ 13/05/2010 20:18 <REP> lib
++ 13/05/2010 20:17 <REP> Profile
++ 13/05/2010 20:17 <REP> redist
++ 13/05/2010 20:17 <REP> VCNewItems
++ 13/05/2010 20:18 <REP> vcpackages
++ 13/05/2010 20:18 <REP> VCProjectDefaults
++ 13/05/2010 20:18 <REP> vcprojectitems
++ 13/05/2010 20:18 <REP> vcprojects
++ 05/01/2005 16:51 1 247 vcvarsall.bat
++ 13/05/2010 20:17 <REP> VCWizards
++ 1 fichier(s) 1 247 octets

Here is an extract from "vcvarsall.bat":

++ @echo off
++ if "%1" == "" goto x86
++ if not "%2" == "" goto usage
++
++ if /i %1 == x86 goto x86
++ if /i %1 == amd64 goto amd64
++ if /i %1 == x64 goto amd64
++ if /i %1 == ia64 goto ia64
++ if /i %1 == x86_amd64 goto x86_amd64
++ if /i %1 == x86_ia64 goto x86_ia64
++ goto usage
++
++ :x86
++ if not exist "%~dp0bin\vcvars32.bat" goto missing
++ call "%~dp0bin\vcvars32.bat"
++ goto :eof
++
++ :amd64
++ if not exist "%~dp0bin\amd64\vcvarsamd64.bat" goto missing
++ call "%~dp0bin\amd64\vcvarsamd64.bat"
++ goto :eof
++
++ :ia64
++ if not exist "%~dp0bin\ia64\vcvarsia64.bat" goto missing
++ call "%~dp0bin\ia64\vcvarsia64.bat"
++ goto :eof
++
++ :x86_amd64
++ if not exist "%~dp0bin\x86_amd64\vcvarsx86_amd64.bat" goto missing
++ call "%~dp0bin\x86_amd64\vcvarsx86_amd64.bat"
++ goto :eof
++
++ :x86_ia64
++ if not exist "%~dp0bin\x86_ia64\vcvarsx86_ia64.bat" goto missing
++ call "%~dp0bin\x86_ia64\vcvarsx86_ia64.bat"
++ goto :eof

I have tried the command vcvarsall with "amd64", "x64", "ia64",
"x86_amd64" and with "x86_ia64", but no success:

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
amd64
++ The specified configuration type is missing. The tools for the
++ configuration might not be installed.

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall x64
++ The specified configuration type is missing. The tools for the
++ configuration might not be installed.

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
ia64
++ The specified configuration type is missing. The tools for the
++ configuration might not be installed.

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
x86_amd64
++ The specified configuration type is missing. The tools for the
++ configuration might not be installed.

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
x86_ia64
++ The specified configuration type is missing. The tools for the
++ configuration might not be installed.

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>dir
++ Le volume dans le lecteur C s'appelle HP
++ Le numéro de série du volume est BA3E-0466

Well, not surprising at all, because the corresponding sub directories
("bin\amd64", "bin\ia64", "bin\x86_amd64" and "bin\x86_ia64") simply
do not exist:

++ Répertoire de C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
\bin
++
++ 14/05/2010 13:20 <REP> .
++ 14/05/2010 13:20 <REP> ..
++ 13/05/2010 20:17 <REP> 1036
++ 31/07/2008 15:52 165 376 atlprov.dll
++ 31/07/2008 15:52 77 312 bscmake.exe
++ 31/07/2008 15:52 677 872 c1.dll
++ 31/07/2008 15:52 2 326 520 c1xx.dll
++ 31/07/2008 15:52 2 363 888 c2.dll
++ 31/07/2008 15:52 129 520 cl.exe
++ 29/07/2008 02:57 289 cl.exe.config
++ 31/07/2008 15:52 33 784 cvtres.exe
++ 31/07/2008 15:52 17 920 dumpbin.exe
++ 31/07/2008 15:52 17 920 editbin.exe
++ 13/05/2010 20:18 <REP> fr
++ 31/07/2008 15:52 17 912 lib.exe
++ 31/07/2008 15:06 801 272 link.exe
++ 29/07/2008 02:57 289 link.exe.config
++ 31/07/2008 15:52 361 968 ml.exe
++ 31/07/2008 13:31 72 192 msobj80.dll
++ 29/07/2008 13:36 193 536 mspdb80.dll
++ 29/07/2008 13:36 288 768 mspdbcore.dll
++ 29/07/2008 13:36 107 520 mspdbsrv.exe
++ 31/07/2008 15:52 94 200 nmake.exe
++ 31/07/2008 15:52 20 480 undname.exe
++ 07/03/2007 16:44 31 vcvars32.bat
++ 31/07/2008 15:52 40 448 xdcmake.exe
++ 29/07/2008 02:57 289 xdcmake.exe.config
++ 23 fichier(s) 7 809 306 octets

What does exist, however, is "bin\vcvars32.bat", so let's try the only
option that's available: "vcvarsall x86"

++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall x86
++ Setting environment for using Microsoft Visual Studio 2008 x86
tools.

Well, it's certainly not 64 bits, but as I said, it's the only option
available.

Here are the relevant environment variables:

C:\>set

INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Include;C:
\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include;C:\Program
Files\Microsoft SDKs\Windows\v6.1\Include;C:\Program Files\Microsoft
SDKs\Windows\v6.1\Include\gl; C:\Program Files (x86)\Microsoft Visual
Studio 9.0\VC\include

LIB=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Lib\amd64;C:
\Program Files\Microsoft SDKs\Windows\v6.1\Lib\X64;C:\Program Files
(x86)\Microsoft Visual Studio 9.0\VC\lib

LIBPATH=C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows
\Microsoft.NET\Framework\v2.0.50727;C:\Program Files (x86)\Microsoft
Visual Studio 9.0\VC\LIB

Path=C:\Perl64\site\bin;C:\Perl64\bin;C:\Windows\system32;C:\Windows;C:
\Windows\System32\Wbem;c:\Program Files (x86)\Microsoft SQL Server
\100\Tools\Binn\;c:\Program Files (x86)\Microsoft SQL Server\100\DTS
\Binn\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin

> > 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 tohttp://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.

> Patch to lib/ExtUtils/MM_Win32.pm (ActivePerl build 1200):

> Patch to lib/ActivePerl/Config.pm (ActivePerl build 1200):

I will try downloading "mingw-w64-bin_x86_64-
mingw_20100428_sezero.zip" with your suggested patches to "lib/
ExtUtils/MM_Win32.pm" and "lib/ActivePerl/Config.pm".

I will let you know how I get on.

Thanks for your help

Ben Morrow

unread,
May 15, 2010, 7:37:07 AM5/15/10
to

Quoth Dilbert <dilbe...@gmail.com>:

>
> I have tried the command vcvarsall with "amd64", "x64", "ia64",
> "x86_amd64" and with "x86_ia64", but no success:
>
> ++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
> amd64
> ++ The specified configuration type is missing. The tools for the
> ++ configuration might not be installed.

> Well, not surprising at all, because the corresponding sub directories


> ("bin\amd64", "bin\ia64", "bin\x86_amd64" and "bin\x86_ia64") simply
> do not exist:

It looks like you've either downloaded the wrong package, or not
installed everything. Did the installer ask you any questions about
64bit versions of the compiler?

Ben

Dilbert

unread,
May 15, 2010, 8:27:57 AM5/15/10
to
On 15 mai, 13:37, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth Dilbert <dilbert1...@gmail.com>:

> > I have tried the command vcvarsall with "amd64", "x64", "ia64",
> > "x86_amd64" and with "x86_ia64", but no success:
>
> > ++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
> > amd64
> > ++ The specified configuration type is missing.  The tools for the
> > ++ configuration might not be installed.
> > Well, not surprising at all, because the corresponding sub directories
> > ("bin\amd64", "bin\ia64", "bin\x86_amd64" and "bin\x86_ia64") simply
> > do not exist:
>
> It looks like you've either downloaded the wrong package,

I have downloaded it from
http://msdn.microsoft.com/fr-fr/express/aa975050.aspx

is this the correct package ?
is this the latest package?

> or not installed everything. Did the installer ask you any
> questions about 64bit versions of the compiler?

I can't remember any question about 64 or 32 bit versions during the
install.

Does anybody know
- where to download and
- how to install
the free MS VC++ Express compiler for 64 bits ?

Ben Morrow

unread,
May 15, 2010, 10:53:00 AM5/15/10
to

Quoth Dilbert <dilbe...@gmail.com>:

> On 15 mai, 13:37, Ben Morrow <b...@morrow.me.uk> wrote:
> > Quoth Dilbert <dilbert1...@gmail.com>:
> > > I have tried the command vcvarsall with "amd64", "x64", "ia64",
> > > "x86_amd64" and with "x86_ia64", but no success:
> >
> > > ++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
> > > amd64
> > > ++ The specified configuration type is missing. �The tools for the
> > > ++ configuration might not be installed.
> > > Well, not surprising at all, because the corresponding sub directories
> > > ("bin\amd64", "bin\ia64", "bin\x86_amd64" and "bin\x86_ia64") simply
> > > do not exist:
> >
> > It looks like you've either downloaded the wrong package,
>
> I have downloaded it from
> http://msdn.microsoft.com/fr-fr/express/aa975050.aspx
>
> is this the correct package ?
> is this the latest package?

Unless you have a good reason not to, I'd always download the English
versions. I've no idea if it is the case here, but in the past some MS
products have had language-specific versions which were missing
features.

The English version of VC9 can be downloaded from
http://www.microsoft.com/express/Downloads/ . This isn't the latest
version, but that isn't important: what matters is that it matches the
version used to build your Perl, especially with recent MS compilers
which have a nasty habit of introducing incompatible versions of libc
all the time. I don't know which compiler AS use for their 64bit builds:
I thought it was VC7, but I don't have a 64bit Win32 machine on hand to
check. The free download of VC7 was called 'Visual C++ 2003 Express
Edition', and may or may not still be available; search microsoft.com.

FWIW, all of this mess is why I gave up on ActivePerl a while ago. I'd
recommend getting
http://strawberryperl.com/download/strawberry-perl-5.12.0.1-64bit-v2.msi
which includes the correct compiler as part of the install.

Ben

Dilbert

unread,
May 15, 2010, 1:32:19 PM5/15/10
to
On 15 mai, 16:53, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth Dilbert <dilbert1...@gmail.com>:
> > On 15 mai, 13:37, Ben Morrow <b...@morrow.me.uk> wrote:
> > > Quoth Dilbert <dilbert1...@gmail.com>:
> > > > I have tried the command vcvarsall with "amd64", "x64", "ia64",
> > > > "x86_amd64" and with "x86_ia64", but no success:
>
> > > > ++ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>vcvarsall
> > > > amd64
> > > > ++ The specified configuration type is missing.  The tools for the
> > > > ++ configuration might not be installed.
> > > > Well, not surprising at all, because the corresponding sub directories
> > > > ("bin\amd64", "bin\ia64", "bin\x86_amd64" and "bin\x86_ia64") simply
> > > > do not exist:
>
> > > It looks like you've either downloaded the wrong package,
>
> > I have downloaded it from
> >http://msdn.microsoft.com/fr-fr/express/aa975050.aspx
>
> > is this the correct package ?
> > is this the latest package?
>
> Unless you have a good reason not to, I'd always download the English
> versions. I've no idea if it is the case here, but in the past some MS
> products have had language-specific versions which were missing
> features.
>
> The English version of VC9 can be downloaded from
> http://www.microsoft.com/express/Downloads/.

I uninstalled the French version (took me an hour or so)
Then I downloaded and installed the English version from
http://www.microsoft.com/express/Downloads/ (the install went straight
ahead, there was no possibility to choose between 32 bits or 64 bits)

To my disappointment, the English version is also 32 bits only:

C:\>cl /?
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01
for 80x86


Copyright (C) Microsoft Corporation. All rights reserved.

Also, the same situation with C:\Program Files (x86)\Microsoft Visual
Studio 10.0\VC>vcvarsall amd64 ==>The specified configuration type is
missing. The tools for the configuration might not be installed. ==>


the corresponding sub directories ("bin\amd64", "bin\ia64", "bin
\x86_amd64" and "bin\x86_ia64") simply do not exist

> This isn't the latest


> version, but that isn't important: what matters is that it matches the
> version used to build your Perl, especially with recent MS compilers
> which have a nasty habit of introducing incompatible versions of libc
> all the time. I don't know which compiler AS use for their 64bit builds:
> I thought it was VC7, but I don't have a 64bit Win32 machine on hand to
> check. The free download of VC7 was called 'Visual C++ 2003 Express
> Edition', and may or may not still be available; search microsoft.com.
>
> FWIW, all of this mess is why I gave up on ActivePerl a while ago. I'd
> recommend getting
> http://strawberryperl.com/download/strawberry-perl-5.12.0.1-64bit-v2.msi
> which includes the correct compiler as part of the install.

I agree.

The recent experience with getting a C-compiler for Perl is what
tipped my scale today from Activestate to Strawberry.

Thanks for your help.

Dilbert

unread,
May 15, 2010, 4:18:43 PM5/15/10
to
On 15 mai, 09:56, sisyphus <sisyphus...@gmail.com> wrote:
> On May 15, 3:41 am, Dilbert <dilbert1...@gmail.com> wrote:
> > 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.)

[...Can't find your CPAN address...]

> For the MinGW64 compiler, you go tohttp://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.
>

> Patch to lib/ExtUtils/MM_Win32.pm (ActivePerl build 1200):

> [...]


> Patch to lib/ActivePerl/Config.pm (ActivePerl build 1200):

> [...]

I have downloaded and unzipped "mingw-w64-bin_x86_64-
mingw_20100515_sezero.zip" (that's "...20100515..." and not "...
20100428...") from http://sourceforge.net/projects/mingw-w64/files.

Then I added the "mingw64\bin" directory to the path.

Now, C:\>perl -V:make reports

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>perl -
V:make
Set up gcc environment - 4.4.5 20100513 (prerelease) [svn/rev.159365 -
mingw-w64/oz]
make='dmake';

But there is no dmake.exe anywhere on my Windows Vista 64 bits. ==> I
quickly google for "dmake" and I find ==> http://www.oooforum.org/forum/viewtopic.phtml?t=241
==> if you are using windows use this use this link ==>
http://www.cpan.org/authors/id/GSAR/dmake-4.1pl1-win32.zip

So I download and unzip "dmake-4.1pl1-win32.zip" (it's a 32 bit app,
but that doesn't matter) and add the directory "dmake-4.1pl1-
win32" (that's where dmake.exe lives) to the path (also, please be
aware that "dmake.exe" relies on a file "startup\startup.mk", so you
make sure that this exists)

I also applied the two patches:
- to lib/ExtUtils/MM_Win32.pm
- to lib/ActivePerl/Config.pm

Now I want to download and make Text::CSV_XS, but unfortunately there
is an error "gcc.exe: CreateProcess: No such file or directory"

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake
cp CSV_XS.pm blib\lib\Text\CSV_XS.pm
C:\Perl64\bin\perl.exe C:\Perl64\lib\ExtUtils\xsubpp -typemap C:
\Perl64\lib\ExtUtils\typemap CSV_XS.xs > CSV_XS.xsc && C:\Perl64\bin\
perl.exe -MExtUtils::Command -e "mv" -- CSV_XS.xsc CSV_XS.c
C:/Users/CK/DOCUME~1/PROGRA~2/MINGW6~1/gcc.exe -c -DNDEBUG -
DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIV
E -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -
DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasin
g -mms-bitfields -O2 -DVERSION=\"0.73\" -DXS_VERSION=\"0.73\"
"-IC:\Perl64\lib\CORE" CSV_XS.c
gcc.exe: CreateProcess: No such file or directory
dmake.exe: Error code 1, while making 'CSV_XS.o'

sisyphus

unread,
May 16, 2010, 5:00:06 AM5/16/10
to

Odd - I've just downloaded that exact same compiler, and it works fine
for me with ActivePerl. I've just used it to build Text::CSV_XS-0.73.
I don't think I've overlooked anything in my instructions (apart from
the need to have dmake - but you're ahead of me on that, anyway :-)

The solitary "-O2" in the failing command is a bit of a puzzle - the
patch should have changed that to an "-s -O2", but I don't think
that's what's causing the failure.

Anyway, if you're happy with Strawberry Perl (and there's no reason
you oughtn't be) then that's the simplest route to travel. It gives
you a compiler built by the same person (and same toolchain) as the
20100515_sezero zip you downloaded - but Strawberry has gcc-4.4.3, not
the gcc-4.4.5 that's currently on offer.

Cheers,
Rob

Dilbert

unread,
May 16, 2010, 6:36:08 AM5/16/10
to
On 16 mai, 11:00, sisyphus <sisyphus...@gmail.com> wrote:
> On May 16, 6:18 am, Dilbert <dilbert1...@gmail.com> wrote:
>
> > On 15 mai, 09:56, sisyphus <sisyphus...@gmail.com> wrote:
> > C:/Users/CK/DOCUME~1/PROGRA~2/MINGW6~1/gcc.exe -c       -DNDEBUG -
> > DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIV
> > E -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -
> > DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasin
> > g -mms-bitfields -O2      -DVERSION=\"0.73\"    -DXS_VERSION=\"0.73\"
> > "-IC:\Perl64\lib\CORE"   CSV_XS.c
> > gcc.exe: CreateProcess: No such file or directory
> > dmake.exe:  Error code 1, while making 'CSV_XS.o'
>
> Odd - I've just downloaded that exact same compiler, and it works fine
> for me with ActivePerl. I've just used it to build Text::CSV_XS-0.73.
> I don't think I've overlooked anything in my instructions (apart from
> the need to have dmake - but you're ahead of me on that, anyway :-)
>
> The solitary "-O2" in the failing command is a bit of a puzzle - the
> patch should have changed that to an "-s -O2"

That's my fault, because I accidently patched the wrong file. That's
fixed now:

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake

Skip blib\lib\Text\CSV_XS.pm (unchanged)


C:/Users/CK/DOCUME~1/PROGRA~2/MINGW6~1/gcc.exe -c -DNDEBUG -
DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIV
E -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -
DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasin

g -mms-bitfields -s -O2 -DVERSION=\"0.73\" -DXS_VERSION=


\"0.73\" "-IC:\Perl64\lib\CORE" CSV_XS.c
gcc.exe: CreateProcess: No such file or directory
dmake.exe: Error code 1, while making 'CSV_XS.o'

> but I don't think


> that's what's causing the failure.

You're right, that's not causing the failure.

> Anyway, if you're happy with Strawberry Perl (and there's no reason
> you oughtn't be) then that's the simplest route to travel. It gives
> you a compiler built by the same person (and same toolchain) as the
> 20100515_sezero zip you downloaded - but Strawberry has gcc-4.4.3, not
> the gcc-4.4.5 that's currently on offer.

I will install Strawberry Perl 5.12, 64 bits on my Windows Vista and
see if that works for me.

Dilbert

unread,
May 16, 2010, 8:05:55 AM5/16/10
to
On 16 mai, 12:36, Dilbert <dilbert1...@gmail.com> wrote:
> C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake
> Skip blib\lib\Text\CSV_XS.pm (unchanged)
> C:/Users/CK/DOCUME~1/PROGRA~2/MINGW6~1/gcc.exe -c       -DNDEBUG -
> DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIV
> E -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -
> DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasin
> g -mms-bitfields -s -O2           -DVERSION=\"0.73\"    -DXS_VERSION=
> \"0.73\"  "-IC:\Perl64\lib\CORE"   CSV_XS.c
> gcc.exe: CreateProcess: No such file or directory
> dmake.exe:  Error code 1, while making 'CSV_XS.o'

I installed Strawberry Perl 5.12, 64 bits (
http://strawberry-perl.googlecode.com/files/strawberry-perl-5.12.0.1.msi
) on my Windows Vista and it worked:

================================================


C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake

cp CSV_XS.pm blib\lib\Text\CSV_XS.pm

C:\strawberry\perl\bin\perl.exe C:\strawberry\perl\lib\ExtUtils
\xsubpp -typemap C:\strawberry\perl\lib\ExtUtils\typemap CSV_XS.xs >
CSV_XS.xsc
&& C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e "mv" --
CSV_XS.xsc CSV_XS.c
gcc -c -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -
DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-
bitfie
lds -DPERL_MSVCRT_READFIX -s -O2 -DVERSION=\"0.73\" -
DXS_VERSION=\"0.73\" "-IC:\strawberry\perl\lib\CORE" CSV_XS.c
Running Mkbootstrap for Text::CSV_XS ()
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644
CSV_XS.bs
C:\strawberry\perl\bin\perl.exe -MExtUtils::Mksymlists \
-e "Mksymlists('NAME'=>\"Text::CSV_XS\", 'DLBASE' => 'CSV_XS',
'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' =>
[]);"
dlltool --def CSV_XS.def --output-exp dll.exp
g++ -o blib\arch\auto\Text\CSV_XS\CSV_XS.dll -Wl,--base-file -
Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c
\lib" CSV_XS
.o -Wl,--image-base,0x1b000000 C:\strawberry\perl\lib\CORE
\libperl512.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -
lcomdlg32 -ladvapi32
-lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -
lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp
dlltool --def CSV_XS.def --base-file dll.base --output-exp dll.exp
g++ -o blib\arch\auto\Text\CSV_XS\CSV_XS.dll -mdll -s -L"C:\strawberry
\perl\lib\CORE" -L"C:\strawberry\c\lib" CSV_XS.o -Wl,--image-base,
0x1b00000
0 C:\strawberry\perl\lib\CORE\libperl512.a -lmoldname -lkernel32 -
luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -
loleaut32
-lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32
-lcomctl32 dll.exp
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e "chmod" -- 755
blib\arch\auto\Text\CSV_XS\CSV_XS.dll
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e "cp" --
CSV_XS.bs blib\arch\auto\Text\CSV_XS\CSV_XS.bs
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644
blib\arch\auto\Text\CSV_XS\CSV_XS.bs
C:\strawberry\perl\bin\perl.exe "-Iblib\arch" "-Iblib\lib" CSV_XS.PL
CSV_XS

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake

test
C:\strawberry\perl\bin\perl.exe "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'blib\lib', 'blib\arch')" t/*.t
t/00_pod.t ........ skipped: Test::Pod 1.00 required for testing POD
[ ... ]
t/81_subclass.t ... ok
All tests successful.
Files=22, Tests=12055, 5 wallclock secs ( 1.51 usr + 0.17 sys =
1.69 CPU)
Result: PASS
================================================

Basically, problem solved, however I still insist in getting MinGW
running with Activestate Perl, so I did the following:

I removed "C:\strawberry\perl\site\bin;C:\strawberry\perl\bin" from
the path (and carefully left "C:\strawberry\c\bin" in there, so to
have the MinGW compiler still available), then I added "C:\Perl64\site
\bin;C:\Perl64\bin" to the path to re-instate Activestate Perl

So basically I replaced Strawberry Perl by ActiveState Perl (but left
the MinGW64 part in the path).

I also made sure that the two patches (to lib/ExtUtils/MM_Win32.pm and
to lib/ActivePerl/Config.pm as provided by sisyphus) were re-instated.

Fortunately, when I now run "dmake", I get past the error ("gcc.exe:
CreateProcess: No such file or directory")...

...but there is now another error ("C:\Perl64\bin\perl512.dll: file
not recognized: File format not recognized")

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake

cp CSV_XS.pm blib\lib\Text\CSV_XS.pm
C:\Perl64\bin\perl.exe C:\Perl64\lib\ExtUtils\xsubpp -typemap C:
\Perl64\lib\ExtUtils\typemap CSV_XS.xs > CSV_XS.xsc && C:\Perl64\bin
\perl.exe -
MExtUtils::Command -e "mv" -- CSV_XS.xsc CSV_XS.c

C:/STRAWB~1/c/bin/gcc.exe -c -DNDEBUG -DWIN32 -D_CONSOLE -


DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIVE -
DUSE_SITECUSTOMIZE -DPERL_IMPLI

CIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -


DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields -s -O2 -
DVERSION=\"0.7

3\" -DXS_VERSION=\"0.73\" "-IC:\Perl64\lib\CORE" CSV_XS.c

Running Mkbootstrap for Text::CSV_XS ()
C:\Perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 CSV_XS.bs
C:\Perl64\bin\perl.exe -MExtUtils::Mksymlists \
-e "Mksymlists('NAME'=>\"Text::CSV_XS\", 'DLBASE' => 'CSV_XS',
'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' =>
[]);"
Set up gcc environment - 4.4.3
dlltool --def CSV_XS.def --output-exp dll.exp

C:\STRAWB~1\c\bin\g++.exe -o blib\arch\auto\Text\CSV_XS\CSV_XS.dll -
Wl,--base-file -Wl,dll.base -s -mdll -L"C:\Perl64\lib\CORE" CSV_XS.o -
Wl,--image-base,0x1b000000

C:\Perl64\bin\perl512.dll -lkernel32 -luser32 -lgdi32 -lwinspool -
lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -
lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -
lmsvcrt dll.exp

C:\Perl64\bin\perl512.dll: file not recognized: File format not
recognized
collect2: ld returned 1 exit status
dmake: Error code 129, while making 'blib\arch\auto\Text\CSV_XS
\CSV_XS.dll'

Dilbert

unread,
May 16, 2010, 9:09:09 AM5/16/10
to
On 16 mai, 14:05, Dilbert <dilbert1...@gmail.com> wrote:
> Basically, problem solved, however I still insist in getting MinGW
> running with Activestate Perl

I abandon the idea of getting MinGW running with Activestate Perl. The

Ben Morrow

unread,
May 16, 2010, 4:36:07 PM5/16/10
to

Quoth Dilbert <dilbe...@gmail.com>:

>
> I have downloaded and unzipped "mingw-w64-bin_x86_64-
> mingw_20100515_sezero.zip" (that's "...20100515..." and not "...
> 20100428...") from http://sourceforge.net/projects/mingw-w64/files.
>
> Then I added the "mingw64\bin" directory to the path.
>
<snip>

>
> Now I want to download and make Text::CSV_XS, but unfortunately there
> is an error "gcc.exe: CreateProcess: No such file or directory"
>
> C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake
> cp CSV_XS.pm blib\lib\Text\CSV_XS.pm
> C:\Perl64\bin\perl.exe C:\Perl64\lib\ExtUtils\xsubpp -typemap C:
> \Perl64\lib\ExtUtils\typemap CSV_XS.xs > CSV_XS.xsc && C:\Perl64\bin\
> perl.exe -MExtUtils::Command -e "mv" -- CSV_XS.xsc CSV_XS.c
> C:/Users/CK/DOCUME~1/PROGRA~2/MINGW6~1/gcc.exe -c -DNDEBUG -
^^^^^^^^^^^^^^^^^^^^^^^^^^
Is this a 'spaces in the path' or 'path too long' problem? Can you
install the compiler somewhere like c:\mingw64 and try again?

Ben

s...@netherlands.com

unread,
May 16, 2010, 9:43:48 PM5/16/10
to

Has anyone actually benchmarked 64-bit over 32 in processing Perl
mechanics?

What are the performance delta's on each function?

-sln

s...@netherlands.com

unread,
May 16, 2010, 9:47:42 PM5/16/10
to

Back in the day, I guess the ibm370 was 128 bit.
Can Perl be written for risc processors? But Perl gets cornerred
in the OS implementation details. That will eventually be the death
of it. But thats not Perl fault, it trys to please too many, too
much.

-sln

Peter J. Holzer

unread,
May 17, 2010, 4:10:32 PM5/17/10
to
On 2010-05-17 01:47, s...@netherlands.com <s...@netherlands.com> wrote:
> Back in the day, I guess the ibm370 was 128 bit.

32 bit. Current versions of this architecture (now called z series,
unless they've changed the name again) are 64 bit.


> Can Perl be written for risc processors?

What do you mean by "Can Perl be written"? Neither Perl code nor the
perl interpreter need to be specially "written" for RISC processors. The
perl interpreter is written in reasonably portable C and compiles fine
on RISC processors (which aren't that similar, btw: A SPARC processor is
quite different from an Alpha).

> But Perl gets cornerred in the OS implementation details. That will
> eventually be the death of it. But thats not Perl fault, it trys to
> please too many, too much.

-v?

hp

Dilbert

unread,
May 18, 2010, 9:00:54 AM5/18/10
to
On 16 mai, 22:36, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth Dilbert <dilbert1...@gmail.com>:

>
>
>
> > I have downloaded and unzipped "mingw-w64-bin_x86_64-
> > mingw_20100515_sezero.zip" (that's "...20100515..." and not "...
> > 20100428...") fromhttp://sourceforge.net/projects/mingw-w64/files.

>
> > Then I added the "mingw64\bin" directory to the path.
>
> <snip>
>
> > Now I want to download and make Text::CSV_XS, but unfortunately there
> > is an error "gcc.exe: CreateProcess: No such file or directory"
>
> > C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake
> > cp CSV_XS.pm blib\lib\Text\CSV_XS.pm
> > C:\Perl64\bin\perl.exe C:\Perl64\lib\ExtUtils\xsubpp  -typemap C:
> > \Perl64\lib\ExtUtils\typemap  CSV_XS.xs > CSV_XS.xsc && C:\Perl64\bin\
> > perl.exe -MExtUtils::Command -e "mv" -- CSV_XS.xsc CSV_XS.c
> > C:/Users/CK/DOCUME~1/PROGRA~2/MINGW6~1/gcc.exe -c       -DNDEBUG -
>
>               ^^^^^^^^^^^^^^^^^^^^^^^^^^
> Is this a 'spaces in the path' or 'path too long' problem? Can you
> install the compiler somewhere like c:\mingw64 and try again?

Unfortunately I can't reproduce this error anymore, I don't know what
happened, but it works now and whatever I try, I can't make it fail.

Anyway, thanks very much for your input

==============================================
Here is my successful run

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>perl -v

This is perl 5, version 12, subversion 0 (v5.12.0) built for MSWin32-
x64-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 10 2010 22:58:59

Perl may be copied only under the terms of either the Artistic License
or the
GNU General Public License, which may be found in the Perl 5 source
kit.

Complete documentation for Perl, including FAQ lists, should be found
on
this system using "man perl" or "perldoc perl". If you have access to
the
Internet, point your browser at http://www.perl.org/, the Perl Home
Page.

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>perl
Makefile.PL


Set up gcc environment - 4.4.5 20100513 (prerelease) [svn/rev.159365 -
mingw-w64/oz]

Checking if your kit is complete...
Looks good
Writing Makefile for Text::CSV_XS

C:\Users\CK\Documents\PerlModules\Text-CSV_XS\Text-CSV_XS-0.73>dmake
cp CSV_XS.pm blib\lib\Text\CSV_XS.pm
C:\Perl64\bin\perl.exe C:\Perl64\lib\ExtUtils\xsubpp -typemap C:
\Perl64\lib\ExtUtils\typemap CSV_XS.xs > CSV_XS.xsc && C:\Perl64\bin\
perl.exe -MExtUtils::Command -e "mv" -- CSV_XS.xsc CSV_XS.c

C:/Users/CK/DOCUME~1/PROGRA~1/MinGW64/mingw64/bin/gcc.exe -c -
DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCON
SERVATIVE -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -


DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -
fno-strict

-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.73\" -


DXS_VERSION=\"0.73\" "-IC:\Perl64\lib\CORE" CSV_XS.c

Running Mkbootstrap for Text::CSV_XS ()

C:\Perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 CSV_XS.bs
C:\Perl64\bin\perl.exe -MExtUtils::Mksymlists \


-e "Mksymlists('NAME'=>\"Text::CSV_XS\", 'DLBASE' => 'CSV_XS',
'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS'
=> []);"

Set up gcc environment - 4.4.5 20100513 (prerelease) [svn/rev.159365 -
mingw-w64/oz]

dlltool --def CSV_XS.def --output-exp dll.exp

C:\Users\CK\DOCUME~1\PROGRA~1\MinGW64\mingw64\bin\g++.exe -o blib\arch


\auto\Text\CSV_XS\CSV_XS.dll -Wl,--base-file -Wl,dll.base -s -mdl

l -L"C:\Perl64\lib\CORE" CSV_XS.o -Wl,--image-base,0x1b000000 C:
\Perl64\bin\perl512.dll -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdl
g32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32
-lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lmsvcrt


dll.exp
dlltool --def CSV_XS.def --base-file dll.base --output-exp dll.exp

C:\Users\CK\DOCUME~1\PROGRA~1\MinGW64\mingw64\bin\g++.exe -o blib\arch
\auto\Text\CSV_XS\CSV_XS.dll -s -mdll -L"C:\Perl64\lib\CORE" CSV_
XS.o -Wl,--image-base,0x1b000000 C:\Perl64\bin\perl512.dll -lkernel32


-luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lol

e32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -

lodbc32 -lodbccp32 -lcomctl32 -lmsvcrt dll.exp
C:\Perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 755 blib\arch
\auto\Text\CSV_XS\CSV_XS.dll
C:\Perl64\bin\perl.exe -MExtUtils::Command -e "cp" -- CSV_XS.bs blib


\arch\auto\Text\CSV_XS\CSV_XS.bs

C:\Perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 blib\arch
\auto\Text\CSV_XS\CSV_XS.bs
C:\Perl64\bin\perl.exe "-Iblib\arch" "-Iblib\lib" CSV_XS.PL CSV_XS

sisyphus

unread,
May 18, 2010, 9:53:39 AM5/18/10
to
On May 17, 6:36 am, Ben Morrow <b...@morrow.me.uk> wrote:

> > C:/Users/CK/DOCUME~1/PROGRA~2/MINGW6~1/gcc.exe -c       -DNDEBUG -
>
>               ^^^^^^^^^^^^^^^^^^^^^^^^^^
> Is this a 'spaces in the path' or 'path too long' problem?

I think this is just ActiveState's way of circumventing the 'spaces in
the path' problem. They use Win32::GetShortPathName() to convert to
the short pathname because that's guaranteed to contain no spaces.
Having the compiler installed in that location shouldn't be causing
any problems.

Cheers,
Rob

Dr.Ruud

unread,
May 18, 2010, 5:17:47 PM5/18/10
to

Good chance that "install the compiler somewhere like c:\mingw64", like
Ben proposed, will fix much.

--
Ruud

0 new messages