[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/pod/ -> perlaix.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.aix - Perl version 5 on IBM Unix (AIX) systems
   8  
   9  =head1 DESCRIPTION
  10  
  11  This document describes various features of IBM's Unix operating
  12  system (AIX) that will affect how Perl version 5 (hereafter just Perl)
  13  is compiled and/or runs.
  14  
  15  =head2 Compiling Perl 5 on AIX
  16  
  17  When compiling Perl, you must use an ANSI C compiler. AIX does not ship
  18  an ANSI compliant C-compiler with AIX by default, but binary builds of
  19  gcc for AIX are widely available.
  20  
  21  At the moment of writing, AIX supports two different native C compilers,
  22  for which you have to pay: B<xlC> and B<vac>. If you decide to use either
  23  of these two (which is quite a lot easier than using gcc), be sure to
  24  upgrade to the latest available patch level. Currently:
  25  
  26      xlC.C     3.1.4.10 or 3.6.6.0 or 4.0.2.2 or 5.0.2.9 or 6.0.0.3
  27      vac.C     4.4.0.3  or 5.0.2.6 or 6.0.0.1
  28  
  29  note that xlC has the OS version in the name as of version 4.0.2.0, so
  30  you will find xlC.C for AIX-5.0 as package
  31  
  32      xlC.aix50.rte   5.0.2.0 or 6.0.0.3
  33  
  34  subversions are not the same "latest" on all OS versions. For example,
  35  the latest xlC-5 on aix41 is 5.0.2.9, while on aix43, it is 5.0.2.7.
  36  
  37  Perl can be compiled with either IBM's ANSI C compiler or with gcc.
  38  The former is recommended, as not only can it compile Perl with no
  39  difficulty, but also can take advantage of features listed later that
  40  require the use of IBM compiler-specific command-line flags.
  41  
  42  The IBM's compiler patch levels 5.0.0.0 and 5.0.1.0 have compiler
  43  optimization bugs that affect compiling perl.c and regcomp.c,
  44  respectively.  If Perl's configuration detects those compiler patch
  45  levels, optimization is turned off for the said source code files.
  46  Upgrading to at least 5.0.2.0 is recommended.
  47  
  48  If you decide to use gcc, make sure your installation is recent and
  49  complete, and be sure to read the Perl INSTALL file for more gcc-specific
  50  details. Please report any hoops you had to jump through to the development
  51  team.
  52  
  53  =head2 OS level
  54  
  55  Before installing the patches to the IBM C-compiler you need to know the
  56  level of patching for the Operating System. IBM's command 'oslevel' will
  57  show the base, but is not always complete (in this example oslevel shows
  58  4.3.NULL, whereas the system might run most of 4.3.THREE):
  59  
  60      # oslevel
  61      4.3.0.0
  62      # lslpp -l | grep 'bos.rte '
  63      bos.rte           4.3.3.75  COMMITTED  Base Operating System Runtime
  64      bos.rte            4.3.2.0  COMMITTED  Base Operating System Runtime
  65      #
  66  
  67  The same might happen to AIX 5.1 or other OS levels. As a side note, perl
  68  cannot be built without bos.adt.syscalls and bos.adt.libm installed
  69  
  70      # lslpp -l | egrep "syscalls|libm"
  71      bos.adt.libm      5.1.0.25  COMMITTED  Base Application Development
  72      bos.adt.syscalls  5.1.0.36  COMMITTED  System Calls Application
  73      #
  74  
  75  =head2 Building Dynamic Extensions on AIX
  76  
  77  AIX supports dynamically loadable objects as well as shared libraries.
  78  Shared libraries by convention end with the suffix .a, which is a bit
  79  misleading, as an archive can contain static as well as dynamic members.
  80  For perl dynamically loaded objects we use the .so suffix also used on
  81  many other platforms.
  82  
  83  Note that starting from Perl 5.7.2 (and consequently 5.8.0) and AIX 4.3
  84  or newer Perl uses the AIX native dynamic loading interface in the so
  85  called runtime linking mode instead of the emulated interface that was
  86  used in Perl releases 5.6.1 and earlier or, for AIX releases 4.2 and
  87  earlier.  This change does break backward compatibility with compiled
  88  modules from earlier perl releases.  The change was made to make Perl
  89  more compliant with other applications like Apache/mod_perl which are
  90  using the AIX native interface. This change also enables the use of C++
  91  code with static constructors and destructors in perl extensions, which
  92  was not possible using the emulated interface.
  93  
  94  =head2 The IBM ANSI C Compiler
  95  
  96  All defaults for Configure can be used.
  97  
  98  If you've chosen to use vac 4, be sure to run 4.4.0.3. Older versions
  99  will turn up nasty later on. For vac 5 be sure to run at least 5.0.1.0,
 100  but vac 5.0.2.6 or up is highly recommended. Note that since IBM has
 101  removed vac 5.0.2.1 through 5.0.2.5 from the software depot, these
 102  versions should be considered obsolete.
 103  
 104  Here's a brief lead of how to upgrade the compiler to the latest
 105  level.  Of course this is subject to changes.  You can only upgrade
 106  versions from ftp-available updates if the first three digit groups
 107  are the same (in where you can skip intermediate unlike the patches
 108  in the developer snapshots of perl), or to one version up where the
 109  "base" is available.  In other words, the AIX compiler patches are
 110  cumulative.
 111  
 112   vac.C.4.4.0.1 => vac.C.4.4.0.3  is OK     (vac.C.4.4.0.2 not needed)
 113   xlC.C.3.1.3.3 => xlC.C.3.1.4.10 is NOT OK (xlC.C.3.1.4.0 is not available)
 114  
 115   # ftp ftp.software.ibm.com
 116   Connected to service.boulder.ibm.com.
 117   : welcome message ...
 118   Name (ftp.software.ibm.com:merijn): anonymous
 119   331 Guest login ok, send your complete e-mail address as password.
 120   Password:
 121   ... accepted login stuff
 122   ftp> cd /aix/fixes/v4/
 123   ftp> dir other other.ll
 124   output to local-file: other.ll? y
 125   200 PORT command successful.
 126   150 Opening ASCII mode data connection for /bin/ls.
 127   226 Transfer complete.
 128   ftp> dir xlc xlc.ll
 129   output to local-file: xlc.ll? y
 130   200 PORT command successful.
 131   150 Opening ASCII mode data connection for /bin/ls.
 132   226 Transfer complete.
 133   ftp> bye
 134   ... goodbye messages
 135   # ls -l *.ll
 136   -rw-rw-rw-   1 merijn   system    1169432 Nov  2 17:29 other.ll
 137   -rw-rw-rw-   1 merijn   system      29170 Nov  2 17:29 xlc.ll
 138  
 139  On AIX 4.2 using xlC, we continue:
 140  
 141   # lslpp -l | fgrep 'xlC.C '
 142     xlC.C                     3.1.4.9  COMMITTED  C for AIX Compiler
 143     xlC.C                     3.1.4.0  COMMITTED  C for AIX Compiler
 144   # grep 'xlC.C.3.1.4.*.bff' xlc.ll
 145   -rw-r--r--   1 45776101 1        6286336 Jul 22 1996  xlC.C.3.1.4.1.bff
 146   -rw-rw-r--   1 45776101 1        6173696 Aug 24 1998  xlC.C.3.1.4.10.bff
 147   -rw-r--r--   1 45776101 1        6319104 Aug 14 1996  xlC.C.3.1.4.2.bff
 148   -rw-r--r--   1 45776101 1        6316032 Oct 21 1996  xlC.C.3.1.4.3.bff
 149   -rw-r--r--   1 45776101 1        6315008 Dec 20 1996  xlC.C.3.1.4.4.bff
 150   -rw-rw-r--   1 45776101 1        6178816 Mar 28 1997  xlC.C.3.1.4.5.bff
 151   -rw-rw-r--   1 45776101 1        6188032 May 22 1997  xlC.C.3.1.4.6.bff
 152   -rw-rw-r--   1 45776101 1        6191104 Sep  5 1997  xlC.C.3.1.4.7.bff
 153   -rw-rw-r--   1 45776101 1        6185984 Jan 13 1998  xlC.C.3.1.4.8.bff
 154   -rw-rw-r--   1 45776101 1        6169600 May 27 1998  xlC.C.3.1.4.9.bff
 155   # wget ftp://ftp.software.ibm.com/aix/fixes/v4/xlc/xlC.C.3.1.4.10.bff
 156   #
 157  
 158  On AIX 4.3 using vac, we continue:
 159  
 160   # lslpp -l | grep 'vac.C '
 161    vac.C                      5.0.2.2  COMMITTED  C for AIX Compiler
 162    vac.C                      5.0.2.0  COMMITTED  C for AIX Compiler
 163   # grep 'vac.C.5.0.2.*.bff' other.ll
 164   -rw-rw-r--   1 45776101 1        13592576 Apr 16 2001  vac.C.5.0.2.0.bff
 165   -rw-rw-r--   1 45776101 1        14133248 Apr  9 2002  vac.C.5.0.2.3.bff
 166   -rw-rw-r--   1 45776101 1        14173184 May 20 2002  vac.C.5.0.2.4.bff
 167   -rw-rw-r--   1 45776101 1        14192640 Nov 22 2002  vac.C.5.0.2.6.bff
 168   # wget ftp://ftp.software.ibm.com/aix/fixes/v4/other/vac.C.5.0.2.6.bff
 169   #
 170  
 171  Likewise on all other OS levels. Then execute the following command, and
 172  fill in its choices
 173  
 174   # smit install_update
 175    -> Install and Update from LATEST Available Software
 176    * INPUT device / directory for software [ vac.C.5.0.2.6.bff    ]
 177    [ OK ]
 178    [ OK ]
 179  
 180  Follow the messages ... and you're done.
 181  
 182  If you like a more web-like approach, a good start point can be
 183  http://www14.software.ibm.com/webapp/download/downloadaz.jsp and click
 184  "C for AIX", and follow the instructions.
 185  
 186  =head2 The usenm option
 187  
 188  If linking miniperl
 189  
 190   cc -o miniperl ... miniperlmain.o opmini.o perl.o ... -lm -lc ...
 191  
 192  causes error like this
 193  
 194   ld: 0711-317 ERROR: Undefined symbol: .aintl
 195   ld: 0711-317 ERROR: Undefined symbol: .copysignl
 196   ld: 0711-317 ERROR: Undefined symbol: .syscall
 197   ld: 0711-317 ERROR: Undefined symbol: .eaccess
 198   ld: 0711-317 ERROR: Undefined symbol: .setresuid
 199   ld: 0711-317 ERROR: Undefined symbol: .setresgid
 200   ld: 0711-317 ERROR: Undefined symbol: .setproctitle
 201   ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
 202  
 203  you could retry with
 204  
 205   make realclean
 206   rm config.sh
 207   ./Configure -Dusenm ...
 208  
 209  which makes Configure to use the C<nm> tool when scanning for library
 210  symbols, which usually is not done in AIX.
 211  
 212  Related to this, you probably should not use the C<-r> option of
 213  Configure in AIX, because that affects of how the C<nm> tool is used.
 214  
 215  =head2 Using GNU's gcc for building perl
 216  
 217  Using gcc-3.x (tested with 3.0.4, 3.1, and 3.2) now works out of the box,
 218  as do recent gcc-2.9 builds available directly from IBM as part of their
 219  Linux compatibility packages, available here:
 220  
 221    http://www.ibm.com/servers/aix/products/aixos/linux/
 222  
 223  =head2 Using Large Files with Perl
 224  
 225  Should yield no problems.
 226  
 227  =head2 Threaded Perl
 228  
 229  Threads seem to work OK, though at the moment not all tests pass when
 230  threads are used in combination with 64-bit configurations.
 231  
 232  You may get a warning when doing a threaded build:
 233  
 234    "pp_sys.c", line 4640.39: 1506-280 (W) Function argument assignment between types "unsigned char*" and "const void*" is not allowed.
 235  
 236  The exact line number may vary, but if the warning (W) comes from a line
 237  line this
 238  
 239    hent = PerlSock_gethostbyaddr(addr, (Netdb_hlen_t) addrlen, addrtype);
 240  
 241  in the "pp_ghostent" function, you may ignore it safely.  The warning
 242  is caused by the reentrant variant of gethostbyaddr() having a slightly
 243  different prototype than its non-reentrant variant, but the difference
 244  is not really significant here.
 245  
 246  =head2 64-bit Perl
 247  
 248  If your AIX is installed with 64-bit support, you can expect 64-bit
 249  configurations to work. In combination with threads some tests might
 250  still fail.
 251  
 252  =head2 AIX 4.2 and extensions using C++ with statics
 253  
 254  In AIX 4.2 Perl extensions that use C++ functions that use statics
 255  may have problems in that the statics are not getting initialized.
 256  In newer AIX releases this has been solved by linking Perl with
 257  the libC_r library, but unfortunately in AIX 4.2 the said library
 258  has an obscure bug where the various functions related to time
 259  (such as time() and gettimeofday()) return broken values, and
 260  therefore in AIX 4.2 Perl is not linked against the libC_r.
 261  
 262  =head1 AUTHOR
 263  
 264  H.Merijn Brand <h.m.brand@xs4all.nl>
 265  
 266  =head1 DATE
 267  
 268  Version 0.0.6: 23 Dec 2002
 269  
 270  =cut


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