xlC の自動検知が
          Autoconf
          で不明のため、configure
          を実行する前に多くの変数を設定する必要があります。以下の例では
          IBM コンパイラを使用しています。
        
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
前述のオプションを使用して http://www-frec.bull.com/ にある MySQL 配布をコンパイルします。
          前述の cofigure 行の
          -O3 を -O2
          に変更すると、-qstrict
          オプションも削除できます。これが IBM C
          コンパイラの制限です。
        
          MySQL のコンパイルに
          gcc
          を使用する場合、-fno-exceptions
          フラグを使用する必要があります。これは、gcc
          の例外処理がスレッドセーフでないためです。IBM
          のコンパイラには
          gcc
          を使用すると間違ったコードを生成する未詳の問題があります。
        
AIX 上の gcc 2.95 では次の configure 行を使用してください。
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
          コンパイルを成功させるには
          -Wa,-many
          オプションが必要です。IBM
          はこの問題を認識していますが、回避策があるためにこの問題の修正にはそれほど急いでいません。gcc
          2.95 で -fno-exceptions
          が必要かどうか定かではありませんが、MySQL
          では例外を使用せず、このオプションで生成されるコードのほうが高速であるため、gcc
          では常にこのオプションを使用するようにしてください。
        
          アセンブラのコードで問題が発生する場合は、-mcpu=
          オプションを CPU
          に合うように変更してみてください。一般的には
          xxxpower2、power、あるいは
          powerpc
          が必要です。604
          あるいは 604e
          が必要になる場合もあります。確かではありませんが
          power
          はほとんどの時間、power2
          マシン上でも安全だと思われます。
        
          どの CPU
          を使用しているか分からない場合には、uname
          -m
          コマンドを実行します。それによって
          000514676700
          のような文字列を生成し、フォーマットは
          xxyyyyyymmss で
          xx および
          ss は常に
          00
          で、yyyyyy
          は一意のシステム ID で
          mm は CPU Planar の ID
          です。これらの値の表が
          http://www16.boulder.ibm.com/pseries/en_US/cmds/aixcmds5/uname.htm
          にあります。
        
これによりどんな CPU を使用しているかを決めるマシンの種類とマシンのモデルが分かります。
AIX 5.3 のスレッドで問題が発生する場合は、AIX 5.3 をテクノロジレベル 7 (5300-07) にアップグレードするようにしてください。
信号の問題 (MySQL が高負荷で突然停止する) がある場合、スレッドおよび信号の OS バグがある場合があります。この場合、以下のように設定して MySQL が信号を使用しないようにします。
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
これによって MySQL の性能には影響ありませんが、mysqladmin kill あるいは mysqladmin shutdown と接続して 「sleeping」 しているクライアントを切断できなくなる副作用がでます。その代わり、クライアントはそれが次のコマンドを発行したときに切断します。
          AIX
          バージョンの中には、libbind.a
          とリンクするこによって
          getservbyname()
          ダンプコアを作成します。これは AIX
          のバグですので IBM
          への報告する必要があります。
        
For AIX 4.2.1 および gcc で、以下の変更が必要です。
          設定後、config.h
          および
          include/my_config.h
          を編集して行を以下のように変更します。
        
#define HAVE_SNPRINTF 1
に変更します。
#undef HAVE_SNPRINTF
          最後に、mysqld.cc
          で、initgroups()
          にプロトタイプを追加する必要があります。
        
#ifdef _AIX41 extern "C" int initgroups(const char *,int); #endif
32 ビットバイナリで mysqld プロセスに大量のメモリーを割り当てる必要がある場合は、ulimit -d unlimited を使用するだけでは十分ではありません。mysqld_safe も変更して以下のような行を追加する必要があります。
export LDR_CNTRL='MAXDATA=0x80000000'
大量のメモリーの使用方法に関する詳細は、http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm を参照してください。
AIX 4.3 のユーザーは AIX にある make ユーティリティーの代わりに gmake を使用する必要があります。
AIX 4.1 では、C コンパイラは個別の製品として AIX とはバンドルしていません。gcc 3.3.2 は、ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc/ で入手できます。
          AIX 上の gcc 3.3.2 で
          MySQL をコンパイルするステップは
          gcc 2.95 (特に
          config.h および
          my_config.h を
          configure
          実行後に編集する必要性)
          を使用したステップに似ています。しかし、configure
          を実行する前に、curses.h
          ファイルを以下のようにパッチする必要があります。
        
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/curses.h.ORIG
       Mon Dec 26 02:17:28 2005
--- /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/curses.h
Mon Dec 26 02:40:13 2005
***************
*** 2023,2029 ****
  #endif /* _AIX32_CURSES */
! #if defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus) || defined
(__STRICT_ANSI__)
  extern int delwin (WINDOW *);
  extern int endwin (void);
  extern int getcurx (WINDOW *);
--- 2023,2029 ----
  #endif /* _AIX32_CURSES */
! #if 0 && (defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus)
|| defined
(__STRICT_ANSI__))
  extern int delwin (WINDOW *);
  extern int endwin (void);
  extern int getcurx (WINDOW *);

