[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/pod/ -> perlhpux.pod (source)

   1  If you read this file _as_is_, just ignore the funny characters you see.
   2  It is written in the POD format (see pod/perlpod.pod) which is specially
   3  designed to be readable as is.
   4  
   5  =head1 NAME
   6  
   7  README.hpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems
   8  
   9  =head1 DESCRIPTION
  10  
  11  This document describes various features of HP's Unix operating system
  12  (HP-UX) that will affect how Perl version 5 (hereafter just Perl) is
  13  compiled and/or runs.
  14  
  15  =head2 Using perl as shipped with HP-UX
  16  
  17  Application release September 2001, HP-UX 11.00 is the first to ship
  18  with Perl. By the time it was perl-5.6.1 in /opt/perl. The first
  19  occurrence is on CD 5012-7954 and can be installed using
  20  
  21    swinstall -s /cdrom perl
  22  
  23  assuming you have mounted that CD on /cdrom. In this version the
  24  following modules were installed:
  25  
  26    ActivePerl::DocTools-0.04   HTML::Parser-3.19   XML::DOM-1.25
  27    Archive::Tar-0.072          HTML::Tagset-3.03   XML::Parser-2.27
  28    Compress::Zlib-1.08         MIME::Base64-2.11   XML::Simple-1.05
  29    Convert::ASN1-0.10          Net-1.07            XML::XPath-1.09
  30    Digest::MD5-2.11            PPM-2.1.5           XML::XSLT-0.32
  31    File::CounterFile-0.12      SOAP::Lite-0.46     libwww-perl-5.51
  32    Font::AFM-1.18              Storable-1.011      libxml-perl-0.07
  33    HTML-Tree-3.11              URI-1.11            perl-ldap-0.23
  34  
  35  That build was a portable hppa-1.1 multithread build that supports large
  36  files compiled with gcc-2.9-hppa-991112.
  37  
  38  If you perform a new installation, then (a newer) Perl will be installed
  39  automatically.  Preinstalled HP-UX systems now slao have more recent versions
  40  of Perl and the updated modules.
  41  
  42  The official (threaded) builds from HP, as they are shipped on the
  43  Application DVD/CD's are available on
  44  http://www.software.hp.com/cgi-bin/swdepot_parser.cgi/cgi/displayProductInfo.pl?productNumber=PERL
  45  for both PA-RISC and IPF (Itanium Processor Family). They are built
  46  with the HP ANSI-C compiler.
  47  
  48  =head2 Using perl from HP's porting centre
  49  
  50  HP porting centre tries very hard to keep up with customer demand and
  51  release updates from the Open Source community. Having precompiled
  52  Perl binaries available is obvious.
  53  
  54  The HP porting centres are limited in what systems they are allowed
  55  to port to and they usually choose the two most recent OS versions
  56  available. This means that at the moment of writing, there are only
  57  HP-UX 11.11 (pa-risc 2.0) and HP-UX 11.23 (Itanium 2) ports available
  58  on the porting centres.
  59  
  60  HP has asked the porting centre to move Open Source binaries
  61  from /opt to /usr/local, so binaries produced since the start
  62  of July 2002 are located in /usr/local.
  63  
  64  One of HP porting centres URL's is http://hpux.connect.org.uk/
  65  The port currently available is built with GNU gcc.
  66  
  67  =head2 Compiling Perl 5 on HP-UX
  68  
  69  When compiling Perl, you must use an ANSI C compiler.  The C compiler
  70  that ships with all HP-UX systems is a K&R compiler that should only be
  71  used to build new kernels.
  72  
  73  Perl can be compiled with either HP's ANSI C compiler or with gcc.  The
  74  former is recommended, as not only can it compile Perl with no
  75  difficulty, but also can take advantage of features listed later that
  76  require the use of HP compiler-specific command-line flags.
  77  
  78  If you decide to use gcc, make sure your installation is recent and
  79  complete, and be sure to read the Perl INSTALL file for more gcc-specific
  80  details.
  81  
  82  =head2 PA-RISC
  83  
  84  HP's HP9000 Unix systems run on HP's own Precision Architecture
  85  (PA-RISC) chip.  HP-UX used to run on the Motorola MC68000 family of
  86  chips, but any machine with this chip in it is quite obsolete and this
  87  document will not attempt to address issues for compiling Perl on the
  88  Motorola chipset.
  89  
  90  The most recent version of PA-RISC at the time of this document's last
  91  update is 2.0. HP PA-RISC systems are usually refered to with model
  92  description "HP 9000". The last CPU in this series is the PA-8900.
  93  Support for PA-RISC architectured machines officially ends as shown
  94  in the following table:
  95  
  96     PA-RISC End-of-Life Roadmap
  97   +--------+----------------+----------------+-----------------+
  98   | HP9000 | Superdome      | PA-8700        | Spring 2011     |
  99   | 4-128  |                | PA-8800/sx1000 | Summer 2012     |
 100   | cores  |                | PA-8900/sx1000 | 2014            |
 101   |        |                | PA-8900/sx2000 | 2015            |
 102   +--------+----------------+----------------+-----------------+
 103   | HP9000 | rp7410, rp8400 | PA-8700        | Spring 2011     |
 104   | 2-32   | rp7420, rp8420 | PA-8800/sx1000 | 2012            |
 105   | cores  | rp7440, rp8440 | PA-8900/sx1000 | Autumn 2013     |
 106   |        |                | PA-8900/sx2000 | 2015            |
 107   +--------+----------------+----------------+-----------------+
 108   | HP9000 | rp44x0         | PA-8700        | Spring 2011     |
 109   | 1-8    |                | PA-8800/rp44x0 | 2012            |
 110   | cores  |                | PA-8900/rp44x0 | 2014            |
 111   +--------+----------------+----------------+-----------------+
 112   | HP9000 | rp34x0         | PA-8700        | Spring 2011     |
 113   | 1-4    |                | PA-8800/rp34x0 | 2012            |
 114   | cores  |                | PA-8900/rp34x0 | 2014            |
 115   +--------+----------------+----------------+-----------------+
 116  
 117  A complete list of models at the time the OS was built is in the file
 118  /usr/sam/lib/mo/sched.models. The first column corresponds to the last
 119  part of the output of the "model" command.  The second column is the
 120  PA-RISC version and the third column is the exact chip type used.
 121  (Start browsing at the bottom to prevent confusion ;-)
 122  
 123    # model
 124    9000/800/L1000-44
 125    # grep L1000-44 /usr/sam/lib/mo/sched.models
 126    L1000-44        2.0     PA8500
 127  
 128  =head2 Portability Between PA-RISC Versions
 129  
 130  An executable compiled on a PA-RISC 2.0 platform will not execute on a
 131  PA-RISC 1.1 platform, even if they are running the same version of
 132  HP-UX.  If you are building Perl on a PA-RISC 2.0 platform and want that
 133  Perl to also run on a PA-RISC 1.1, the compiler flags +DAportable and
 134  +DS32 should be used.
 135  
 136  It is no longer possible to compile PA-RISC 1.0 executables on either
 137  the PA-RISC 1.1 or 2.0 platforms.  The command-line flags are accepted,
 138  but the resulting executable will not run when transferred to a PA-RISC
 139  1.0 system.
 140  
 141  =head2 PA-RISC 1.0
 142  
 143  The original version of PA-RISC, HP no longer sells any system with this chip.
 144  
 145  The following systems contained PA-RISC 1.0 chips:
 146  
 147    600, 635, 645, 808, 815, 822, 825, 832, 834, 835, 840, 842, 845, 850,
 148    852, 855, 860, 865, 870, 890
 149  
 150  =head2 PA-RISC 1.1
 151  
 152  An upgrade to the PA-RISC design, it shipped for many years in many different
 153  system.
 154  
 155  The following systems contain with PA-RISC 1.1 chips:
 156  
 157    705, 710, 712, 715, 720, 722, 725, 728, 730, 735, 742, 743, 744, 745,
 158    747, 750, 755, 770, 777, 778, 779, 800, 801, 803, 806, 807, 809, 811,
 159    813, 816, 817, 819, 821, 826, 827, 829, 831, 837, 839, 841, 847, 849,
 160    851, 856, 857, 859, 867, 869, 877, 887, 891, 892, 897, A180, A180C,
 161    B115, B120, B132L, B132L+, B160L, B180L, C100, C110, C115, C120,
 162    C160L, D200, D210, D220, D230, D250, D260, D310, D320, D330, D350,
 163    D360, D410, DX0, DX5, DXO, E25, E35, E45, E55, F10, F20, F30, G30,
 164    G40, G50, G60, G70, H20, H30, H40, H50, H60, H70, I30, I40, I50, I60,
 165    I70, J200, J210, J210XC, K100, K200, K210, K220, K230, K400, K410,
 166    K420, S700i, S715, S744, S760, T500, T520
 167  
 168  =head2 PA-RISC 2.0
 169  
 170  The most recent upgrade to the PA-RISC design, it added support for
 171  64-bit integer data.
 172  
 173  As of the date of this document's last update, the following systems
 174  contain PA-RISC 2.0 chips:
 175  
 176    700, 780, 781, 782, 783, 785, 802, 804, 810, 820, 861, 871, 879, 889,
 177    893, 895, 896, 898, 899, A400, A500, B1000, B2000, C130, C140, C160,
 178    C180, C180+, C180-XP, C200+, C400+, C3000, C360, C3600, CB260, D270,
 179    D280, D370, D380, D390, D650, J220, J2240, J280, J282, J400, J410,
 180    J5000, J5500XM, J5600, J7000, J7600, K250, K260, K260-EG, K270, K360,
 181    K370, K380, K450, K460, K460-EG, K460-XP, K470, K570, K580, L1000,
 182    L2000, L3000, N4000, R380, R390, SD16000, SD32000, SD64000, T540,
 183    T600, V2000, V2200, V2250, V2500, V2600
 184  
 185  Just before HP took over Compaq, some systems were renamed. the link
 186  that contained the explanation is dead, so here's a short summary:
 187  
 188    HP 9000 A-Class servers, now renamed HP Server rp2400 series.
 189    HP 9000 L-Class servers, now renamed HP Server rp5400 series.
 190    HP 9000 N-Class servers, now renamed HP Server rp7400.
 191  
 192    rp2400, rp2405, rp2430, rp2450, rp2470, rp3410, rp3440, rp4410,
 193    rp4440, rp5400, rp5405, rp5430, rp5450, rp5470, rp7400, rp7405,
 194    rp7410, rp7420, rp7440, rp8400, rp8420, rp8440, Superdome
 195  
 196  The current naming convention is:
 197  
 198    aadddd
 199    ||||`+- 00 - 99 relative capacity & newness (upgrades, etc.)
 200    |||`--- unique number for each architecture to ensure different
 201    |||     systems do not have the same numbering across
 202    |||     architectures
 203    ||`---- 1 - 9 identifies family and/or relative positioning
 204    ||
 205    |`----- c = ia32 (cisc)
 206    |       p = pa-risc
 207    |       x = ia-64 (Itanium & Itanium 2)
 208    |       h = housing
 209    `------ t = tower
 210            r = rack optimized
 211            s = super scalable
 212            b = blade
 213            sa = appliance
 214  
 215  =head2 Itanium Processor Family (IPF) and HP-UX
 216  
 217  HP-UX also runs on the new Itanium processor.  This requires the use
 218  of a different version of HP-UX (currently 11.23 or 11i v2), and with
 219  the exception of a few differences detailed below and in later sections,
 220  Perl should compile with no problems.
 221  
 222  Although PA-RISC binaries can run on Itanium systems, you should not
 223  attempt to use a PA-RISC version of Perl on an Itanium system.  This is
 224  because shared libraries created on an Itanium system cannot be loaded
 225  while running a PA-RISC executable.
 226  
 227  HP Itanium 2 systems are usually refered to with model description
 228  "HP Integrity".
 229  
 230  =head2 Itanium, Itanium 2 & Madison 6
 231  
 232  HP also ships servers with the 128-bit Itanium processor(s). The cx26x0
 233  is told to have Madison 6. As of the date of this document's last update,
 234  the following systems contain Itanium or Itanium 2 chips (this is likely
 235  to be out of date):
 236  
 237    BL60p, BL860c, cx2600, cx2620, rx1600, rx1620, rx2600, rx2600hptc,
 238    rx2620, rx2660, rx3600, rx4610, rx4640, rx5670, rx6600, rx7420,
 239    rx7620, rx7640, rx8420, rx8620, rx8640, rx9610, sx1000, sx2000
 240  
 241  To see all about your machine, type
 242  
 243    # model
 244    ia64 hp server rx2600
 245    # /usr/contrib/bin/machinfo
 246  
 247  =head2 Building Dynamic Extensions on HP-UX
 248  
 249  HP-UX supports dynamically loadable libraries (shared libraries).
 250  Shared libraries end with the suffix .sl.  On Itanium systems,
 251  they end with the suffix .so.
 252  
 253  Shared libraries created on a platform using a particular PA-RISC
 254  version are not usable on platforms using an earlier PA-RISC version by
 255  default.  However, this backwards compatibility may be enabled using the
 256  same +DAportable compiler flag (with the same PA-RISC 1.0 caveat
 257  mentioned above).
 258  
 259  Shared libraries created on an Itanium platform cannot be loaded on
 260  a PA-RISC platform.  Shared libraries created on a PA-RISC platform
 261  can only be loaded on an Itanium platform if it is a PA-RISC executable
 262  that is attempting to load the PA-RISC library.  A PA-RISC shared
 263  library cannot be loaded into an Itanium executable nor vice-versa.
 264  
 265  To create a shared library, the following steps must be performed:
 266  
 267    1. Compile source modules with +z or +Z flag to create a .o module
 268       which contains Position-Independent Code (PIC).  The linker will
 269       tell you in the next step if +Z was needed.
 270       (For gcc, the appropriate flag is -fpic or -fPIC.)
 271  
 272    2. Link the shared library using the -b flag.  If the code calls
 273       any functions in other system libraries (e.g., libm), it must
 274       be included on this line.
 275  
 276  (Note that these steps are usually handled automatically by the extension's
 277  Makefile).
 278  
 279  If these dependent libraries are not listed at shared library creation
 280  time, you will get fatal "Unresolved symbol" errors at run time when the
 281  library is loaded.
 282  
 283  You may create a shared library that refers to another library, which
 284  may be either an archive library or a shared library.  If this second
 285  library is a shared library, this is called a "dependent library".  The
 286  dependent library's name is recorded in the main shared library, but it
 287  is not linked into the shared library.  Instead, it is loaded when the
 288  main shared library is loaded.  This can cause problems if you build an
 289  extension on one system and move it to another system where the
 290  libraries may not be located in the same place as on the first system.
 291  
 292  If the referred library is an archive library, then it is treated as a
 293  simple collection of .o modules (all of which must contain PIC).  These
 294  modules are then linked into the shared library.
 295  
 296  Note that it is okay to create a library which contains a dependent
 297  library that is already linked into perl.
 298  
 299  Some extensions, like DB_File and Compress::Zlib use/require prebuilt
 300  libraries for the perl extensions/modules to work. If these libraries
 301  are built using the default configuration, it might happen that you
 302  run into an error like "invalid loader fixup" during load phase.
 303  HP is aware of this problem.  Search the HP-UX cxx-dev forums for
 304  discussions about the subject.  The short answer is that B<everything>
 305  (all libraries, everything) must be compiled with C<+z> or C<+Z> to be
 306  PIC (position independent code).  (For gcc, that would be
 307  C<-fpic> or C<-fPIC>).  In HP-UX 11.00 or newer the linker
 308  error message should tell the name of the offending object file.
 309  
 310  A more general approach is to intervene manually, as with an example for
 311  the DB_File module, which requires SleepyCat's libdb.sl:
 312  
 313    # cd .../db-3.2.9/build_unix
 314    # vi Makefile
 315    ... add +Z to all cflags to create shared objects
 316    CFLAGS=         -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
 317                    -I/usr/local/include -I/usr/include/X11R6
 318    CXXFLAGS=       -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
 319                    -I/usr/local/include -I/usr/include/X11R6
 320  
 321    # make clean
 322    # make
 323    # mkdir tmp
 324    # cd tmp
 325    # ar x ../libdb.a
 326    # ld -b -o libdb-3.2.sl *.o
 327    # mv libdb-3.2.sl /usr/local/lib
 328    # rm *.o
 329    # cd /usr/local/lib
 330    # rm -f libdb.sl
 331    # ln -s libdb-3.2.sl libdb.sl
 332  
 333    # cd .../DB_File-1.76
 334    # make distclean
 335    # perl Makefile.PL
 336    # make
 337    # make test
 338    # make install
 339  
 340  As of db-4.2.x it is no longer needed to do this by hand. Sleepycat
 341  has changed the configuration process to add +z on HP-UX automatically.
 342  
 343    # cd .../db-4.2.25/build_unix
 344    # env CFLAGS=+DD64 LDFLAGS=+DD64 ../dist/configure
 345  
 346  should work to generate 64bit shared libraries for HP-UX 11.00 and 11i.
 347  
 348  It is no longer possible to link PA-RISC 1.0 shared libraries (even
 349  though the command-line flags are still present).
 350  
 351  PA-RISC and Itanium object files are not interchangeable.  Although
 352  you may be able to use ar to create an archive library of PA-RISC
 353  object files on an Itanium system, you cannot link against it using
 354  an Itanium link editor.
 355  
 356  =head2 The HP ANSI C Compiler
 357  
 358  When using this compiler to build Perl, you should make sure that the
 359  flag -Aa is added to the cpprun and cppstdin variables in the config.sh
 360  file (though see the section on 64-bit perl below). If you are using a
 361  recent version of the Perl distribution, these flags are set automatically.
 362  
 363  Even though HP-UX 10.20 and 11.00 are not actively maintained by HP
 364  anymore, updates for the HP ANSI C compiler are still available from
 365  time to time, and it might be advisable to see if updates are applicable.
 366  At the moment of writing, the latests available patches for 11.00 that
 367  should be applied are PHSS_35098, PHSS_35175, PHSS_35100, PHSS_33036,
 368  and PHSS_33902). If you have a SUM account, you can use it to search
 369  for updates/patches. Enter "ANSI" as keyword.
 370  
 371  =head2 The GNU C Compiler
 372  
 373  When you are going to use the GNU C compiler (gcc), and you don't have
 374  gcc yet, you can either build it yourself from the sources (available
 375  from e.g. http://www.gnu.ai.mit.edu/software/gcc/releases.html) or fetch
 376  a prebuilt binary from the HP porting center. There are two places where
 377  gcc prebuilds can be fetched; the first and best (for HP-UX 11 only) is
 378  http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,547,00.html
 379  the second is http://hpux.cs.utah.edu/hppd/hpux/Gnu/ where you can also
 380  find the GNU binutils package. (Browse through the list, because there
 381  are often multiple versions of the same package available).
 382  
 383  Above mentioned distributions are depots. H.Merijn Brand has made prebuilt
 384  gcc binaries available on http://mirrors.develooper.com/hpux/ and/or
 385  http://www.cmve.net/~merijn/ for HP-UX 10.20, HP-UX 11.00, and HP-UX 11.11
 386  (HP-UX 11i) in both 32- and 64-bit versions. These are bzipped tar archives
 387  that also include recent GNU binutils and GNU gdb.  Read the instructions
 388  on that page to rebuild gcc using itself.
 389  
 390  On PA-RISC you need a different compiler for 32-bit applications and for
 391  64-bit applications. On PA-RISC, 32-bit objects and 64-bit objects do
 392  not mix. Period. There is no different behaviour for HP C-ANSI-C or GNU
 393  gcc. So if you require your perl binary to use 64-bit libraries, like
 394  Oracle-64bit, you MUST build a 64-bit perl.
 395  
 396  Building a 64-bit capable gcc on PA-RISC from source is possible only when
 397  you have the HP C-ANSI C compiler or an already working 64-bit binary of
 398  gcc available. Best performance for perl is achieved with HP's native
 399  compiler.
 400  
 401  =head2 Using Large Files with Perl on HP-UX
 402  
 403  Beginning with HP-UX version 10.20, files larger than 2GB (2^31 bytes)
 404  may be created and manipulated.  Three separate methods of doing this
 405  are available.  Of these methods, the best method for Perl is to compile
 406  using the -Duselargefiles flag to Configure.  This causes Perl to be
 407  compiled using structures and functions in which these are 64 bits wide,
 408  rather than 32 bits wide.  (Note that this will only work with HP's ANSI
 409  C compiler.  If you want to compile Perl using gcc, you will have to get
 410  a version of the compiler that supports 64-bit operations. See above for
 411  where to find it.)
 412  
 413  There are some drawbacks to this approach.  One is that any extension
 414  which calls any file-manipulating C function will need to be recompiled
 415  (just follow the usual "perl Makefile.PL; make; make test; make install"
 416  procedure).
 417  
 418  The list of functions that will need to recompiled is:
 419    creat,          fgetpos,        fopen,
 420    freopen,        fsetpos,        fstat,
 421    fstatvfs,       fstatvfsdev,    ftruncate,
 422    ftw,            lockf,          lseek,
 423    lstat,          mmap,           nftw,
 424    open,           prealloc,       stat,
 425    statvfs,        statvfsdev,     tmpfile,
 426    truncate,       getrlimit,      setrlimit
 427  
 428  Another drawback is only valid for Perl versions before 5.6.0.  This
 429  drawback is that the seek and tell functions (both the builtin version
 430  and POSIX module version) will not perform correctly.
 431  
 432  It is strongly recommended that you use this flag when you run
 433  Configure.  If you do not do this, but later answer the question about
 434  large files when Configure asks you, you may get a configuration that
 435  cannot be compiled, or that does not function as expected.
 436  
 437  =head2 Threaded Perl on HP-UX
 438  
 439  It is possible to compile a version of threaded Perl on any version of
 440  HP-UX before 10.30, but it is strongly suggested that you be running on
 441  HP-UX 11.00 at least.
 442  
 443  To compile Perl with threads, add -Dusethreads to the arguments of
 444  Configure.  Verify that the -D_POSIX_C_SOURCE=199506L compiler flag is
 445  automatically added to the list of flags.  Also make sure that -lpthread
 446  is listed before -lc in the list of libraries to link Perl with. The
 447  hints provided for HP-UX during Configure will try very hard to get
 448  this right for you.
 449  
 450  HP-UX versions before 10.30 require a separate installation of a POSIX
 451  threads library package. Two examples are the HP DCE package, available
 452  on "HP-UX Hardware Extensions 3.0, Install and Core OS, Release 10.20,
 453  April 1999 (B3920-13941)" or the Freely available PTH package, available
 454  on H.Merijn's site (http://mirrors.develooper.com/hpux/).
 455  
 456  If you are going to use the HP DCE package, the library used for threading
 457  is /usr/lib/libcma.sl, but there have been multiple updates of that
 458  library over time. Perl will build with the first version, but it
 459  will not pass the test suite. Older Oracle versions might be a compelling
 460  reason not to update that library, otherwise please find a newer version
 461  in one of the following patches: PHSS_19739, PHSS_20608, or PHSS_23672
 462  
 463  reformatted output:
 464  
 465    d3:/usr/lib 106 > what libcma-*.1
 466    libcma-00000.1:
 467       HP DCE/9000 1.5               Module: libcma.sl (Export)
 468                                     Date: Apr 29 1996 22:11:24
 469    libcma-19739.1:
 470       HP DCE/9000 1.5 PHSS_19739-40 Module: libcma.sl (Export)
 471                                     Date: Sep  4 1999 01:59:07
 472    libcma-20608.1:
 473       HP DCE/9000 1.5 PHSS_20608    Module: libcma.1 (Export)
 474                                     Date: Dec  8 1999 18:41:23
 475    libcma-23672.1:
 476       HP DCE/9000 1.5 PHSS_23672    Module: libcma.1 (Export)
 477                                     Date: Apr  9 2001 10:01:06
 478    d3:/usr/lib 107 >
 479  
 480  If you choose for the PTH package, use swinstall to install pth in
 481  the default location (/opt/pth), and then make symbolic links to the
 482  libraries from /usr/lib
 483  
 484    # cd /usr/lib
 485    # ln -s /opt/pth/lib/libpth* .
 486  
 487  For building perl to support Oracle, it needs to be linked with libcl
 488  and libpthread. So even if your perl is an unthreaded build, these
 489  libraries might be required. See "Oracle on HP-UX" below.
 490  
 491  =head2 64-bit Perl on HP-UX
 492  
 493  Beginning with HP-UX 11.00, programs compiled under HP-UX can take
 494  advantage of the LP64 programming environment (LP64 means Longs and
 495  Pointers are 64 bits wide), in which scalar variables will be able
 496  to hold numbers larger than 2^32 with complete precision.  Perl has
 497  proven to be consistent and reliable in 64bit mode since 5.8.1 on
 498  all HP-UX 11.xx.
 499  
 500  As of the date of this document, Perl is fully 64-bit compliant on
 501  HP-UX 11.00 and up for both cc- and gcc builds. If you are about to
 502  build a 64-bit perl with GNU gcc, please read the gcc section carefully.
 503  
 504  Should a user have the need for compiling Perl in the LP64 environment,
 505  use the -Duse64bitall flag to Configure.  This will force Perl to be
 506  compiled in a pure LP64 environment (with the +DD64 flag for HP C-ANSI-C,
 507  with no additional options for GNU gcc 64-bit on PA-RISC, and with
 508  -mlp64 for GNU gcc on Itanium).
 509  If you want to compile Perl using gcc, you will have to get a version of
 510  the compiler that supports 64-bit operations.)
 511  
 512  You can also use the -Duse64bitint flag to Configure.  Although there
 513  are some minor differences between compiling Perl with this flag versus
 514  the -Duse64bitall flag, they should not be noticeable from a Perl user's
 515  perspective. When configuring -Duse64bitint using a 64bit gcc on a
 516  pa-risc architecture, -Duse64bitint is silently promoted to -Duse64bitall.
 517  
 518  In both cases, it is strongly recommended that you use these flags when
 519  you run Configure.  If you do not use do this, but later answer the
 520  questions about 64-bit numbers when Configure asks you, you may get a
 521  configuration that cannot be compiled, or that does not function as
 522  expected.
 523  
 524  =head2 Oracle on HP-UX
 525  
 526  Using perl to connect to Oracle databases through DBI and DBD::Oracle
 527  has caused a lot of people many headaches. Read README.hpux in the
 528  DBD::Oracle for much more information. The reason to mention it here
 529  is that Oracle requires a perl built with libcl and libpthread, the
 530  latter even when perl is build without threads. Building perl using
 531  all defaults, but still enabling to build DBD::Oracle later on can be
 532  achieved using
 533  
 534    Configure -A prepend:libswanted='cl pthread ' ...
 535  
 536  Do not forget the space before the trailing quote.
 537  
 538  Also note that this does not (yet) work with all configurations,
 539  it is known to fail with 64-bit versions of GCC.
 540  
 541  =head2 GDBM and Threads on HP-UX
 542  
 543  If you attempt to compile Perl with (POSIX) threads on an 11.X system
 544  and also link in the GDBM library, then Perl will immediately core dump
 545  when it starts up.  The only workaround at this point is to relink the
 546  GDBM library under 11.X, then relink it into Perl.
 547  
 548  the error might show something like:
 549  
 550  Pthread internal error: message: __libc_reinit() failed, file: ../pthreads/pthread.c, line: 1096
 551  Return Pointer is 0xc082bf33
 552  sh: 5345 Quit(coredump)
 553  
 554  and Configure will give up.
 555  
 556  =head2 NFS filesystems and utime(2) on HP-UX
 557  
 558  If you are compiling Perl on a remotely-mounted NFS filesystem, the test
 559  io/fs.t may fail on test #18.  This appears to be a bug in HP-UX and no
 560  fix is currently available.
 561  
 562  =head2 perl -P and // and HP-UX
 563  
 564  If HP-UX Perl is compiled with flags that will cause problems if the
 565  -P flag of Perl (preprocess Perl code with the C preprocessor before
 566  perl sees it) is used.  The problem is that C<//>, being a C++-style
 567  until-end-of-line comment, will disappear along with the remainder
 568  of the line.  This means that common Perl constructs like
 569  
 570    s/foo//;
 571  
 572  will turn into illegal code
 573  
 574    s/foo
 575  
 576  The workaround is to use some other quoting separator than C<"/">,
 577  like for example C<"!">:
 578  
 579    s!foo!!;
 580  
 581  =head2 HP-UX Kernel Parameters (maxdsiz) for Compiling Perl
 582  
 583  By default, HP-UX comes configured with a maximum data segment size of
 584  64MB.  This is too small to correctly compile Perl with the maximum
 585  optimization levels.  You can increase the size of the maxdsiz kernel
 586  parameter through the use of SAM.
 587  
 588  When using the GUI version of SAM, click on the Kernel Configuration
 589  icon, then the Configurable Parameters icon.  Scroll down and select
 590  the maxdsiz line.  From the Actions menu, select the Modify Configurable
 591  Parameter item.  Insert the new formula into the Formula/Value box.
 592  Then follow the instructions to rebuild your kernel and reboot your
 593  system.
 594  
 595  In general, a value of 256MB (or "256*1024*1024") is sufficient for
 596  Perl to compile at maximum optimization.
 597  
 598  =head1 nss_delete core dump from op/pwent or op/grent
 599  
 600  You may get a bus error core dump from the op/pwent or op/grent
 601  tests. If compiled with -g you will see a stack trace much like
 602  the following:
 603  
 604    #0  0xc004216c in  () from /usr/lib/libc.2
 605    #1  0xc00d7550 in __nss_src_state_destr () from /usr/lib/libc.2
 606    #2  0xc00d7768 in __nss_src_state_destr () from /usr/lib/libc.2
 607    #3  0xc00d78a8 in nss_delete () from /usr/lib/libc.2
 608    #4  0xc01126d8 in endpwent () from /usr/lib/libc.2
 609    #5  0xd1950 in Perl_pp_epwent () from ./perl
 610    #6  0x94d3c in Perl_runops_standard () from ./perl
 611    #7  0x23728 in S_run_body () from ./perl
 612    #8  0x23428 in perl_run () from ./perl
 613    #9  0x2005c in main () from ./perl
 614  
 615  The key here is the C<nss_delete> call.  One workaround for this
 616  bug seems to be to create add to the file F</etc/nsswitch.conf>
 617  (at least) the following lines
 618  
 619    group: files
 620    passwd: files
 621  
 622  Whether you are using NIS does not matter.  Amazingly enough,
 623  the same bug also affects Solaris.
 624  
 625  =head1 Miscellaneous
 626  
 627  HP-UX 11 Y2K patch "Y2K-1100 B.11.00.B0125 HP-UX Core OS Year 2000
 628  Patch Bundle" has been reported to break the io/fs test #18 which
 629  tests whether utime() can change timestamps.  The Y2K patch seems to
 630  break utime() so that over NFS the timestamps do not get changed
 631  (on local filesystems utime() still works). This has probably been
 632  fixed on your system by now.
 633  
 634  =head1 AUTHOR
 635  
 636  H.Merijn Brand <h.m.brand@xs4all.nl>
 637  Jeff Okamoto <okamoto@corp.hp.com>
 638  
 639  With much assistance regarding shared libraries from Marc Sabatella.
 640  
 641  =head1 DATE
 642  
 643  Version 0.8.0: 2007-09-09
 644  
 645  =cut


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1