Mysql
 sql >> Base de données >  >> RDS >> Mysql

connecteur mysql cpp dans centos 6 référence indéfinie à

Votre commande de compilation actuelle :g++ demo.cpp -o demo ne contient pas d'informations pour le linker ld auxquelles les bibliothèques doivent être liées. À cause de cela, vous obtenez une erreur de lien :

Dans cette documentation est écrit quelles bibliothèques sont nécessaires.

Vous pouvez créer un lien statique ou dynamique.
Lien statique signifie que votre exécutable s'exécutera sur des machines sur lesquelles les bibliothèques nécessaires ne sont pas installées, car les bibliothèques se trouvent à l'intérieur de l'exécutable. Cela augmente également la taille de l'exécutable. Dans le cas du connecteur MySQL/C++, les bibliothèques sont :libmysqlcppconn-static.a et libmysqlclient.a
Lien dynamique signifie que votre exécutable devra trouver les bibliothèques sur la machine sur laquelle il doit s'exécuter. La bibliothèque nécessaire est :libmysqlcppconn.so .

Votre commande de compilation avec lien dynamique (en utilisant libmysqlcppconn.so ) devrait ressembler à :

g++ demo.cpp -o demo -lmysqlcppconn

Notez en outre la différence entre -l et -L comme mentionné ici sur SO ou ici dans la documentation officielle de l'éditeur de liens gcc :

Vous n'avez pas besoin d'un chemin (-L ) ici car les bibliothèques doivent se trouver sous /usr/local/lib qui est l'installation par défaut et qui se trouve déjà dans le chemin de recherche de l'éditeur de liens.