Originally posted by: Erra
We are building our product on AIX 5.3 machine which has following configuration
$ uname -a
AIX sdaix092 3 5 0002AB32D900
$ oslevel -r
5300-08
$ /usr/vac/bin/xlc -qversion
IBM XL C/C++ Enterprise Edition for AIX, V9.0
Version: 09.00.0000.0000
$ /usr/vacpp/bin/xlC -qversion
IBM XL C/C++ Enterprise Edition for AIX, V9.0
Version: 09.00.0000.0000
$ lslpp -f xlC.rte
Fileset File
Path: /usr/lib/objrepos
xlC.rte 9.0.0.1 /usr/ccs/lib/libp/libC_r.a -> /usr/lpp/xlC/lib/profiled/libC_r.a
xlC.rte 9.0.0.1 /usr/lib/libC.a -> /usr/lpp/xlC/lib/libC.a
xlC.rte 9.0.0.1 /usr/lib/libibmcls.a -> /usr/lpp/xlC/lib/libibmcls.a
xlC.rte 9.0.0.1 /usr/lpp/xlC/lib/libibmuis.a
/usr/ccs/lib/libp/libC128_r.a -> /usr/lpp/xlC/lib/profiled/libC128_r.a
/usr/lib/libC128.a -> /usr/lpp/xlC/lib/libC128.a
/usr/lib/libC128_r.a -> /usr/lpp/xlC/lib/libC128_r.a
/usr/ccs/lib/libp/libC.a -> /usr/lpp/xlC/lib/profiled/libC.a
/usr/ccs/lib/libp/libC128.a -> /usr/lpp/xlC/lib/profiled/libC128.a
/usr/lib/libC_r.a -> /usr/lpp/xlC/lib/libC_r.a
/usr/lpp/xlC/lib/libibmcls.a
/usr/lib/libibmuis.a -> /usr/lpp/xlC/lib/libibmuis.a
We are providing shared libraries for our clients. Now clients are getting runtime issues when they run their applications(unresolved symbols from libC.a) on their test machines which have AIX 5.3 installed with having lower version of C/C++ runtime libraries.
Client machine has following configuration
:/ > uname -a
AIX optimus 3 5 00CA155D4C00
:/ > /usr/vac/bin/xlc -qversion
@(#) IBM XL C/C++ Enterprise Edition V7.0
:/ > lslpp -f xlC.rte
Fileset File
Path: /usr/lib/objrepos
xlC.rte 7.0.0.0 /usr/ccs/lib/libp/libC_r.a -> /usr/lpp/xlC/lib/profiled/libC_r.a
xlC.rte 7.0.0.0 /usr/lib/libC.a -> /usr/lpp/xlC/lib/libC.a
xlC.rte 7.0.0.0 /usr/lib/libibmcls.a -> /usr/lpp/xlC/lib/libibmcls.a
xlC.rte 7.0.0.0 /usr/lpp/xlC/lib/libibmuis.a
/usr/ccs/lib/libp/libC128_r.a -> /usr/lpp/xlC/lib/profiled/libC128_r.a
/usr/lib/libC128.a -> /usr/lpp/xlC/lib/libC128.a
/usr/lib/libC128_r.a -> /usr/lpp/xlC/lib/libC128_r.a
/usr/ccs/lib/libp/libC.a -> /usr/lpp/xlC/lib/profiled/libC.a
/usr/ccs/lib/libp/libC128.a -> /usr/lpp/xlC/lib/profiled/libC128.a
/usr/lib/libC_r.a -> /usr/lpp/xlC/lib/libC_r.a
/usr/lpp/xlC/lib/libibmcls.a
/usr/lib/libibmuis.a -> /usr/lpp/xlC/lib/libibmuis.a
As runtime libraries at client machine were older than what we have used to built out product, certain symbols are not available in the older libraries and getting failed with "unresolved symbols" errors. (Here we are getting unresolved symbols only from libC.a.)
To resolve above kind of issues, we have two options.
1. To built with the initial/lower version of compiler that comes with AIX 5.3. Then when client application is built with the same compiler or with latest one then also will be no issues. Latest version of compilers any how will be having backward compatibility.
2. Give a tech alert providing detailed information about the scenario and suggesting to use runtime libraries fileset version v9.0 or latest (now v10.x.x.x is also available).
we can't force the client to use specific version of runtime librararies.
So we have to go for option #1.
For this i want know what is the lower version of XL C/C++ compiler comes with AIX 5.3?