Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

cpp do conector mysql no centos 6 referência indefinida para


Seu comando de compilação atual:g++ demo.cpp -o demo não contém informações para o linker ld quais bibliotecas devem ser vinculadas. Por causa disso, você recebe um erro de vinculador:

Em esta documentação está escrito quais bibliotecas são necessárias.

Você pode vincular estático ou dinamicamente.
Vinculação estática significa que seu executável será executado em máquinas que não possuem as bibliotecas necessárias instaladas, pois as bibliotecas estão dentro do executável. Isso também torna o executável maior em tamanho. No caso do MySQL Connector/C++ as bibliotecas são:libmysqlcppconn-static.a e libmysqlclient.a
Vinculação dinâmica significa que seu executável precisará encontrar as bibliotecas na máquina onde deve ser executado. A biblioteca necessária é:libmysqlcppconn.so .

Seu comando de compilação com vinculação dinâmica (usando libmysqlcppconn.so ) deve se parecer com:
g++ demo.cpp -o demo -lmysqlcppconn

Observe ainda a diferença entre -l e -L conforme mencionado aqui no SO ou aqui na documentação oficial do vinculador do gcc :

Você não precisa de um caminho (-L ) aqui, pois as bibliotecas devem estar em /usr/local/lib que é a instalação padrão e já está no caminho de pesquisa do vinculador.