1PERLAIX(1)             Perl Programmers Reference Guide             PERLAIX(1)
2
3
4

NAME

6       README.aix - Perl version 5 on IBM Unix (AIX) systems
7

DESCRIPTION

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

AUTHOR

261       H.Merijn Brand <h.m.brand@xs4all.nl>
262

DATE

264       Version 0.0.6: 23 Dec 2002
265
266
267
268perl v5.8.8                       2006-01-07                        PERLAIX(1)
Impressum