Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
ACCUEIL POSTGRESQL FORUM POSTGRESQL F.A.Q POSTGRESQL UDF POSTGRESQL LIVRES POSTGRESQL

29.18. Construire des applications avec libpq

Pour construire (c'est-à-dire compiler et lier) un programme utilisant libpq, vous avez besoin de faire tout ce qui suit :

  • 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.

Responsable bénévole de la rubrique PostgreSQL : Damien Griessinger (HpAlpha) - Contacter par EMail :
Vos questions techniques : forum d'entraide PostgreSQL - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.