-
Incluez le fichier d'en-tête libpq-fe.h :
#include <libpq-fe.h>
Si vous ne le faites pas, alors vous obtiendrez normalement les
messages d'erreurs similaires à ceci
foo.c: In function `main':
foo.c:34: `PGconn' undeclared (first use in this function)
foo.c:35: `PGresult' undeclared (first use in this function)
foo.c:54: `CONNECTION_BAD' undeclared (first use in this function)
foo.c:68: `PGRES_COMMAND_OK' undeclared (first use in this function)
foo.c:95: `PGRES_TUPLES_OK' undeclared (first use in this function)
-
Pointez votre compilateur sur le répertoire où les fichiers
d'en-tête de PostgreSQL™
ont été installés en fournissant l'option -I
répertoire
à votre compilateur
(dans certains cas, le compilateur cherchera dans le répertoire
en question par défaut, donc vous pouvez omettre cette option).
Par exemple, votre ligne de commande de compilation devrait
ressembler à ceci :
cc -c -I/usr/local/pgsql/include testprog.c
Si vous utilisez des makefiles, alors ajoutez cette option à la
variable CPPFLAGS :
CPPFLAGS += -I/usr/local/pgsql/include
S'il existe une chance pour que votre programme soit compilé
par d'autres utilisateurs, alors vous ne devriez pas coder en
dur l'emplacement du répertoire. À la place, vous pouvez
exécuter l'outil
pg_config
pour trouver où
sont placés les fichiers d'en-tête sur le système local :
$ pg_config --includedir
/usr/local/include
Un échec sur la spécification de la bonne option au compilateur
résultera en un message d'erreur tel que
testlibpq.c:8:22: libpq-fe.h: No such file or directory
-
Lors de l'édition des liens du programme final, spécifiez
l'option -lpq de façon à ce que les
bibliothèques libpq soient
intégrées, ainsi que l'option -L
répertoire
pour pointer le
compilateur vers le répertoire où les bibliothèques
libpq résident (de nouveau, le
compilateur cherchera certains répertoires par défaut). Pour
une portabilité maximale, placez l'option -L avant l'option -lpq.
Par exemple :
cc -o testprog testprog1.o testprog2.o -L/usr/local/pgsql/lib -lpq
Vous pouvez aussi récupérer le répertoire des bibliothèques en
utilisant
pg_config
:
$ pg_config --libdir
/usr/local/pgsql/lib
Les messages d'erreurs, pointant vers des problèmes de ce
style, pourraient ressembler à ce qui suit.
testlibpq.o: In function `main':
testlibpq.o(.text+0x60): undefined reference to `PQsetdbLogin'
testlibpq.o(.text+0x71): undefined reference to `PQstatus'
testlibpq.o(.text+0xa4): undefined reference to `PQerrorMessage'
Ceci signifie que vous avez oublié -lpq.
/usr/bin/ld: cannot find -lpq
Ceci signifie que vous avez oublié l'option -L ou que vous n'avez pas indiqué le bon
répertoire.