From 293913568e6a7a86fd1479e1cff8e2ecb58d6568 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 15:44:03 +0200 Subject: Adding upstream version 16.2. Signed-off-by: Daniel Baumann --- doc/src/sgml/html/libpq-build.html | 106 +++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 doc/src/sgml/html/libpq-build.html (limited to 'doc/src/sgml/html/libpq-build.html') diff --git a/doc/src/sgml/html/libpq-build.html b/doc/src/sgml/html/libpq-build.html new file mode 100644 index 0000000..622d511 --- /dev/null +++ b/doc/src/sgml/html/libpq-build.html @@ -0,0 +1,106 @@ + +34.21. Building libpq Programs

34.21. Building libpq Programs #

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

  • + Include the libpq-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 the PostgreSQL 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 the + CPPFLAGS 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 utility + pg_config to find out where the header + files are on the local system: +

    +$ pg_config --includedir
    +/usr/local/include
    +

    +

    + If you + have pkg-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 the libpq + library gets pulled in, as well as the option + -Ldirectory to point + the compiler to the directory where the + libpq 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 using + pg_config as well: +

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

    +

    + Or again use pkg-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. +

+

\ No newline at end of file -- cgit v1.2.3