[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: libpq-build.html
File is not writable. Editing disabled.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Building libpq Programs</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 9.2.24 Documentation" HREF="index.html"><LINK REL="UP" TITLE="libpq - C Library" HREF="libpq.html"><LINK REL="PREVIOUS" TITLE="Behavior in Threaded Programs" HREF="libpq-threading.html"><LINK REL="NEXT" TITLE="Example Programs" HREF="libpq-example.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2017-11-06T22:43:11"></HEAD ><BODY CLASS="SECT1" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" ><A HREF="index.html" >PostgreSQL 9.2.24 Documentation</A ></TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A TITLE="Behavior in Threaded Programs" HREF="libpq-threading.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="libpq.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" >Chapter 31. <SPAN CLASS="APPLICATION" >libpq</SPAN > - C Library</TD ><TD WIDTH="20%" ALIGN="right" VALIGN="top" ><A TITLE="Example Programs" HREF="libpq-example.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="LIBPQ-BUILD" >31.20. Building <SPAN CLASS="APPLICATION" >libpq</SPAN > Programs</A ></H1 ><P > To build (i.e., compile and link) a program using <SPAN CLASS="APPLICATION" >libpq</SPAN > you need to do all of the following things: <P ></P ></P><UL ><LI ><P > Include the <TT CLASS="FILENAME" >libpq-fe.h</TT > header file: </P><PRE CLASS="PROGRAMLISTING" >#include <libpq-fe.h></PRE ><P> If you failed to do that then you will normally get error messages from your compiler similar to: </P><PRE CLASS="SCREEN" >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)</PRE ><P> </P ></LI ><LI ><P > Point your compiler to the directory where the <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > header files were installed, by supplying the <TT CLASS="LITERAL" >-I<TT CLASS="REPLACEABLE" ><I >directory</I ></TT ></TT > 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: </P><PRE CLASS="PROGRAMLISTING" >cc -c -I/usr/local/pgsql/include testprog.c</PRE ><P> If you are using makefiles then add the option to the <TT CLASS="VARNAME" >CPPFLAGS</TT > variable: </P><PRE CLASS="PROGRAMLISTING" >CPPFLAGS += -I/usr/local/pgsql/include</PRE ><P> </P ><P > 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 <TT CLASS="COMMAND" >pg_config</TT > to find out where the header files are on the local system: </P><PRE CLASS="SCREEN" ><SAMP CLASS="PROMPT" >$</SAMP > pg_config --includedir <SAMP CLASS="COMPUTEROUTPUT" >/usr/local/include</SAMP ></PRE ><P> </P ><P > Failure to specify the correct option to the compiler will result in an error message such as: </P><PRE CLASS="SCREEN" >testlibpq.c:8:22: libpq-fe.h: No such file or directory</PRE ><P> </P ></LI ><LI ><P > When linking the final program, specify the option <TT CLASS="LITERAL" >-lpq</TT > so that the <SPAN CLASS="APPLICATION" >libpq</SPAN > library gets pulled in, as well as the option <TT CLASS="LITERAL" >-L<TT CLASS="REPLACEABLE" ><I >directory</I ></TT ></TT > to point the compiler to the directory where the <SPAN CLASS="APPLICATION" >libpq</SPAN > library resides. (Again, the compiler will search some directories by default.) For maximum portability, put the <TT CLASS="OPTION" >-L</TT > option before the <TT CLASS="OPTION" >-lpq</TT > option. For example: </P><PRE CLASS="PROGRAMLISTING" >cc -o testprog testprog1.o testprog2.o -L/usr/local/pgsql/lib -lpq</PRE ><P> </P ><P > You can find out the library directory using <TT CLASS="COMMAND" >pg_config</TT > as well: </P><PRE CLASS="SCREEN" ><SAMP CLASS="PROMPT" >$</SAMP > pg_config --libdir <SAMP CLASS="COMPUTEROUTPUT" >/usr/local/pgsql/lib</SAMP ></PRE ><P> </P ><P > Error messages that point to problems in this area could look like the following: </P><PRE CLASS="SCREEN" >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'</PRE ><P> This means you forgot <TT CLASS="OPTION" >-lpq</TT >. </P><PRE CLASS="SCREEN" >/usr/bin/ld: cannot find -lpq</PRE ><P> This means you forgot the <TT CLASS="OPTION" >-L</TT > option or did not specify the right directory. </P ></LI ></UL ><P> </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="libpq-threading.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="libpq-example.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Behavior in Threaded Programs</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="libpq.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Example Programs</TD ></TR ></TABLE ></DIV ></BODY ></HTML >
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server05.hostinghome.co.in
Server IP: 192.168.74.40
PHP Version: 7.4.33
Server Software: Apache
System: Linux server05.hostinghome.co.in 3.10.0-962.3.2.lve1.5.81.el7.x86_64 #1 SMP Wed May 31 10:36:47 UTC 2023 x86_64
HDD Total: 1.95 TB
HDD Free: 727.76 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Disabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: itsweb
User ID (UID): 1619
Group ID (GID): 1621
Script Owner UID: 1619
Current Dir Owner: N/A