Thread: c program fails to run with the postgres which is installed at user location

c program fails to run with the postgres which is installed at user location

From
zhong ming wu
Date:
I am trying to compile and run c program which reads the journal of an
ancient propriety database
and copy these transactions over to postgres.  The process I follow is
by trial and error and made worse
by the fact that I haven't before made c program which talks to
postgres and because I have to use
some c pre-processor and linker required by that other database.

This machine is RHEL 5.5 and has both RH stock postgres 8.1.18 in
standard location as well as pg 8.4.4
which is in my home folder.   The libraries are libpg.so.4 and
libpg.so.5 respectively for two versions.

I just lifted one of the examples from postgres documentation and if I
just use stock 8.1.18 compiling
is ok and the final program runs to completion as expected.  But if I
compile the same program
with 8.4.4 the compiled program dies with

"error while loading shared libraries: libpq.so.5: cannot open shared
object file: No such file or dire
ctory"

Does the error mean that the program can't locate this libpq.so.5?
That symlink is good but in ~/local/lib and points to
libpq.so.5.2 in there.  It's not in the standard folder like /usr/lib.
 I tried to symlink to the working folder but no go.

I configured 8.4.4 with "--enable-shared" even though I think this is
unnecessary; is that right?

Thanks for any advice you can give

zhong ming wu wrote:
> ...
> This machine is RHEL 5.5 and has both RH stock postgres 8.1.18 in
> standard location as well as pg 8.4.4
> which is in my home folder.   The libraries are libpg.so.4 and
> libpg.so.5 respectively for two versions.
>
> I just lifted one of the examples from postgres documentation and if I
> just use stock 8.1.18 compiling
> is ok and the final program runs to completion as expected.  But if I
> compile the same program
> with 8.4.4 the compiled program dies with
>
> "error while loading shared libraries: libpq.so.5: cannot open shared
> object file: No such file or dire
> ctory"
>
> Does the error mean that the program can't locate this libpq.so.5?
> That symlink is good but in ~/local/lib and points to
> libpq.so.5.2 in there.  It's not in the standard folder like /usr/lib.
>  I tried to symlink to the working folder but no go.
>

you probably need to either use "-R $HOME/local/lib" on the link command
to specify the runtime path to find .so's in, or add $HOME/local/lib to
LD_LIBRARY_PATH (I prefer the former if the linking is under my control,
but revert to the latter if I absolutely have to)



On Thu, Jun 3, 2010 at 2:15 AM, John R Pierce <pierce@hogranch.com> wrote:
> zhong ming wu wrote:
>>
>> ...
>> This machine is RHEL 5.5 and has both RH stock postgres 8.1.18 in
>
> you probably need to either use "-R $HOME/local/lib" on the link command to
> specify the runtime path to find .so's in, or add $HOME/local/lib to
> LD_LIBRARY_PATH (I prefer the former if the linking is under my control, but
> revert to the latter if I absolutely have to)
>

Thanks.  Setting LD_LIBRARY_PATH works.