Le bit correspondant sur cette page est
Lorsque le script de configuration est exécutée sans paramètres, la partie restante du processus utilisera /usr/local/include/soci
comme destination par défaut pour les fichiers d'en-tête SOCI et /usr/local/lib
comme destination par défaut fichiers bibliothèque
maintenant/usr/local/include doit être dans votre chemin par défaut comprennent (par exemple, essayer quelque chose comme gcc -c -v -x c++ /dev/null -o /dev/null
pour voir la liste de votre installation utilise) et vous pouvez donc les inclure à l'aide
#include <soci/soci.h>
#include <soci/soci-mysql.h>
Vous devez ensuite ajouter les bibliothèques à votre étape de liaison. Il semble que vous ayez des versions statiques et partagées des bibliothèques. Vous devrez ajouter -lsoci_core -lsoci_mysql
à votre étape de lien; Toutefois, si cela ne fonctionne pas, vous devrez également spécifier/usr/local/lib en tant que répertoire de recherche, c'est-à-dire -L/usr/local/lib -lsoci_core -lsoci_mysql
. (Encore une fois il est probablement déjà là mais vous pouvez voir en utilisant gcc -print-search-dirs
.) Cependant, le problème est que si vous utilisez la version partagée et/usr/local/lib n'est pas dans votre chemin de recherche de la bibliothèque de distributions (voir/etc/ld.so.conf et/ou /etc/ld.so.conf.d/*), il ne pourra pas trouver la bibliothèque partagée lors de l'exécution. Vous devrez soit coder en dur dans le chemin d'accès à la bibliothèque avec le commutateur de liens -rpath
ou ajouter/usr/local/lib au chemin de recherche à l'échelle du système comme avant ou dans votre environnement (variable LD_LIBRARY_PATH
). Je ne suis pas sûr de ce que la meilleure façon de faire est - je suggère -rpath
pour éviter de modifier le système en général, bien que si vous construisez beaucoup de bibliothèques dans/usr/local/lib, il serait logique d'ajouter il.
Avez-vous réellement lancé 'make install'? Vous n'avez pas besoin de copier les fichiers d'en-tête dans le répertoire de votre projet. – chrisaycock
J'ai exécuté cette commande.Si je ne copie pas ces fichiers, le compilateur donne une erreur en disant que les fichiers soci.h et soci-mysql.h n'ont pas été trouvés. Je copie juste les inclusions suivantes d'un exemple sur la documentation: [code] #include "soci.h" #include "soci-mysql.h" [/ code] mais cela n'a pas fonctionné, le compilateur a dit que ces fichiers didn n'existe pas, alors j'ai essayé de les copier du paquet soci. – NeDark