On Wed, Oct 10, 2012 at 10:08 PM, Craig Ringer <ring...@ringerc.id.au>wrote:
> On 10/11/2012 02:22 AM, Craig James wrote: > >> I have a C-language function I've been using on 8.4 for a long time. On >> 9.2 it won't load: >> >> test=# set search_path = public; >> SET >> test=# CREATE OR REPLACE FUNCTION chmoogle_session_id() RETURNS integer >> AS '/usr/local/pgsql/lib/**libchmoogle.so', 'chmoogle_session_id' >> LANGUAGE c VOLATILE; >> ERROR: could not load library "/usr/local/pgsql/lib/**libchmoogle.so": >> libopenbabel.so.4: cannot open shared object file: No such file or >> directory >> > > What does `ldd /usr/local/pgsql/lib/**libchmoogle.so` say? What about > when run under the PostgreSQL user account? > Too late ... after reading up on LD_LIBRARY_PATH and why ldconfig is better, I just ran ldconfig on the /usr/local/pgsql/lib and /usr/local/openbabel/lib directories. Problem fixed. > You may need to set LD_LIBRARY_PATH in the Pg startup script, or modify > ld.so.conf, or re-build your extension with rpath linking enabled. > > As for why it worked with 8.4 - I expect you either altered > LD_LIBRARY_PATH in the 8.4 startup scripts, or maybe the 8.4 version of the > extension was built with -Wl,-rpath so the paths to required libraries were > embedded into the extension library. > It is a bit odd ... 8.4 was working, and I just compiled and installed 9.2 on top of it (and created a fresh database). Oh well, I guess it will remain a mystery. Craig James > > -- > Craig Ringer >