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
Re: c program fails to run with the postgres which is installed at user location
From
John R Pierce
Date:
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)
Re: c program fails to run with the postgres which is installed at user location
From
zhong ming wu
Date:
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.