[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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 \ --sysconfdir=/etc/mysql \ --sbindir='/usr/local/bin' \ --libexecdir='/usr/local/bin' \ --enable-thread-safe-client \ --enable-large-files |
Above are the options 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
is necessary for the compile to be successful. IBM is
aware of this problem but is in to hurry to fix it because of the workaround
available. We don't know if the -fno-exceptions
is required with
gcc 2.95
, but as MySQL doesn't use exceptions and the above
option generates faster code, we recommend that you should always use this
option 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://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/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 with:
shell> 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
core dump. 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 initgoups.
#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 about using a lot of memory at: http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |