in reply to Re^4: Installing Perl modules on Win64/Perl 5.8
in thread Installing Perl modules on Win64/Perl 5.8

That link redirects me to install Windows SDK for Windows Server 2008 and .NET Framework 3.5

Bastards !!
It's not the same compiler as was used to build ActivePerl. I don't think it uses the same runtime (msvcrt.dll) as used by 2003 R2, and that can pose a problem in certain situations. Those situations are not common - but that's no consolation if you're wanting to build one of the modules that *are* affected by this. I think you'll also need to remove 'bufferoverflowu.lib' from the 'libs' and 'perllibs' entries in perl/lib/config_heavy.pl - though that's not such a big deal. If you can track down the one I specified (which, I think, is still available) it would be better. Maybe go to http://www.microsoft.com and try a search there for it.

But if you can't find the "2003 R2" then go with the one you've been re-directed to. (I think BrowserUk uses that one - with good results. I'll /msg him and ask him to correct me if I'm wrong about that.)

Another approach would be to install that 2008 version and then use it to build your own perl from source.

Cheers,
Rob
  • Comment on Re^5: Installing Perl modules on Win64/Perl 5.8

Replies are listed 'Best First'.
Re^6: Installing Perl modules on Win64/Perl 5.8
by BrowserUk (Patriarch) on Mar 25, 2010 at 13:28 UTC
    But if you can't find the "2003 R2" then go with the one you've been re-directed to. (I think BrowserUk uses that one - with good results.

    Indeed. That is the one I use with (mostly) good results. There have been a couple of XS modules that have presented problems to do with duplicate CRTs. However, I believe that those problems are induced by the Win32 perl makefile which explicitly names msvcrt.lib, instead of allowing it to default to the default CRT for the compiler. If that was removed, the CRT problem might go away.

    Another approach would be to install that 2008 version and then use it to build your own perl from source.

    There are three problems with that.

    1. Building the CPAN distribution of Perl is relatively simple, though you may find that you have to start it twice before it runs to completion.

      But with the CPAN distribution you miss out on a lot of the Win32-specific tools that make AS Perl's so useful.

    2. Finding the full AS sources for a given build isn't always easy.

      They're there somewhere--you always seem to have a link for them--but finding them, by navigating the AS site or googling isn't easy, and they have a tendancy to move around. Almost like AS don't really want you to find them.

    3. The AS sources do not build straight out of the box.

      I have succeeded a couple of times. Once with 5.8.8 32-bit and once with 5.10.0 32-bit. Both times the required changes were hard to find, and different!

      I've never succeeded with 5.10.1 32 or 64-bit. Though I admit I haven't tried too hard. Perhaps that's the point.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      I was able to locate the SDK from another download site and ran the setenv command suggested by Rob. Is this all that is needed to get up and running with building Perl modules? When I ran "perl MakeFile.PL" for the first time it complained I didn't have a C compiler on my path.
        Is this all that is needed to get up and running with building Perl modules?

        Should be all that's needed. You might want to take a look at what changes the running of that command makes to the path.

        I installed the compiler into C:\_64\Platform_SDK. I therefore have to run:
        C:\_64\Platform_SDK\SetEnv.cmd /XP64 /RETAIL
        If you've installed into a directory that contains spaces you may need to double-quote the path:
        "C:\path with spaces\SetEnv.cmd" /XP64 /RETAIL
        That prepends the following 3 directories to my path:
        C:\_64\Platform_SDK\Bin\Win64\x86\AMD64 C:\_64\Platform_SDK\Bin C:\_64\Platform_SDK\Bin\WinNT
        It's the first of those directories that houses the compiler (cl.exe). If it's the same for you, and the Makefile.PL can't find the compiler, then one suspects a Makefile.PL bug. Which module (and version number of that module) is it that produces this error ?

        Math-FFT-1.28 is a nice, easy extension to build just to check that everything is as it should be. Here's what I get for it:
        C:\_64\comp\Math-FFT-1.28>perl Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for Math::FFT C:\_64\comp\Math-FFT-1.28>nmake test Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. cp FFT.pm blib\lib\Math\FFT.pm C:\_64\perl1007\bin\perl.exe C:\_64\perl1007\lib\ExtUtils\xsub +pp -typem ap C:\_64\perl1007\lib\ExtUtils\typemap -typemap typemap FFT.xs > FFT +.xsc && C: \_64\perl1007\bin\perl.exe -MExtUtils::Command -e "mv" -- FFT.xsc FFT. +c cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:pr +ecise -DWI N32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIVE -D +USE_SITECU STOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_ +SYS -DUSE_ PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:precis +e -DVER SION=\"1.28\" -DXS_VERSION=\"1.28\" "-IC:\_64\perl1007\lib\CORE" F +FT.c FFT.c cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:pr +ecise -DWI N32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIVE -D +USE_SITECU STOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_ +SYS -DUSE_ PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:precis +e -DVER SION=\"1.28\" -DXS_VERSION=\"1.28\" "-IC:\_64\perl1007\lib\CORE" f +ft4g.c fft4g.c cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:pr +ecise -DWI N32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DWIN64 -DCONSERVATIVE -D +USE_SITECU STOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_ +SYS -DUSE_ PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -Ox -GL -Wp64 -fp:precis +e -DVER SION=\"1.28\" -DXS_VERSION=\"1.28\" "-IC:\_64\perl1007\lib\CORE" a +rrays.c arrays.c Running Mkbootstrap for Math::FFT () C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "chmod" -- + 644 FFT.b s C:\_64\perl1007\bin\perl.exe -MExtUtils::Mksymlists -e "Mksym +lists('NAM E'=>\"Math::FFT\", 'DLBASE' => 'FFT', 'DL_FUNCS' => { }, 'FUNCLIST' = +> [], 'IMP ORTS' => { }, 'DL_VARS' => []);" link -out:blib\arch\auto\Math\FFT\FFT.dll -dll -nologo -nodefa +ultlib -de bug -opt:ref,icf -ltcg -libpath:"C:\_64\perl1007\lib\CORE" -machine: +AMD64 FFT. obj fft4g.obj arrays.obj C:\_64\perl1007\lib\CORE\perl510.lib oldnam +es.lib ker nel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib + shell32.l ib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib wi +nmm.lib v ersion.lib odbc32.lib odbccp32.lib comctl32.lib bufferoverflowU.lib ms +vcrt.lib - def:FFT.def Creating library blib\arch\auto\Math\FFT\FFT.lib and object blib\ar +ch\auto\Ma th\FFT\FFT.exp Generating code c:\_64\comp\math-fft-1.28\arrays.c(363) : warning C4715: 'pack2D' : no +t all cont rol paths return a value c:\_64\comp\math-fft-1.28\arrays.c(200) : warning C4715: 'pack1D' : no +t all cont rol paths return a value Finished generating code if exist blib\arch\auto\Math\FFT\FFT.dll.manifest mt -nologo - +manifest b lib\arch\auto\Math\FFT\FFT.dll.manifest -outputresource:blib\arch\auto +\Math\FFT\ FFT.dll;2 if exist blib\arch\auto\Math\FFT\FFT.dll.manifest del blib\arc +h\auto\Mat h\FFT\FFT.dll.manifest C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "chmod" -- + 755 blib\ arch\auto\Math\FFT\FFT.dll C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "cp" -- FF +T.bs blib\ arch\auto\Math\FFT\FFT.bs C:\_64\perl1007\bin\perl.exe -MExtUtils::Command -e "chmod" -- + 644 blib\ arch\auto\Math\FFT\FFT.bs C:\_64\perl1007\bin\perl.exe "-MExtUtils::Command::MM" "-e" "t +est_harnes s(0, 'blib\lib', 'blib\arch')" t/*.t t/apps.t ... ok t/fft.t .... ok t/stats.t .. ok All tests successful. Files=3, Tests=48, 2 wallclock secs ( 0.14 usr + 0.11 sys = 0.25 CP +U) Result: PASS
        Cheers,
        Rob
        When I ran "perl MakeFile.PL" for the first time it complained I didn't have a C compiler on my path.

        Could you give the exact error message you get. I suspect that this may be due to a broken test in EU::MM that looks for an executable named 'cl' rather than 'cl.exe'.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.