iBradleyAllen has asked for the wisdom of the Perl Monks concerning the following question:

Hi all, Ive finally decided to add Perl to my PC (Vista 64b) and got the source code to compile from perl.org latest.tar.latest.perl-5.10.1 Ive done command line compiles before but could not find detailed instructions on how to compile using the Microsoft compiler. Some of the steps taken so far, 1. There was a makefile.make, it said change as needed, I picked VC9.0, although Ive got several versions of VC; 2. Did nmake and it says its up to date. 3. In the main Readme file, one instruction step found appeared to be a linux command to set params then run make Test, make Install. 4. Well just to try it, did nmake test then nmake install? (in a VS command prompt)and the compiler starts, runs a bit in each case then errors out. 5. I had run the prerequisite Set Environment Path using the Win32 sub directory of the Perl source download. 6. Had tried what i thought were obvious steps to compile, after a couple hours of this, decided to ask the experts. My question is where are instructions on how to compile Perl to run on this windows vista 64b pc? Or I humbly ask for an enlighted explanation thereof. thanks

Replies are listed 'Best First'.
Re: How to Compile v10 in Vista 64b ?
by BrowserUk (Patriarch) on Mar 26, 2010 at 18:29 UTC
    4. Well just to try it, did nmake test then nmake install? (in a VS command prompt)and the compiler starts, runs a bit in each case then errors out.

    What are the errors?


    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.

      C:\Users\B\Downloads\latest.tar\latest\perl-5.10.1\win32>"c:\Program Files (x 86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat" Setting environment for using Microsoft Visual Studio 2008 x86 tools.

      C:\Users\B\Downloads\latest.tar\latest\perl-5.10.1\win32>nmake install

      Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. link -subsystem:console -out:..\generate_uudmap.exe @C:\Users\ +B\AppDa ta\Local\Temp\nmBA36.tmp LINK : fatal error LNK1181: cannot open input file 'bufferoverflowU.li +b' NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual S +tudio 9.0\ VC\BIN\link.EXE"' : return code '0x49d' Stop.

      C:\Users\B\Downloads\latest.tar\latest\perl-5.10.1\win32>nmake test

      Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. link -subsystem:console -out:..\generate_uudmap.exe @C:\Users\ +B\AppDa ta\Local\Temp\nmC9A1.tmp LINK : fatal error LNK1181: cannot open input file 'bufferoverflowU.li +b' NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual S +tudio 9.0\ VC\BIN\link.EXE"' : return code '0x49d' Stop.

      C:\Users\B\Downloads\latest.tar\latest\perl-5.10.1\win32>nmake makefile

      Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved.

      'makefile' is up-to-date

      C:\Users\B\Downloads\latest.tar\latest\perl-5.10.1\win32>

        Looks like you have a missing library called "bufferoverflowU". This node has some relevant details and potential solutions.

        Just comment out the last 3 lines below in the makefile. This was required for earlier versions if the compiler, but not for VC++ v9:

        # The 64 bit Platform SDK compilers contain a runtime library that doe +sn't # include the buffer overrun verification code used by the /GS switch. # Since the code links against libraries that are compiled with /GS, t +his # "security cookie verification" must be included via bufferoverlow.li +b. !IF "$(WIN64)" == "define" LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib !ENDIF

        A real fix would be to make it conditional upon both platform (64-bit) and compiler CCTYPE.


        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.

        This is what the makefile.mk has in regards to the error

        # The 64 bit Platform SDK compilers contain a runtime library that doesn't
        # include the buffer overrun verification code used by the /GS switch.
        # Since the code links against libraries that are compiled with /GS, this
        # "security cookie verification" must be included via bufferoverlow.lib. .IF "$(WIN64)" == "define" LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib .ENDIF



        There was no bufferoverflowU.lib found in the download, will look to download the 64b SDK? "

      Why not just strawberry perl?

        Why not just strawberry perl?

        Why not just what Strawberry Perl? Scrap it? Abandon it? Consign it to the bit bucket? :) I guess you mean, why not use Strawberry Perl.

        So, let me turn the question around. Why use Strawberry Perl? How would it address the OPs problem?


        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.
Re: How to Compile v10 in Vista 64b ?
by syphilis (Archbishop) on Mar 27, 2010 at 08:09 UTC
    I'm a bit confused by some things in this thread. Try unpacking the source afresh into a new directory - I'll assume that directory is C:/X.
    Then 'cd' to C:/X/perl-5.10.1/win32. Since you're (apparently) using a version of MSVC++ that doesn't need or have bufferoverflowU.lib, open the file called 'Makefile' (not 'makefile.mk' - that's for use with 'dmake') and remove (or comment out) the following section of code:
    !IF "$(WIN64)" == "define" LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib !ENDIF
    If you don't want to install into C:/perl, you'll also want to edit the INST_DRV and/or INST_TOP entries near the beginning of 'Makefile'.
    Then run 'nmake' (which will use 'Makefile', not 'makefile.mk'). That should set in motion a process that takes about 10 minutes to complete. If it runs to successful completion, it should finish with a message something like Everything is up to date. 'nmake test' to run test suite. If it doesn't complete successfully, then we need to see the final error messages.

    If 'nmake' succeeds, run 'nmake test', then 'nmake install'. (If there are failures running 'nmake test' you might want to defer the running of 'nmake install' until they've been sorted out.)

    Cheers,
    Rob