home *** CD-ROM | disk | FTP | other *** search
- <HTML>
- <HEAD>
- <TITLE>README.hpux - Perl version 5 on Hewlett-Packard Unix systems</TITLE>
- <LINK REL="stylesheet" HREF="../../Active.css" TYPE="text/css">
- <LINK REV="made" HREF="mailto:">
- </HEAD>
-
- <BODY>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> README.hpux - Perl version 5 on Hewlett-Packard Unix systems</P></STRONG>
- </TD></TR>
- </TABLE>
-
- <A NAME="__index__"></A>
- <!-- INDEX BEGIN -->
-
- <UL>
-
- <LI><A HREF="#name">NAME</A></LI>
- <LI><A HREF="#description">DESCRIPTION</A></LI>
- <UL>
-
- <LI><A HREF="#compiling perl 5 on hpux">Compiling Perl 5 on HP-UX</A></LI>
- <LI><A HREF="#parisc">PA-RISC</A></LI>
- <LI><A HREF="#parisc 1.0">PA-RISC 1.0</A></LI>
- <LI><A HREF="#parisc 1.1">PA-RISC 1.1</A></LI>
- <LI><A HREF="#parisc 2.0">PA-RISC 2.0</A></LI>
- <LI><A HREF="#portability between parisc versions">Portability Between PA-RISC Versions</A></LI>
- <LI><A HREF="#building dynamic extensions on hpux">Building Dynamic Extensions on HP-UX</A></LI>
- <LI><A HREF="#the hp ansi c compiler">The HP ANSI C Compiler</A></LI>
- <LI><A HREF="#using large files with perl">Using Large Files with Perl</A></LI>
- <LI><A HREF="#threaded perl">Threaded Perl</A></LI>
- <LI><A HREF="#64bit perl">64-bit Perl</A></LI>
- <LI><A HREF="#gdbm and threads">GDBM and Threads</A></LI>
- <LI><A HREF="#nfs filesystems and utime(2)">NFS filesystems and <A HREF="../../lib/Pod/perlfunc.html#item_utime"><CODE>utime(2)</CODE></A></A></LI>
- </UL>
-
- <LI><A HREF="#author">AUTHOR</A></LI>
- <LI><A HREF="#date">DATE</A></LI>
- </UL>
- <!-- INDEX END -->
-
- <HR>
- <P>
- <H1><A NAME="name">NAME</A></H1>
- <P>README.hpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems</P>
- <P>
- <HR>
- <H1><A NAME="description">DESCRIPTION</A></H1>
- <P>This document describes various features of HP's Unix operating system (HP-UX)
- that will affect how Perl version 5 (hereafter just Perl) is compiled and/or
- runs.</P>
- <P>
- <H2><A NAME="compiling perl 5 on hpux">Compiling Perl 5 on HP-UX</A></H2>
- <P>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.</P>
- <P>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,
- but also can take advantage of features listed later that require the use
- of HP compiler-specific command-line flags.</P>
- <P>If you decide to use gcc, make sure your installation is recent and complete,
- and be sure to read the Perl README file for more gcc-specific details.</P>
- <P>
- <H2><A NAME="parisc">PA-RISC</A></H2>
- <P>HP's current Unix systems run on its own Precision Architecture (PA-RISC) chip.
- HP-UX used to run on the Motorola MC68000 family of chips, but any machine with
- this chip in it is quite obsolete and this document will not attempt to address
- issues for compiling Perl on the Motorola chipset.</P>
- <P>The most recent version of PA-RISC at the time of this document's last update
- is 2.0.</P>
- <P>
- <H2><A NAME="parisc 1.0">PA-RISC 1.0</A></H2>
- <P>The original version of PA-RISC, HP no longer sells any system with this chip.</P>
- <P>The following systems contain PA-RISC 1.0 chips:</P>
- <PRE>
- 600, 635, 645, 800, 808, 815, 822, 825, 832, 834, 835, 840,
- 842, 845, 850, 852, 855, 860, 865, 870, 890</PRE>
- <P>
- <H2><A NAME="parisc 1.1">PA-RISC 1.1</A></H2>
- <P>An upgrade to the PA-RISC design, it shipped for many years in many different
- system.</P>
- <P>The following systems contain with PA-RISC 1.1 chips:</P>
- <PRE>
- 705, 710, 712, 715, 720, 722, 725, 728, 730, 735, 743, 745, 747, 750,
- 755, 770, 807S, 817S, 827S, 837S, 847S, 857S, 867S, 877S, 887S, 897S,
- D200, D210, D220, D230, D250, D260, D310, D320, D330, D350, D360, D400,
- E25, E35, E45, E55, F10, F20, F30, G30, G40, G50, G60, G70, H30, H40,
- H50, H60, H70, I30, I40, I50, I60, I70, K100, K200, K210, K220, K400,
- K410, K420, T500, T520</PRE>
- <P>
- <H2><A NAME="parisc 2.0">PA-RISC 2.0</A></H2>
- <P>The most recent upgrade to the PA-RISC design, it added support for 64-bit
- integer data.</P>
- <P>The following systems contain PA-RISC 2.0 chips (this is very likely to be
- out of date):</P>
- <PRE>
- D270, D280, D370, D380, K250, K260, K370, K380, K450, K460, K570, K580,
- T600, V2200</PRE>
- <P>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.</P>
- <P>
- <H2><A NAME="portability between parisc versions">Portability Between PA-RISC Versions</A></H2>
- <P>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 flags +DAportable and +DS32
- should be used.</P>
- <P>It is no longer possible to compile PA-RISC 1.0 executables on either the
- PA-RISC 1.1 or 2.0 platforms.</P>
- <P>
- <H2><A NAME="building dynamic extensions on hpux">Building Dynamic Extensions on HP-UX</A></H2>
- <P>HP-UX supports dynamically loadable libraries (shared libraries).
- Shared libraries end with the suffix .sl.</P>
- <P>Shared libraries created on a platform using a particular PA-RISC version
- are not usable on platforms using an earlier PA-RISC version by default.
- However, this backwards compatibility may be enabled using the same
- +DAportable compiler flag (with the same PA-RISC 1.0 caveat mentioned above).</P>
- <P>To create a shared library, the following steps must be performed:</P>
- <PRE>
- 1. Compile source modules with +z or +Z flag to create a .o module
- which contains Position-Independent Code (PIC). The linker will
- tell you in the next step if +Z was needed.</PRE>
- <PRE>
- 2. Link the shared library using the -b flag. If the code calls
- any functions in other system libraries (e.g., libm), it must
- be included on this line.</PRE>
- <P>(Note that these steps are usually handled automatically by the extension's
- Makefile).</P>
- <P>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.</P>
- <P>You may create a shared library that referers 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,
- but it is not linked into the shared library.
- Instead, it is loaded when the main shared library is loaded.</P>
- <P>If the referred library is an archive library, then it is treated as a
- simple collection of .o modules (all of which must contain PIC). These
- modules are then linked into the shared library.</P>
- <P>Note that it is okay to create a library which contains a dependent library
- that is already linked into perl.</P>
- <P>It is no longer possible to link PA-RISC 1.0 shared libraries.</P>
- <P>
- <H2><A NAME="the hp ansi c compiler">The HP ANSI C Compiler</A></H2>
- <P>When using this compiler to build Perl, you should make sure that
- the flag -Aa is added to the cpprun and cppstdin variables in the
- config.sh file.</P>
- <P>
- <H2><A NAME="using large files with perl">Using Large Files with Perl</A></H2>
- <P>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.
- Of these methods,
- the best method for Perl is to compile using the -D_FILE_OFFSET_BITS=64
- compiler flag.
- This causes Perl to be compiled using structures and functions in which
- these are 64 bits wide, rather than 32 bits wide.</P>
- <P>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
- (the offset arguments in seek and tell are implemented as type long).
- The second is that any extension which calls any file-manipulating C function
- will need to be recompiled using the above-mentioned -D_FILE_OFFSET_BITS=64
- flag.
- 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</P>
- <P>
- <H2><A NAME="threaded perl">Threaded Perl</A></H2>
- <P>It is impossible to compile a version of threaded Perl on any version of
- HP-UX before 10.30, and it is strongly suggested that you be running on
- HP-UX 11.00 at least.</P>
- <P>To compile Perl with thread, add -Dusethreads to the arguments of Configure.
- 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.</P>
- <P>As of the date of this document, Perl threads are not fully supported on HP-UX.</P>
- <P>
- <H2><A NAME="64bit perl">64-bit Perl</A></H2>
- <P>Beginning with HP-UX 11.00, programs compiled under HP-UX can take advantage
- of the LP64 programming environment (LP64 means Longs and Pointers are 64 bits
- wide).</P>
- <P>Work is being performed on Perl to make it 64-bit compliant on all versions
- of Unix. Once this is complete, scalar variables will be able to hold
- numbers larger than 2^32 with complete precision.</P>
- <P>As of the date of this document, Perl is not 64-bit compliant on HP-UX.</P>
- <P>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.</P>
- <P>On the brighter side, the large file problem goes away, as longs are now
- 64 bits wide.</P>
- <P>
- <H2><A NAME="gdbm and threads">GDBM and Threads</A></H2>
- <P>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.</P>
- <P>
- <H2><A NAME="nfs filesystems and utime(2)">NFS filesystems and <A HREF="../../lib/Pod/perlfunc.html#item_utime"><CODE>utime(2)</CODE></A></A></H2>
- <P>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.</P>
- <P>
- <HR>
- <H1><A NAME="author">AUTHOR</A></H1>
- <P>Jeff Okamoto <<A HREF="mailto:okamoto@corp.hp.com">okamoto@corp.hp.com</A>></P>
- <P>With much assistance regarding shared libraries from Marc Sabatella.</P>
- <P>
- <HR>
- <H1><A NAME="date">DATE</A></H1>
- <P>Version 0.2: 1999/03/01</P>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> README.hpux - Perl version 5 on Hewlett-Packard Unix systems</P></STRONG>
- </TD></TR>
- </TABLE>
-
- </BODY>
-
- </HTML>
-