| [ < ] | [ > ] | [ << ] | [ 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] | [ ? ] |