:: DEVELOPER ZONE
Detecção automática de xlC está faltando no Autoconf, portando um
comando configure deste tipo é necessário quando estiver compilando
o MySQL (Este exemplo usa o compilador 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
Acima estão as opções usadas para compilar a distribuição MySQL que pode ser encontrada em http://www-frec.bull.com/.
Se você alterar o -O3 para -O2 na linha de configuração acima,
você também deve remover a opção -qstrict (isto é uma limitação no
compilador C da IBM).
Se você estiver usando gcc ou egcs para compilar o MySQL, você
DEVE usar a opção -fno-exceptions, já que o manipulador de
exceções no gcc/egcs não é seguro para threads! (Isto foi
testado com egcs 1.1). Existem também alguns problemas conhecidos com o
assembler da IBM que pode gerar código errado quando usado com gcc.
Nós recomendamos a seguinte linha do configure com egcs e
gcc 2.95 no 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
O -Wa,-many é necessário para o compilador ser bem sucedido. IBM está
ciente deste problema mas não está com pressa de corrigí-lo devido ao fato do
problema poder ser contornado. Nós não sabemos se o -fno-exceptions é
necessário com gcc 2.9.5, mas como o MySQL não utiliza exceções e a opção
acima gera código mais rápido, recomendamos que você sempre use esta opção
com o egcs/gcc.
Se você tiver algum problema com código assembler tente alterar o -mcpu=xxx para o seu processador. Normalmente power2, power ou powerpc podem ser usados, de uma maneira alternativa você pode precisar usar 604 ou 604e. Não tenho certeza mas acredito que usar "power" deve satisfazer a maioria dos casos, mesmo em uma máquina power2.
Se você não sabe qual é o seu processador, utilize o comando "uname -m", isto irá fornecer a você uma string que parece com "000514676700", com um formato de xxyyyyyymmss onde xx e ss são sempre 0s, yyyyyy é o ID único do sistema e mm é o ID da CPU Planar. Uma tabela destes valores podem ser encontrados em http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm. Isto irá lhe fornecer um tipo de máquina e um modelo de máquina que você pode usar para determinar que tipo de cpu você tem.
Se você tiver problemas com sinais (MySQL finaliza sem notificação sob alta carga) você pode ter encontrado um bug de SO com threads e sinais. Neste caso você pode dizer ao MySQL para não usar sinais configurando-o com:
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
Isto não afeta a performance do MySQL, mas tem o efeito colateral que você não
pode matar clientes que estão ``dormindo'' em uma conexão com
mysqladmin kill ou mysqladmin shutdown. Neste caso, o cliente
morrerá quando ele chegar no próximo comando.
Em algumas versões do AIX, ligando com libbind.a faz o getservbyname
descarregar core. Isto é erro no AIX e deve ser relatado para a IBM.
Para o AIX 4.2.1 e gcc você tem que fazer as seguintes alterações.
Depois de configurar, edite o config.h e include/my_config.h
e altere a linha que diz
#define HAVE_SNPRINTF 1
para
#undef HAVE_SNPRINTF
E finalmente, no mysqld.cc você precisa adicionar um protótipo para
initgroups.
#ifdef _AIX41 extern "C" int initgroups(const char *,int); #endif
Se você precisar se alocar muita memória para o processo mysqld, não é
suficiente apenas definir 'ulimit -d unlimited'. Você também deve configurar
no mysqld_safe algo do tipo:
export LDR_CNTRL='MAXDATA=0x80000000'
Você pode encontrar mais sobre o uso de muita memória em: http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm.
© 1995-2005 MySQL AB. All rights reserved.
