Problemas de Ligação com a Biblioteca do Cliente MariaDB
Se você estiver ligando o seu programa e obter o erro de símbolos sem referência que iniciam com mysql_
, como os seguintes:
/tmp/ccFKsdPa.o: In function `main': /tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init' /tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x57): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error' /tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'
você deve estar apto a resolvê-los adicionando -Lpath-to-the-mysql-library -lmysqlclient
no final da sua linha de ligação.
Se você obter erros de undefined reference (referência indefinida)
para as funções descompactadas
ou compactadas
, adicione -lz
no final sa sua linha de ligação e tente novamente!
Se você obter erros de undefined reference (referência indefinida)
para funções que devem existir em seu sistema, como connect
, verifique a página do man sobre a função em questão para saber quais bibiotecas você deve adicionar a sua linha de ligação!
Se você obter erros de undefined reference (referência indefinida)
para funções que não existem em seu sistema, como o seguinte
mf_format.o(.text+0x201): undefined reference to `__lxstat'
normalmente significa que sua biblioteca é compilada em um sistema que não é 100% compatível com o seu. Neste caso você de fazer o download da última distribuição fonte do MariaDB e compilá-la você mesmo. Leia "Instalando uma distribuição com fontes do MariaDB".
Se você estiver tentando executar um programa e então obter erros de símbolos sem referência que começam com mysql_
ou que a biblioteca do mysqlclient
não pode encontrar, significa que seu sistema não pode encontrar a biblioteca compartilhada libmysqlclient.so
.
A correção deste problema é dizer ao seu sistema para buscar onde a biblioteca esta lacolizada usando um dos seguintes métodos:
- Adicione o caminho ao diretório onde está o
libmysqlclient.so
à variável de ambienteLD_LIBRARY_PATH
. - Adicione o caminho ao diretório onde está o
libmysqlclient.so
à variável de ambienteLD_LIBRARY
. - Copie
libmysqlclient.so
a algum local que é pesquisado pelo seu sistema, como/lib
, e atualize a informação da biblioteca compartilhada executandoldconfig
.
OUtro modo de resolver este problema é ligar o seu programa estaticamente, com -static
, ou removendo as bibliotecas dinâmicas do MariaDB antes de ligar o seu código. Na próxima vez você deve estar certo que nenhum outro programa esta usando bibliotecas dinâmicas!