Movatterモバイル変換


[0]ホーム

URL:



Facebook
Postgres Pro
Facebook
Downloads
33.21. Buildinglibpq Programs
Prev UpChapter 33. libpq — C LibraryHome Next

33.21. Buildinglibpq Programs

To build (i.e., compile and link) a program usinglibpq you need to do all of the following things:

  • Include thelibpq-fe.h header file:

    #include <libpq-fe.h>

    If you failed to do that then you will normally get error messages from your compiler similar to:

    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)

  • Point your compiler to the directory where thePostgres Pro header files were installed, by supplying the-Idirectory option to your compiler. (In some cases the compiler will look into the directory in question by default, so you can omit this option.) For instance, your compile command line could look like:

    cc -c -I/usr/local/pgsql/include testprog.c

    If you are using makefiles then add the option to theCPPFLAGS variable:

    CPPFLAGS += -I/usr/local/pgsql/include

    If there is any chance that your program might be compiled by other users then you should not hardcode the directory location like that. Instead, you can run the utilitypg_config to find out where the header files are on the local system:

    $ pg_config --includedir/usr/local/include

    If you havepkg-config installed, you can run instead:

    $ pkg-config --cflags libpq-I/usr/local/include

    Note that this will already include the-I in front of the path.

    Failure to specify the correct option to the compiler will result in an error message such as:

    testlibpq.c:8:22: libpq-fe.h: No such file or directory

  • When linking the final program, specify the option-lpq so that thelibpq library gets pulled in, as well as the option-Ldirectory to point the compiler to the directory where thelibpq library resides. (Again, the compiler will search some directories by default.) For maximum portability, put the-L option before the-lpq option. For example:

    cc -o testprog testprog1.o testprog2.o -L/usr/local/pgsql/lib -lpq

    You can find out the library directory usingpg_config as well:

    $ pg_config --libdir/usr/local/pgsql/lib

    Or again usepkg-config:

    $ pkg-config --libs libpq-L/usr/local/pgsql/lib -lpq

    Note again that this prints the full options, not only the path.

    Error messages that point to problems in this area could look like the following:

    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'

    This means you forgot-lpq.

    /usr/bin/ld: cannot find -lpq

    This means you forgot the-L option or did not specify the right directory.


Prev Up Next
33.20. Behavior in Threaded Programs Home 33.22. Example Programs
pdfepub
Go to Postgres Pro Standard 15
By continuing to browse this website, you agree to the use of cookies. Go toPrivacy Policy.

[8]ページ先頭

©2009-2025 Movatter.jp