http://www.perlmonks.org?node_id=850043
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi all, I'm a Perl newbie, and have been searching for the answer to this, and haven't found it. I have found many other people with the same problem, but no solution yet...so I ask the monks. I am using nmake.exe (nmake15.exe), when I run it on both my windows XP machines I get the same error.

C:\Perl\x\Parse-Binary-0.08>nmake Microsoft (R) Program Maintenance Utility Version 1.50 Copyright (c) Microsoft Corp 1988-94. All rights reserved. syntax error at -e line 1, next char ) Missing right curly or square bracket at -e line 1, at end of line Execution of -e aborted due to compilation errors. NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code + '0xff' Stop.

Any ideas to why this might be...or how to fix it? Thanks! Nathan

Replies are listed 'Best First'.
Re: Can't run nmake
by BrowserUk (Pope) on Jul 17, 2010 at 01:17 UTC

    nmake.exe v1.50 is so ancient--a current-ish version is Microsoft (R) Program Maintenance Utility Version 9.00.21022.08-- that it is little wonder that it doesn't work for you under XP.

    It is akin to trying to update your Twitter account with this.

    Some (probably vehemently anti-MS) person thought that adding an automated download of this ancient tool, to the CPAN shell was a cool move. Worse, they even do it if you have a modern version of nmake correctly installed on your machine.


    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.

      the current version is Microsoft (R) Program Maintenance Utility Version 9.00.21022.08

      I have Microsoft (R) Program Maintenance Utility Version 10.00.30319.01

        Geez! Acceptable now?

      I don't know about the anti-MS motivation.

      When MS changed from 16-Bit DOS to 32-Bit Windows [95] the then current nmake 1.4 (included in MSVC 1.5) exposed a massive bug in the new 32-Bit environment.

      As a consequence MS published a bugfix (KB132084) which offered the fix (nmake 1.5) as a freely available download for that program, which was otherwise only available as part of the commercial MSVC.

      Also in later years nmake was only available as part of the payware compiler. When did MS start to give compilers away for free (aka Express editions ?)

      So at the time of nmake 1.5 the (KB) knowledgebase page of MS with its few KB(kilobytes) download of a free nmake was a godsend for the Perl people, who wanted to ease the life of Windows users.

      Update: make explicit KB = (ms) knowledge base and KB = K byte

        When did MS start to give compilers away for free (aka Express editions ?)

        I don't have exact time-lines, nor can I think of any easy way of obtaining them, but I think that you're asking the wrong question. The question should be: "When was the horribly broken, automated download of nmake15 added to cpan.pm?"

        On the basis of my memory only, but I am very confident that I had been using one of the MS free compilers for building XS extensions for a year or two before I installed a new version of (AS) Perl that suddenly decided to pull and use nmake15 each time I tried to use the CPAN shell. Despite that I had a fully working setup on my system, and nmake.exe was availble via my path; just because it "couldn't find it" by looking in an arbitrary list o wrong places.

        My from-memory guess is that this happened around 5.8.6 or later.


        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.

      Thanks for the help...and the phone was a nice touch! LOL. Forgive my ignorance, but where do I find this and how would I use it? Is it a nmake.exe that I need to move to the perl module directory? I am having trouble locating it. Thanks.

        Is it a nmake.exe that I need to move to the perl module directory?

        nmake.exe is being found. It is nmake.exe that is printing:

        Microsoft (R) Program Maintenance Utility Version 1.50 Copyright (c) Microsoft Corp 1988-94. All rights reserved.

        The problem is that it doesn't understand the contents of the makefile. Probably because it uses syntax that hadn't beem invented when the v1.50 was released.

        To get a later version of nmake.exe, you will have to install one of MS C++ compilers. These can be downloaded for free from the MS website. Try googling for visual C++ express download


        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: Can't run nmake
by chuckbutler (Prior) on Jul 17, 2010 at 03:56 UTC

    Taking a little different tack, you may what to see what make program your perl MakeFile.pl has been set:

    C:\Users\chuckbutler>perl -V:make -V:cc -V:sh ~~Output~~ make='C:\Perl\site\bin\dmake.exe'; Set up gcc environment - 3.4.5 (mingw-vista special r3) cc='C:/MinGW/bin/gcc.exe'; sh='cmd /x /c';

    I am using ActiveState 5.10.1 on Vista 64 on this machine with dmake and MinGW.

    So, if Config{make} does not match the make util that you are using, it will not work.

    Good luck. -c

      Thanks for the help. Apparently my make program is dmake.

      perl -V:make -V:cc -V:sh Set up gcc environment - 3.4.5 (mingw-vista special r3) make='C:\Perl\site\bin\dmake.exe'; cc='C:/Perl/site/bin/gcc.exe'; sh='cmd /x /c';

      Still unsure as to what I will have to do to be able to manually install the modules though. Thanks for trying.

        Never mind. It is probably just

        dmake dmake test dmake install
Re: Can't run nmake
by Anonymous Monk on Jul 17, 2010 at 03:41 UTC
    What does perl -V:make print?

      It prints:

      C:\>perl -V:make Set up gcc environment - 3.4.5 (mingw-vista special r3) make='C:\Perl\site\bin\dmake.exe';
        So why are you trying to use nmake, use dmake like you're supposed to