Todos programas MySQL compilam de forma limpa sem alertas no
        solaris usando gcc. Em outros sistemas,
        alertas podem ocorrer devido a diferenças em arquivos include
        dos sistemas. Veja Secção 2.3.6, “Notas MIT-pthreads” para avisos
        que podem ocorrer usando MIT-pthreads. Para outros problemas,
        confira a lista abaixo.
      
A solução para vários problemas envolve reconfiguração. Se você precisa reconfigurar, faça notas do seguinte:
            Se configure é executado depois dele já
            ter sido chamado, ele pode usar informação que foi colhida
            durante a chamada anterior. Esta informação é armazenada
            no arquivo config.cache. Quando
            configure inicia, ele procura por este
            arquivo, lê seu conteúdo, se ele existir, assumindo que
            aquela informação continua correta. Essa conjetura é
            inválida quando você reconfigurar.
          
            Cada vez que você executa configure,
            você deve executar make de novo para
            recompilar. Entretanto, você pode desejar remover primeiro
            antigos arquivos objeto de construções anteriores, porque
            eles foram compilados usando diferentes opções de
            configuração.
          
        Para prevenir antigas informações de configurações ou
        arquivos objetos de serem usados, execute estes comandos antes
        de re-executar configure:
      
shell>rm config.cacheshell>make clean
        Uma alternativa, seria executar make
        distclean
      
A lista abaixo descreve alguns dos problemas compilando o MySQL que tem sido encontrados com mais frequencia:
            
            
            
            
            
            
            Se você obtêm erros quando
            sql_yacc.cc como os mostrados abaixo,
            você provavelmente tem de falta de memória ou espaço de
            swap:
          
Internal compiler error: program cc1plus got fatal signal 11 ou Out of virtual memory ou Virtual memory exhausted
            O problema é que gcc necessita de grande
            quantidade de memória para compilar
            sql_yacc.cc com funções inline. Tente
            executando configure com a opção
            --with-low-memory:
          
shell> ./configure --with-low-memory
            Esta opção adiciona -fno-inline na a
            linha de compilação se você estiver usando
            gcc e -O0 se você
            estiver usando outro programa. Você deve tentar a opção
            --with-low-memory mesmo se você tiver
            muita memória e espaço de swap que você ache ser
            suficieente para não ocorrer erros. Este problema tem
            ocorrido mesmo em sistemas com boas configurações de
            hardware e a opção --with-low-memory
            geralmente corrige isto.
          
            Por padrão, configure escolhe
            c++ como o nome do compilador e GNU
            c++ liga com -lg++. Se
            você estiver usando gcc, este
            comportamento pode causar problemas durante a compilação,
            como o seguinte:
          
configure: error: installation or configuration problem: C++ compiler cannot create executables.
            Você podem também ter problemas durante a compilação
            relacionados à g++,
            libg++ ou libstdc++.
          
            Uma causa destes problemas é que você pode não ter
            g++ ou você pode ter
            g++ mas não ter o
            libg++ ou o libstdc++.
            De uma olhada no arquivo config.log.
            Ele deve conter a razão exata do porque seu compilador C++
            não funciona! Para trabalhar evitando estes problemas,
            você pode usar gcc como seu compilador
            C++. Tente configurar a variável de ambiente
            CXX para "gcc -O3".
            Por exemplo:
          
shell> CXX="gcc -O3" ./configure
            Isto funciona porque gcc compila código
            fonte C++ tão bem quanto g++ faz, mas
            não ifaz a ligação em libg++ ou
            libstdc++ por padrão.
          
            Outra forma de corrigir estes problemas, com certeza, é
            instalando g++, libg++
            e libstdc++. No entanto gostariamos de
            lhe recomendar a não usar libg++ ou
            libstdc++ com o MySQL já que isto irá
            aumentar o tamanho do binário do mysqld sem lhe trazer
            nenhum benefício. Algumas versões destas bibliotecas
            também tem causado problemas estranhos para os usuários
            MySQL no passado.
          
            Usar gcc como compilador C++ também é
            exigido, se você quiser compilar o MySQL com a
            funcionalidade RAID (veja Secção 6.5.3, “Sintaxe CREATE TABLE”
            para mais informações sobre tipos de tabela RAID) e você
            estiver usando o GNU gcc versão 3 e
            acima. Se você obter erros como estes abaixo durante o
            estágio de ligação quando você configurar o MySQL para
            compilar com a opção --with-raid, tente
            usar o gcc como o seu compilador C++
            definindo a variável de ambiente CXX
            mencionada acima:
          
gcc -O3 -DDBUG_OFF -rdynamic -o isamchk isamchk.o sort.o libnisam.a ../mysys/libmysys.a ../dbug/libdbug.a ../strings/libmystrings.a -lpthread -lz -lcrypt -lnsl -lm -lpthread ../mysys/libmysys.a(raid.o)(.text+0x79): In function `my_raid_create': : undefined reference to `operator new(unsigned)' ../mysys/libmysys.a(raid.o)(.text+0xdd): In function `my_raid_create': : undefined reference to `operator delete(void*)' ../mysys/libmysys.a(raid.o)(.text+0x129): In function `my_raid_open': : undefined reference to `operator new(unsigned)' ../mysys/libmysys.a(raid.o)(.text+0x189): In function `my_raid_open': : undefined reference to `operator delete(void*)' ../mysys/libmysys.a(raid.o)(.text+0x64b): In function `my_raid_close': : undefined reference to `operator delete(void*)' collect2: ld returned 1 exit status
            Se sua compilação falhar com erros, como um dos seguintes,
            você deve atualizar sua versão de make
            para GNU make:
          
making all in mit-pthreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment or make: file `Makefile' line 18: Must be a separator (: or pthread.h: No such file or directory
            O Solaris e o FreeBSD são conhecidos por terem alguns
            problemas com o make.
          
            O GNU make versão 3.75 irá funcionar.
          
            Se você deseja definir algumas opções que devem ser
            usadas pelo seu compilador C ou C++, adicione as opções
            para as variáveis de ambiente CFLAGS e
            CXXFLAGS. Você pode também especificar
            os nomes do compilador a ser usado da mesma forma utilizando
            CC e CXX. Exemplo:
          
shell>CC=gccshell>CFLAGS=-O3shell>CXX=gccshell>CXXFLAGS=-O3shell>export CC CFLAGS CXX CXXFLAGS
Olhe em Secção 2.2.8, “Binários MySQL compilados pela MySQL AB” para uma lista de definição de opções que tenham sido úteis em vários sistemas.
            Se você recebeu uma mensagem de erro como esta, é
            necessário atualizar o compilador gcc:
          
            O gcc 2.8.1 funciona, mas recomendamos o
            uso do gcc 2.95.2 ou
            egcs 1.0.3a em seu lugar.
          
            Se você obtem erros como estes vistos abaixo enquanto
            estiver compilando o mysqld, o
            configure não detectou corretamente o
            tipo do último argumento para accept(),
            getsockname() ou
            getpeername():
          
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
     type of the pointer value "&length" is "unsigned long", which
     is not compatible with "int".
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
            Para corrigir isto, edite o arquivo
            config.h (que é gerado pelo
            configure). Procure por estas linhas:
          
/* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXX
            Altere XXX para size_t
            ou int, dependendo de seu sistema
            operacional. (Perceba que você deverá fazer isto cada vez
            que você executar configure, porque
            configure regenera
            config.h.)
          
            O arquivo sql_yacc.cc é gerado pelo
            sql_yacc.yy. Normalmente o processo de
            construção não necessita criar
            sql_yacc.cc, porque o MySQL já vem com
            uma cópia pré-gerada. Entretanto, se você necessita
            recriá-lo você pode encontrar este erro:
          
"sql_yacc.yy", line xxx fatal: default action causes potential...
            Isto é um indício de que sua versão do
            yacc é deficiente. Provavelmente você
            precisará instalar o bison (a versão
            GNU de yacc) e usá-lo no lugar do
            yacc.
          
            Se você necessita depurar mysqld ou um
            cliente MySQL, execute configure com a
            opção --with-debug, então recompile e
            ligue seus clientes com a nova biblioteca cliente. See
            Secção E.2, “Depurando um cliente MySQL.”.
          
Se você tem um erro de compilação no Linux (ex. SuSE Linux 8.1 ou Red Hat Linux 7.3) parecido com o seguinte:
libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer type libmysql.c:1329: too few arguments to function `gethostbyname_r' libmysql.c:1329: warning: assignment makes pointer from integer without a cast make[2]: *** [libmysql.lo] Error 1
            Por padrão, o script configure tenta
            determinar o número correto de argumentos usando o
            compilador GNU C++ g++. Ele testa os
            resultados errados permitidos, se o g++
            não está instalado. Existem dois modos de contornar este
            problema:
          
                Certifique-se de que o GNU C++ g++
                está instalado. Em algumas distribuições Linux, o
                pacote exigido é chamado gpp, em
                outro ele é chamado gcc-c++.
              
                Use o gcc como o seu compilador C++
                configurando a variáavel de ambiente
                CXX para gcc:
export CXX="gcc"
            Note que você precisa executar o
            configure novamente após isto.
          
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.

