(mysql.info) ibm-aix
Info Catalog
(mysql.info) hp-ux-11-x
(mysql.info) other-unix-notes
(mysql.info) sunos
2.12.5.3 IBM-AIX notes
......................
Automatic detection of `xlC' is missing from Autoconf, so a number of
variables need to be set before running `configure'. The following
example uses the IBM compiler:
export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-I /usr/local/include"
export LDFLAGS="-L /usr/local/lib"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS
./configure --prefix=/usr/local \
--localstatedir=/var/mysql \
--sbindir='/usr/local/bin' \
--libexecdir='/usr/local/bin' \
--enable-thread-safe-client \
--enable-large-files
The preceding options are used to compile the MySQL distribution that
can be found at `http://www-frec.bull.com/'.
If you change the -O3 to -O2 in the preceding `configure' line, you must
also remove the -qstrict option. This is a limitation in the IBM C
compiler.
If you are using `gcc' or `egcs' to compile MySQL, you _must_ use the
-fno-exceptions flag, because the exception handling in `gcc'/`egcs' is
not thread-safe! (This is tested with `egcs' 1.1.) There are also some
known problems with IBM's assembler that may cause it to generate bad
code when used with `gcc'.
We recommend the following `configure' line with `egcs' and `gcc' 2.95
on AIX:
CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory
The -Wa,-many option is necessary for the compile to be successful. IBM
is aware of this problem but is in no hurry to fix it because of the
workaround that is available. We don't know if the -fno-exceptions is
required with `gcc' 2.95, but because MySQL doesn't use exceptions and
the option generates faster code, we recommend that you should always
use it with `egcs' / `gcc'.
If you get a problem with assembler code, try changing the -mcpu=XXX
option to match your CPU. Typically `power2', `power', or `powerpc' may
need to be used. Alternatively, you might need to use `604' or `604e'.
We are not positive but suspect that `power' would likely be safe most
of the time, even on a power2 machine.
If you don't know what your CPU is, execute a `uname -m' command. It
produces a string that looks like `000514676700', with a format of
`xxyyyyyymmss' where `xx' and `ss' are always `00', `yyyyyy' is a
unique system ID and `mm' is the ID of the CPU Planar. A chart of these
values can be found at
`http://www16.boulder.ibm.com/pseries/en_US/cmds/aixcmds5/uname.htm'.
This gives you a machine type and a machine model you can use to
determine what type of CPU you have.
If you have problems with signals (MySQL dies unexpectedly under high
load), you may have found an OS bug with threads and signals. In this
case, you can tell MySQL not to use signals by configuring as follows:
CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
-DDONT_USE_THR_ALARM" \
./configure --prefix=/usr/local/mysql --with-debug \
--with-low-memory
This doesn't affect the performance of MySQL, but has the side effect
that you can't kill clients that are `sleeping' on a connection with
`mysqladmin kill' or `mysqladmin shutdown'. Instead, the client dies
when it issues its next command.
On some versions of AIX, linking with `libbind.a' makes
`getservbyname()' dump core. This is an AIX bug and should be reported
to IBM.
For AIX 4.2.1 and `gcc', you have to make the following changes.
After configuring, edit `config.h' and `include/my_config.h' and change
the line that says this:
#define HAVE_SNPRINTF 1
to this:
#undef HAVE_SNPRINTF
And finally, in `mysqld.cc', you need to add a prototype for
`initgroups()'.
#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif
If you need to allocate a lot of memory to the `mysqld' process, it's
not enough to just use `ulimit -d unlimited'. You may also have to
modify `mysqld_safe' to add a line something like this:
export LDR_CNTRL='MAXDATA=0x80000000'
You can find more information about using a lot of memory at
`http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm'.
Users of AIX 4.3 should use `gmake' instead of the `make' utility
included with AIX.
Info Catalog
(mysql.info) hp-ux-11-x
(mysql.info) other-unix-notes
(mysql.info) sunos
automatically generated byinfo2html