Search Postgresql Archives

Whose bug is this?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,
I'm having a lot of trouble developing with PostgreSQL on OS X and I've tracked it down to the way that various client libraries are compiled and installed. I'll use the ecpg library as an example. With PostgreSQL 8.4.5 on OS X we have the library "libecpg.6.1.dylib" and two symbol links to it from "libecpg.6.dylib" and "libecpg.dylib". These all live in /Library/PostgreSQL/8.4/lib. I (and most other people I guess) link to it with a command like "gcc ... -L/Library/ PostgreSQL/8.4/lib -lecpg" and linking works fine. The linker reads the install name from libecpg.6.1.dylib and stores it in my executable so that it can load the correct shared library and runtime.

Unfortunately the install name in all the PostgreSQL libraries on the Mac are unqualified names such as "libecpg.6.dylib" instead of full pathnames like "/Library/PostgreSQL/8.4/lib/libecpg.6.dylib" meaning that no PostgreSQL client program on OS X can possibly ever run because the runtime linker doesn't know where the files are. That's obviously crazy because plenty of PostgreSQL clients run fine. It gets worse.

The programs that run fine only do so because the installer puts a symbolic link in /usr/lib for libpq.5.dylib. Libraries in /usr/lib can always be found and so most things work. I've double checked with other software I have installed and their libraries always have the full pathname recorded as their install name.

My problem is that I don't know who will want to own which bugs. The install name can be set in the library at compile time by ld(1), or at package install time by install_name_tool(1). In the latter case, a compile time option must be used to reserve enough space in the library for the correct install name to be set. The /usr/lib symlink is a nasty hack that fails as soon as you have two different versions of PostgreSQL installed.

Cheers,
Lloyd


--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux