develooper Front page | perl.perl5.porters | Postings from June 2010

RE: Building 64-bit perl on Win32

Thread Previous | Thread Next
Steve Hay
June 29, 2010 08:19
RE: Building 64-bit perl on Win32
Message ID:
Jan Dubois wrote on 2010-06-28:
> On Mon, 28 Jun 2010, Steve Hay wrote:
>>  What are the options for building a 64-bit perl on Win32 using
>> Microsoft tools?
>> The Makefile says that the SDK 64-bit compiler is supported. Does
>> mean that the 64-bit compiler in VS2008 is also supported? If so, can
>> it be built on a 32-bit OS, or does it have to be built on a 64-bit
>> (I'm trying to use the VS2008 64-bit compiler (the x86_amd64 one),
>> working on a 32-bit OS, and I'm not having any luck.)
>  I don't actually know if the 64-bit compiler is still a 32-bit
> executable itself, but it wouldn't work anyways, as the Perl build
> process requires you to run the miniperl.exe that you have just built.
> So _maybe_ it would be possible to build miniperl.exe with the 32-bit
> compiler, and then build the full perl.exe and all extensions with the
> 64-bit one, but the bundled Makefiles are not set up for this.  I also
> see little utility in this, as you wouldn't be able to run the test
> suite either.

I think the x86_amd64 compiler is a 32-bit compiler that produces 64-bit
output, whereas the amd64 compiler is 64-bit itself, but I agree with
your comments about miniperl.exe and the test suite.

So I've now moved on to trying to build perl (5.12.1) with the 64-bit
compiler (amd64) on a 64-bit machine, but it still isn't working for me.

I opened up the standard VC++ x64 command prompt, set CCTYPE=MSVC90 in
the win32/Makefile (I'm using Visual Studio 2008 SP1), and typed nmake.

It started by emitting a mountain of warnings about type conversions for
every file that it compiles. Is that normal? Then it produced this
strange error message immediately after linking perl.exe:

        ..\miniperl.exe -I..\lib bin\ ..\wperl.exe WINDOWS
'x' outside of string in unpack at bin\ line 39.
NMAKE : fatal error U1077: '..\miniperl.exe' : return code '0xff'

Line 39 in that file is:

($signature,$size,$magic) = unpack "Lx16Sx2S", $record;

What on earth has happened here?

Are there are any other options in the win32/Makefile that need setting?
The command-lines being echoed during the build definitely had -DWIN64
in the compiler options, so it's correctly spotted the
PROCESSOR_ARCHITECTURE (AMD64) okay. I don't see anything else that
needs setting.

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About