|
このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
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.
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.
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.
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.
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.
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.
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.