X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=README.hpux;h=06b39b99d1bcd2f923503e54777d5d49eca6853d;hb=9ec58fb7ec19e41fee2f2944750a45a2a85e4a03;hp=1fda51a76daa075730ebc2480b65e904f33fa47e;hpb=f2a260d65825b8794898c1b0c7b02230f7d5398e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/README.hpux b/README.hpux index 1fda51a..06b39b9 100644 --- a/README.hpux +++ b/README.hpux @@ -4,7 +4,7 @@ specially designed to be readable as is. =head1 NAME -perlhpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems +README.hpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems =head1 DESCRIPTION @@ -14,9 +14,9 @@ runs. =head2 Compiling Perl 5 on HP-UX -When compiling Perl, the use of an ANSI C compiler is highly recommended. -The C compiler that ships with all HP-UX systems is a K&R compiler that -should only be used to build new kernels. +An ANSI C compiler is required to build Perl. The C compiler that ships +with all HP-UX systems is a K&R compiler that can only be used to build +new kernels. Perl can be compiled with either HP's ANSI C compiler or with gcc. The former is recommended, as not only can it compile Perl with no difficulty, @@ -65,20 +65,29 @@ The following systems contain with PA-RISC 1.1 chips: The most recent upgrade to the PA-RISC design, it added support for 64-bit integer data. -The following systems contain PA-RISC 2.0 chips: +The following systems contain PA-RISC 2.0 chips (this is very likely to be +out of date): D270, D280, D370, D380, K250, K260, K370, K380, K450, K460, K570, K580, - T600, V2200 + T600, V2200, N-class + +A complete list of models at the time the OS was built is in the file +/opt/langtools/lib/sched.models. +The first column corresponds to the output of the "uname -m" command +(without the leading "9000/"). +The second column is the PA-RISC version +and the third column is the exact chip type used. =head2 Portability Between PA-RISC Versions An executable compiled on a PA-RISC 2.0 platform will not execute on a PA-RISC 1.1 platform, even if they are running the same version of HP-UX. If you are building Perl on a PA-RISC 2.0 platform and want that Perl to -to also run on a PA-RISC 1.1, the compiler flag +DAportable should be used. +to also run on a PA-RISC 1.1, the compiler flags +DAportable and +DS32 +should be used. It is no longer possible to compile PA-RISC 1.0 executables on either the -PA-RISC 1.1 and 2.0 platforms. +PA-RISC 1.1 or 2.0 platforms. =head2 Building Dynamic Extensions on HP-UX @@ -107,7 +116,7 @@ If these dependent libraries are not listed at shared library creation time, you will get fatal "Unresolved symbol" errors at run time when the library is loaded. -You may create a shared library that referers to another library, which +You may create a shared library that refers to another library, which may be either an archive library or a shared library. If it is a shared library, this is called a "dependent library". The dependent library's name is recorded in the main shared library, @@ -131,21 +140,34 @@ config.sh file. =head2 Using Large Files with Perl -Beginning with HP-UX version 10.10, files larger than 2GB (2^31) may be +Beginning with HP-UX version 10.20, files larger than 2GB (2^31) may be created and manipulated. Three separate methods of doing this are available. -The best method is to compile Perl using the -D_FILE_OFFSET_BITS=64 -compiler flag. +Of these methods, +the best method for Perl is to compile using the -Duselargefiles +flag to Configure. +This will cause the -D_FILE_OFFSET_BITS=64 compiler flag to be used +when building Perl. This causes Perl to be compiled using structures and functions in which these are 64 bits wide, rather than 32 bits wide. - -There are only two drawbacks to this approach: -the first is that the seek and tell functions (both the builtin version -and the POSIX module's version) will not correctly -function for these large files -(POSIX declared the offset arguments in seek and tell as being of type long). -The second is that any extension which calls any file-manipulating C function -will need to be recompiled. +(Note that this will only work with HP's ANSI C compiler. +If you want to compile Perl using gcc, you will have to get a version +of the compiler that support 64-bit operations.) + +The one drawback to this approach is that +any extension which calls any file-manipulating C function +will need to be recompiled +(just follow the usual "perl Makefile.PL; make; make test; make install" +procedure). +The list of functions that will need to recompiled is: +creat, fgetpos, fopen, +freopen, fsetpos, fstat, +fstatvfs, fstatvfsdev, ftruncate, +ftw, lockf, lseek, +lstat, mmap, nftw, +open, prealloc, stat, +statvfs, statvfsdev, tmpfile, +truncate, getrlimit, setrlimit =head2 Threaded Perl @@ -158,7 +180,8 @@ Ensure that the -D_POSIX_C_SOURCE=199506L compiler flag is automatically added to the list of flags. Also make sure that -lpthread is listed before -lc in the list of libraries to link Perl with. -As of the date of this document, Perl threads are not fully supported on HP-UX. +As of the date of this document, +Perl threads are not fully supported on HP-UX. =head2 64-bit Perl @@ -173,12 +196,38 @@ numbers larger than 2^32 with complete precision. As of the date of this document, Perl is not 64-bit compliant on HP-UX. Should a user wish to experiment with compiling Perl in the LP64 environment, -the following steps must be taken: libraries must be searched only within -/lib/pa20_64, the compiler flag +DD64 must be used, and the C library is -now located at /lib/pa20_64/libc.sl. +use the -Duse64bitall flag to Configure. +This will force Perl to be compiled in a pure LP64 environment (via the ++DD64 flag). + +You can also use the -Duse64bitint flag to Configure. +Although there are some minor differences between compiling Perl with +this flag versus the -Duse64bitall flag, +they should not be noticeable from a Perl user's perspective. + +In both cases, it is strongly recommended that you use these flags +when you run Configure. +If you do not use them, but answer the questions about 64-bit numbers +when Configure asks you, +you may get a configuration that cannot be compiled, or that does +not function as expected. + +(Note that these Configure flags will only work with HP's ANSI C compiler. +If you want to compile Perl using gcc, you will have to get a version +of the compiler that support 64-bit operations.) + +=head2 GDBM and Threads + +If you attempt to compile Perl with threads on an 11.X system and also link +in the GDBM library, then Perl will immediately core dump when it starts up. +The only workaround at this point is to relink the GDBM library under 11.X, +then relink it into Perl. + +=head2 NFS filesystems and utime(2) -On the brighter side, the large file problem goes away, as longs are now -64 bits wide. +If you are compiling Perl on a remotely-mounted NFS filesystem, the test +io/fs.t may fail on test #18. +This appears to be a bug in HP-UX and no fix is currently available. =head1 AUTHOR @@ -188,6 +237,6 @@ With much assistance regarding shared libraries from Marc Sabatella. =head1 DATE -Version 0.1: 1999/2/22 +Version 0.3: 2000/03/31 =cut