Compiling on AIX
prerequisites
- xlc and gcc both are reported to work
- It's strongly suggested to install the coreutils RPM and be sure /opt/freeware/bin/install is high in your PATH and found by APR configure for BSD-compatible install.
- covener believes this might solve failures to install DSO's.
- Building a recent autoconf, m4, libtool, and zlib (and maybe PCRE?) to some shared prefix doesn't hurt (e.g. $HOME/gnu)
- For something long forgotten, adding that prefix to your LIBPATH helps some stage of the build
- export PATH=$HOME/gnu/bin:/opt/freeware/bin:$PATH
export LIBPATH=$LIBPATH:$HOME/gnu/
- Setting CONFIG_SHELL=/usr/bin/bash can speed up ./configure significantly.
- Old tarballs with an old config.guess/config.sub require AIX 6.1 and later to impersonate AIX 5.3
- export ac_cv_build="powerpc-ibm-aix5.3.0.0"
- export ac_cv_build_alias="powerpc-ibm-aix5.3.0.0"
To build from trunk, you'll need a working python. You can install gdbm and python2.6 from the "AIX Toolbox for Linux" RPMs, or from http://www.perzl.org/.
Grab a srclib/expat, or expat and expat-devel from http://www.perzl.org
Grab a srclib/pcre, or pcre and pcre-devel from http://www.perzl.org
64-bit
- Re-configure after changing any of these.
- Set both OBJECT_MODE=64 and CC="xlc_r -q64"
- Sometimes you need to also set:
- export AR="ar -X64"
- export lt_cv_path_NM="/usr/bin/nm -B -X64"
- If you're building with SSL:
- install pkg-config from perzl or toolbox
- install openssl and openssl-devel from perzl or toolbox
- ???
Link errors with bundled expat and when using DESTDIR
- If you use a bundled expat, you might find the link of apr-util fails. The following change might help:
perl -p -i.orig -e \"s#[^ ]+libexpat.la#-L$curdir/srclib/apr-util/xml/expat/lib/ -lexpat#; s#[^ ]+libapr-1.la##;\" $PWD/srclib/apr-util/Makefile
AIX layout discussion
Ideal:
- man pages in /usr/share/man/...
- read only, system independent files in /opt/httpd/...
- system dependent files in /var/httpd/...
so:
- no files in /usr/local
- /opt/httpd for binaries and static files (to be a USR part of an installp package)
- /var/httpd as base for files that are system dependent and may be modified
- /var/httpd/etc as base for config files
- /usr/share/man for the man pages so that man httpd-foo works directly
- intention is that using /opt, /var, installation will directly support system WPARs
- /etc/httpd is moved to /var/httpd/etc so that only one filesystem is needed. A symbolic link could be placed in /etc