The VMSPerl Installation FAQ

While by no means a comprehensive FAQ, this is a short list of some of the more frequently asked questions about building Perl on VMS. If there are more, then please send me some mail and I'll add them to the list.

Questions are tagged with a version number--that's the first version of perl the problem crops up in. It may or may not exist in later versions.


Q. My C compiler's yelling during the build with %CC-W-BADANSIALIAS errors and it kills things

A.Ah, you've got Dec C (or, rather, Compaq C) version 6.2 or greater, huh? This is a known problem, and should be fixed for perl 5.6. Define the symbol CC to me:

CC := CC/NOANSI_ALIAS

and you should be fine.


Q. (5.005) The perl build gets through the first set of compiles and link, then dies with this error:

MCR Sys$Disk:[]miniperl.exe "-I[.lib]" ConfigPM.
Can't locate lib/Config.pm in @INC (@INC contains: lib lib perl_root:[lib.VMS_AXP.5_005] perl_root:[lib] perl_root:[lib.site_perl.VMS_AXP] perl_root:[lib.site_perl] .) at configpm. line 400.
%RMS-E-FNF, file not found

A.You've got a logical lib defined, and it's getting in the way. Undefine it and you should be OK


Q. (5.004) I'm on an Alpha. When I type MMS/DESCRIP=[.VMS], the linker complains about not being able to find VAXCRTL. I don't have one. Why?

A.When building Perl on an Alpha, you must define the macro __AXP__, like this: MMS/DESCRIP=[.VMS]/MACRO=("__AXP__=1"). If you're using MMK you don't need to do this, as MMK defines __AXP__ for you when building on an Alpha.


Q.Once I start the build, MMS starts complaining loudly about files not being found.

A.Odds are, you're in your directory too deep. The base Perl build created directories 5 and 6 levels deep. You can only be 8 levels deep in a directory before things start being not found. The exact error you get will depend on how deep you started, but the easy way to fix it is:

$ DEFINE/trans=(conc,term) PERLSRC mydev:[dir.dir.dir.dir.root_of_perl_source.](Note the trailing period, it's important)

$ set default perlsrc:[000000]



Then redo the build.


Q.(5.004) Perl built OK with the SOCKETSHR library, but when I go to test it, all the socket and network tests fail

A.You've likely forgotten to install the PROTOCOLS and SERVICES files from the SOCKETSHR distribution. Install them and try again.


Q.(5.004) I'm on a VAX with Dec C. When I compile with SOCKETSHR sockets, Dec C complains that MINIPERLMAIN.C is empty. This doesn't happen when I compile without sockets. What's up?

A.You've probably got a version of the SOCKETSHR library compiled with VAX C. That doesn't mix well with Dec C programs (like, say, Perl). You can either compile Perl with VAX C (which will result in a much slower Perl), or grab the source for SOCKETSHR and recompile it with Dec C.


Q.(5.004) I'm on a VAX. When I try to compile Perl, I get type mismatch errors that look like this:

CC /Define=(DEBUGGING)/Include=[]/Object=.obj/NoList MINIPERLMAIN.C

typedef __off_t off_t;

....................^

%CC-E-NOLINKAGE, In this declaration, "off_t" has no linkage and has a prior declaration in this scope at line 10 in SYS$COMMON:[SYSLIB]STAT.H;1.

At line number 144 in UNIXIO.

What's going on?

A.You have Dec C as your default compiler, but you also have VAX C installed, and you didn't add a /Macro=("decc=1") to the MMK/MMS line. Dec C is picking up some VAX C header files, which are messing you up.


Q.(5.004) When I try compiling Perl with Vax C, I get this error:

Insecure dependency in eval while running with -T switch at [.lib.extutils]

A. This is a known problem with Vax C and Perl 5.004_01 and up. Edit [.vms]VMS.C (Not the VMS.C at the top of the Perl source tree, but the VMS.C in the VMS subdirectory). In the routine Vms_image_init, you'll see a declaration like this:

union prvdef iprv;

change it to

unsigned long int iprv[2] = {0,0};

and remake.


Q.(5.004) The Perl build went OK, but when I ran the tests, it hung on io_xs! What's going on?

A. Are you using Dec C 5.6 or higher with the backport library enabled? (You'll have the DECC$CRTLMAP and LNK$LIBRARY logicals defined if you do) Well, don't do that! For a variety of reasons, Perl can't be compiled with the Dec C backport library. The reasons are a bit too complex to go into here (send some e-mail if you're curious as to the reasons), but it just doesn't work. Deassign those two logicals, rebuild, and life should be much better.

We're hoping to lift this particular restriction, but it's a bit tricky.


Q.I was building Perl, and the build was acting strangely. It kept looking for .PM files in the root of the source tree, and when I moved them there, the build threw this error: Can't cd to lib: invalid argument. What's up?

A. You've got a logical LIB defined. This throws off the build something fierce. Undefine it and things should go much better.


Q. (5.004) The build worked, but the io_udp test failed. Why?

A. Are you using SOCKETSHR sockets (SOCKETS=1 or SOCKETSHR_SOCKETS=1 during the build) and Multinet? UDP sockets don't work right with the SOCKETSHR/Multinet combination. Try rebuilding with DECC_SOCKETS instead, if you can.


Q. (5.004) The build was going OK until it threw this error:
Unable to find a perl 5 (by these names: dra001:[perl5_004_04]miniperl.exe;2 miniperl perl perl5 perl5.00404, in these dirs: [--] perl_root:[000000])
Running '0 "-I[--.lib]" [--.lib.ExtUtils]xsubpp -v' exits with status 229520 at ../../lib/ExtUtils/MM_VMS.pm line 1028.
Running '0 [--.lib.ExtUtils]xsubpp temp000' exits with status 229520 at ../../lib/ExtUtils/MM_VMS.pm line 1058.

What's going on?

A. You probably don't have proper access to the perl directory tree. This is normally caused when you untar the distribution someplace and the file protection values don't give you access to the files in the directories. (No, privs don't help in this case. It's a bug on the list to fix) Change the file ownership or protections so that you do have access.


Q. (5.004) The build was going OK until it threw this error:
    for (cp1=template,cp2=lcres; *cp1 && cp2 <= lcend + sizeof lcend;
................................................^
%CC-W-UNINIT1, The scalar variable "lcend" is fetched but not initialized.
at line number 2343 in file SRC:[PERL5_004_04]VMS.C;1

What's going on?

A. You've got Dec C 5.7 or later, I bet. This is a bug in the VMS piece of perl that Dec C 5.7 notices and rightly complains about. Edit [.vms]vms.c and change line 2343 from

    for (cp1=template,cp2=lcres; *cp1 && cp2 <= lcend + sizeof lcend;

to

    for (cp1=template,cp2=lcres; *cp1 && cp2 <= lcres+ sizeof lcres;

and redo the build. You should be fine.


Last Change 23-February-2000
Questions or Comments?
Write the webmaster