Su comando de compilación actual:g++ demo.cpp -o demo
no contiene información para el enlazador ld
contra qué bibliotecas deben vincularse. Por eso obtienes un error del enlazador:
En esta documentación está escrito qué bibliotecas se necesitan.
Puede enlazar de forma estática o dinámica.
Enlace estático significa que su ejecutable se ejecutará en máquinas que no tienen instaladas las bibliotecas necesarias, ya que las bibliotecas están dentro del ejecutable. Esto también hace que el ejecutable sea más grande. En el caso de MySQL Connector/C++, las bibliotecas son:libmysqlcppconn-static.a
y libmysqlclient.a
Enlace dinámico significa que su ejecutable necesitará encontrar las bibliotecas en la máquina donde debe ejecutarse. La biblioteca necesaria es:libmysqlcppconn.so
.
Tu comando de compilación con enlace dinámico (usando libmysqlcppconn.so
) debería verse como:
g++ demo.cpp -o demo -lmysqlcppconn
Tenga en cuenta además la diferencia entre -l
y -L
como se menciona aquí en SO
o aquí en la documentación oficial del enlazador gcc
:
No necesitas una ruta (-L
) aquí, ya que las bibliotecas deben estar bajo /usr/local/lib
que es la instalación por defecto y ya está en la ruta de búsqueda del enlazador.