Die automatische Erkennung von xlC
fehlt
bei Autoconf. Aus diesem Grund muss eine Reihe von Variablen
eingestellt werden, bevor configure
ausgeführt wird. Das folgende Beispiel verwendet den
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
Obige Optionen werden zur Kompilierung der MySQL-Distribution verwendet, die unter http://www-frec.bull.com/ verfügbar ist.
Wenn Sie in obiger configure-Zeile die
Option -O3
auf -O2
setzen,
müssen Sie auch die Option -qstrict
entfernen. Dies ist eine Einschränkung des C-Compilers von
IBM.
Wenn Sie gcc oder egcs
zur Kompilierung von MySQL verwenden,
müssen Sie das Flag
-fno-exceptions
benutzen, weil die
Fehlerbehandlung in
gcc/egcs nicht
Thread-sicher ist! (Dies wurde mit egcs 1.1
getestet.) Es gibt ferner einige bekannte Probleme mit dem
IBM-Assembler, die in Verbindung mit gcc zu
fehlerhaftem Code führen können.
Wir empfehlen die folgende configure-Zeile bei egcs und gcc 2.95 unter 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
Die Option -Wa,-many
ist erforderlich, damit
die Kompilierung erfolgreich verläuft. Bei IBM ist dieses
Problem bekannt, man sieht sich aber mit der Behebung nicht
unter Zeitdruck, da ein Workaround verfügbar ist. Wir wissen
nicht, ob -fno-exceptions
bei
gcc 2.95 erforderlich ist, aber weil MySQL
keine Ausnahmen verwendet und die Option einen schnelleren
Code erzeugt, empfehlen wir ihre generelle Verwendung bei
egcs und gcc.
Wenn ein Problem mit dem Assemblercode auftritt, versuchen Sie
die Option
-mcpu=
so zu
ändern, dass sie zu Ihrer CPU passt. Normalerweise müssen
xxx
power2
, power
oder
powerpc
verwendet werden. Möglicherweise
müssen Sie aber auch 604
oder
604e
einsetzen. Wir wissen es nicht genau,
nehmen aber an, dass power
mit hoher
Wahrscheinlichkeit in den meisten Fällen sicher ist (und zwar
auch auf power2-Systemen).
Wenn Sie nicht wissen, welchen Prozessor Sie haben, führen
Sie den Befehl uname -m
aus. Er erzeugt
einen String, der etwa so aussieht:
000514676700
. Das Format ist
xxyyyyyymmss
, wobei xx
und ss
immer 00
,
yyyyyy
eine eindeutige Systemkennung und
mm
die Kennung des CPU-Planars sind. Eine
Übersicht über diese Werte finden Sie unter
http://www16.boulder.ibm.com/pseries/en_US/cmds/aixcmds5/uname.htm.
Dort erhalten Sie Angaben zu Rechnertyp und -modell, auf deren Basis Sie die CPU in Ihrem Rechner ermitteln können.
Wenn Sie Probleme mit Signalen haben (weil sich MySQL unter hoher Belastung unerwartet aufhängt), haben Sie unter Umständen einen Betriebssystembug bei den Threads oder Signalen gefunden. In diesem Fall können Sie MySQL wie folgt anweisen, Signale nicht zu verwenden:
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
Hierdurch wird die Leistungsfähigkeit von MySQL nicht beeinträchtigt; ein Nebeneffekt besteht aber darin, dass Sie Clients, die an einer Verbindung „schlafen“, mit mysqladmin kill oder mysqladmin shutdown nicht terminieren können. Stattdessen hängt sich der Client auf, wenn er den nächsten Befehl absetzt.
Bei einigen Versionen von AIX führt eine Verknüpfung mit
libbind.a
bei
getservbyname()
zu einem Speicherauszug.
Dies ist ein AIX-Bug, der IBM gemeldet werden sollte.
Bei AIX 4.2.1 und gcc müssen Sie die folgenden Änderungen vornehmen.
Bearbeiten Sie nach der Konfiguration
config.h
und
include/my_config.h
. Die Zeile
#define HAVE_SNPRINTF 1
ändern Sie wie folgt:
#undef HAVE_SNPRINTF
Schließlich müssen Sie in mysqld.cc
noch einen Prototyp für initgroups()
hinzufügen.
#ifdef _AIX41 extern "C" int initgroups(const char *,int); #endif
Wenn Sie dem Prozess mysqld viel Speicher zuweisen müssen, reicht es nicht aus, einfach ulimit -d unlimited zu verwenden. Sie müssen vielmehr auch mysqld_safe mit einer Zeile wie der folgenden ergänzen:
export LDR_CNTRL='MAXDATA=0x80000000'
Weitere Informationen zur Verwendung einer großen Menge Speicher finden Sie unter http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm.
Benutzer von AIX 4.3 sollten gmake statt des in AIX enthaltenen make-Hilfsprogramms verwenden.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.