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.