Compiling a static libpq
Dear PostgreSQL developers,
After having done extensive web search and not found anybody to solve
the problem of interest on the general PostgreSQL mailing list, in the
PostgreSQL newsgroup on usenet or on the PostgreSQL IRC channel, I would
like to ask you how to compile a static libpq working without a dynamic
libpq.
So far, I've compiled libpq (from PostgreSQL version 8.4.6, 8.4.7 and
9.0.3) on my own under Linux (Ubuntu 10.4), Mac OS X 10.4 and Windows 7
using GCC.
Indeed, I always succeeded in producing libpq.a, but linking this
library to a minimal application resulted in a program which only ran
with libpq.dylib (libpq.dll or libpq.so - depending on the platform)
being present and not without it.
It seems like the libpq.a produced by compiling PostgreSQL with
"./configure" and "make" still imports the dynamic libpq.
Is there a way to get rid of the dependence on the dynamic libpq library
in PostgreSQL client applications?
Thanks in advance,
Julia
On Sun, Apr 3, 2011 at 1:07 PM, Julia Jacobson <julia.jacobson@arcor.de> wrote:
After having done extensive web search and not found anybody to solve the
problem of interest on the general PostgreSQL mailing list, in the
PostgreSQL newsgroup on usenet or on the PostgreSQL IRC channel, I would
like to ask you how to compile a static libpq working without a dynamic
libpq.
So far, I've compiled libpq (from PostgreSQL version 8.4.6, 8.4.7 and 9.0.3)
on my own under Linux (Ubuntu 10.4), Mac OS X 10.4 and Windows 7 using GCC.
Indeed, I always succeeded in producing libpq.a, but linking this library to
a minimal application resulted in a program which only ran with libpq.dylib
(libpq.dll or libpq.so - depending on the platform) being present and not
without it.
It seems like the libpq.a produced by compiling PostgreSQL with
"./configure" and "make" still imports the dynamic libpq.
Is there a way to get rid of the dependence on the dynamic libpq library in
PostgreSQL client applications?
I was able to compile and run the testlibpq.c example on Fedora 12. I
deleted the entire installation tree after compiling it, so there was
no dynamic libpq to be found.
gcc -I$HOME/project/include -L$HOME/project/lib testlibpq.c -o
testlibpq -static -lpq -lpthread
It might help to troubleshoot if you could provide more details on
exactly what you did, including the compiler invocation.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company