When trying to use postgresql on my MacOS-X system (10.3.3) I
encountered the problem that the libecpg and libpq dynamic libraries
could not be linked into my applications.
Upon investigation, it turns out that the postgresql libraries on
MacOS-X/Darwin are being built as 'bundles' ... which means that you
can dynamically load them into a running program using the dlopen()
api, but you can't link them at application build time. This may be
correct behavior for some of the modules in postgres (eg the perl
module), but is certainly wrong for libecpg and libpq ... which are
meant to be linked with C (and other language) applications.
I attach a patch which fixes this for MacOS-X 10.3.3, by altering the
makefiles to understand the two ways of building a library/bundle and
having a variable setting 'BUNDLE=no' to day that the normal dynamic
library should be built rather than a bundle. The patch alters the
libecpg and libpq makefiles to set this variable, so these two are
built as normal dynamic libraries, while the other code continues to be
built as bundles.
Probably there are other parts of the system which should not be
bundles either ... but I don't use them so I don't know.
Possibly behavior differs in older versions of MacOS-X ... again, I
don't have the old systems so I don't know.
Description: application/octet-stream (3.8 KB)
pgsql-ports by date
|Next:||From: Richard Frith-Macdonald||Date: 2004-04-04 09:40:09|
|Subject: Re: libpq and libecpg problems on MacOs-X (Panther/10.3.3)|
|Previous:||From: Tom Lane||Date: 2004-04-04 05:04:46|
|Subject: Re: [ODBC] invalid input syntax for type tid: "(,)" |