(mysql.info.gz) IBM-AIX
Info Catalog
(mysql.info.gz) HP-UX 11
(mysql.info.gz) Other Unix Notes
(mysql.info.gz) 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
will produce 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 will give 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 will
die 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'.
Info Catalog
(mysql.info.gz) HP-UX 11
(mysql.info.gz) Other Unix Notes
(mysql.info.gz) SunOS
automatically generated byinfo2html