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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.