HP-UX Version 11.x Notes
<<<
Notes relatives à IBM-AIX Notes relatives à SunOS 4
>>>

2.6.5 Notes sur les autres Unix
2.6 Notes spécifiques aux systèmes d'exploitation
2 Installer MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Notes relatives à la version 10.20 de HP-UX
HP-UX Version 11.x Notes
->Notes relatives à IBM-AIX
Notes relatives à SunOS 4
Notes pour Alpha-DEC-UNIX ( Tru64 )
Notes pour Alpha-DEC-OSF/1
Notes relatives à SGI Irix
Notes sur SCO
Notes sur SCO UnixWare Version 7.1.x

2.6.5.3 Notes relatives à IBM-AIX

La détection automatique de xlC est absente de Autoconf, ce qui fait qu'un commande configure comme celle qui suit est requise lors de la compilation de MySQL (Cet exemple utilise le compilateur 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 \
        --sysconfdir=/etc/mysql \
        --sbindir='/usr/local/bin' \
        --libexecdir='/usr/local/bin' \
        --enable-thread-safe-client \
        --enable-large-files
Ce sont les options utilisées pour compiler la distribution de MySQL qui peut être trouvée sur http://www-frec.bull.com/ .

Si vous changez le -O3 en -O2 dans la ligne précédente, vous devez aussi enlever l'option -qstrict (c'est une limitation du compilateur IBM C).

Si vous utilisez gcc ou egcs pour compiler MySQL, vous devez utiliser l'option -fno-exceptions , vu que la gestion des exceptions de gcc / egcs n'est pas sûre pour les threads ! (Cela est testé avec egcs 1.1.) Il y a aussi quelques problèmes connus avec l'assembleur d'IBM, qui peuvent lui faire générer du mauvais code lors de son utilisation avec gcc.

Nous recommandons la ligne de configure suivante avec egcs et gcc 2.95 sur 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
Le -Wa,-many est nécessaire pour que la compilation se passe sans problèmes. IBM est au courant de ce problème mais n'est pas pressé de le corriger à cause de l'existence du palliatif. Nous ne savons pas si -fno-exceptions est requise avec gcc 2.95 , mais comme MySQL n'utilise pas les exeptions et que l'option en question génère un code plus rapide, nous vous recommandons de toujours utiliser cette option avec egcs / gcc .

Si vous obtenez un problème avec le code de l'assembleur essayez en changeant l'option -mcpu=xxx pour l'adapter à votre processeur. Le plus souvent, on a besoin de power2, power, ou powerpc, et sinon 604 ou 604e. Je ne suis pas positif mais je pense que l'utilisation de "power" sera sûre la plupart du temps, même sur une machine power2.

Si vous ne savez pas quel est votre processeur, exécutez "uname -m", cela vous renverra une chaîne comme "000514676700", avec un format xxyyyyyymmss où xx et ss sont toujours des zéros, yyyyyy est un identifiant unique du système et mm est l'identifiant du CPU Planar. Une liste de ces valeurs peut être trouvée sur http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm . Cela vous donnera un type et un modèle de machine que vous pouvez utiliser pour déterminer quel type de processeur vous avez.

Si vous avez des problèmes avec les signaux (MySQL se termine de manière imprévue lors des montées en charge) vous avez peut-être trouvé un bogue du système avec les threads et les signaux. Dans ce cas, vous pouvez demander à MySQL de ne pas utiliser les signaux en configuration avec :


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
Cela n'affecte pas les performances de MySQL, mais comporte un effet secondaire faisant en sorte que vous ne pourrez tuer les clients en état ``sleeping'' sur une connexion avec mysqladmin kill ou mysqladmin shutdown . A la place, le client se terminera lorsqu'il émmetra sa prochaine commande.

Sur quelques versions de AIX, lier avec libbind.a fait vider son noyau à getservbyname (core dump). Il s'agit d'un bogue AIX et doit être remonté à IBM.

Pour AIX 4.2.1 et gcc vous devez apporter les modifications suivantes :

Après la configuration, éditez config.h et include/my_config.h et changez la ligne qui comporte


#define HAVE_SNPRINTF 1
en

#undef HAVE_SNPRINTF
Et finalement, dans mysqld.cc vous devez ajouter un prototype pour initgoups.

#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif
Si vous avez besoin d'allouer beaucoup de mémoire au processus mysqld, il ne suffit pas de configurer 'ulimit -d unlimited'. Vous aurez aussi à configurer dans mysqld_safe quelque chose comme :

export LDR_CNTRL='MAXDATA=0x80000000'
Vous trouverez plus d'informations sur l'utilisation d'une grande quantité de mémoire sur : http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm .

<< Notes relatives à IBM-AIX >>
HP-UX Version 11.x Notes Notes sur les autres Unix Notes relatives à SunOS 4