Thread: error while loading shared libraries: libpq.so.3
it is as folllows:
#include<libpq-fe.h>
{
PGconn *myconnection = PQconnectdb("");
printf("Hi");
return 0;
}
I then compile this program using makefile
cc -I/usr/local/pgsql/include sample.c -L/usr/local/pgsql/lib -lpq -o sample
./sample: error while loading shared libraries: libpq.so.3: cannot open shared object file: No such file or directory
On Mon, Feb 21, 2005 at 12:47:58PM +0530, Surabhi Ahuja wrote: > cc -I/usr/local/pgsql/include sample.c -L/usr/local/pgsql/lib -lpq -o sample > I then run it....and it gives and error > [indra:/homes/surabi] ./sample > ./sample: error while loading shared libraries: libpq.so.3: cannot open shared object file: No such file or directory You probably need to specify a runtime library search path option like -R or -rpath (see your compiler or linker documentation). For example, the following might work: cc -L/usr/local/pgsql/lib -R/usr/local/pgsql/lib ... See also the manual page for the ldd command if your system has it. -- Michael Fuhr http://www.fuhr.org/~mfuhr/
On Mon, 21 Feb 2005 06:17 pm, Surabhi Ahuja wrote: > i have written a program sample.c > it is as folllows: > #include<stdlib.h> > #include<libpq-fe.h> > int main() > { > PGconn *myconnection = PQconnectdb(""); > printf("Hi"); > return 0; > } > > I then compile this program using makefile > make sample > cc -I/usr/local/pgsql/include sample.c -L/usr/local/pgsql/lib -lpq -o sample > I then run it....and it gives and error > [indra:/homes/surabi] ./sample > ./sample: error while loading shared libraries: libpq.so.3: cannot open shared object file: No such file or directory > Please tell what the problem is..and how should I rectify it? > Your library is in /usr/local/pgsql/lib this is obviously not in your ld.so.conf do you still experience problems when you run LDLIBRARY=/usr/local/pgsql/lib ./sample Regards Russell Smith.
gcc: unrecognized option `-rpath/usr/local/pgsql/lib'
From: Michael Fuhr [mailto:mike@fuhr.org]
Sent: Mon 2/21/2005 12:55 PM
To: Surabhi Ahuja
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] error while loading shared libraries: libpq.so.3
***********************
Your mail has been scanned by InterScan VirusWall.
***********-***********
On Mon, Feb 21, 2005 at 12:47:58PM +0530, Surabhi Ahuja wrote:
> cc -I/usr/local/pgsql/include sample.c -L/usr/local/pgsql/lib -lpq -o sample
> I then run it....and it gives and error
> [indra:/homes/surabi] ./sample
> ./sample: error while loading shared libraries: libpq.so.3: cannot open shared object file: No such file or directory
You probably need to specify a runtime library search path option
like -R or -rpath (see your compiler or linker documentation). For
example, the following might work:
cc -L/usr/local/pgsql/lib -R/usr/local/pgsql/lib ...
See also the manual page for the ldd command if your system has it.
--
Michael Fuhr
http://www.fuhr.org/~mfuhr/
From: Russell Smith [mailto:mr-russ@pws.com.au]
Sent: Mon 2/21/2005 2:19 PM
To: Surabhi Ahuja
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] error while loading shared libraries: libpq.so.3
***********************
Your mail has been scanned by InterScan VirusWall.
***********-***********
On Mon, 21 Feb 2005 06:17 pm, Surabhi Ahuja wrote:
> i have written a program sample.c
> it is as folllows:
> #include<stdlib.h>
> #include<libpq-fe.h>
> int main()
> {
> PGconn *myconnection = PQconnectdb("");
> printf("Hi");
> return 0;
> }
>
> I then compile this program using makefile
> make sample
> cc -I/usr/local/pgsql/include sample.c -L/usr/local/pgsql/lib -lpq -o sample
> I then run it....and it gives and error
> [indra:/homes/surabi] ./sample
> ./sample: error while loading shared libraries: libpq.so.3: cannot open shared object file: No such file or directory
> Please tell what the problem is..and how should I rectify it?
>
Your library is in /usr/local/pgsql/lib this is obviously not in your ld.so.conf
do you still experience problems when you run
LDLIBRARY=/usr/local/pgsql/lib ./sample
Regards
Russell Smith.
On Mon, 21 Feb 2005 08:05 pm, Surabhi Ahuja wrote: > it now says: > > i do the following > > make sample > LDLIBRARY = /usr/local/pgsql/lib ./sample > > > LDLIBRARY: Command not found. > > > do you still experience problems when you run > LDLIBRARY=/usr/local/pgsql/lib ./sample Note there is no SPACE in the example I have given. LDLIBRARY=/usr/local... NOT LDLIBRARY = /usr/... Regards Russell Smith. > ________________________________ > > From: Russell Smith [mailto:mr-russ@pws.com.au] > Sent: Mon 2/21/2005 2:19 PM > To: Surabhi Ahuja > Cc: pgsql-general@postgresql.org > Subject: Re: [GENERAL] error while loading shared libraries: libpq.so.3 > > > > *********************** > Your mail has been scanned by InterScan VirusWall. > ***********-*********** > > > On Mon, 21 Feb 2005 06:17 pm, Surabhi Ahuja wrote: > > i have written a program sample.c > > it is as folllows: > > #include<stdlib.h> > > #include<libpq-fe.h> > > int main() > > { > > PGconn *myconnection = PQconnectdb(""); > > printf("Hi"); > > return 0; > > } > > > > I then compile this program using makefile > > make sample > > cc -I/usr/local/pgsql/include sample.c -L/usr/local/pgsql/lib -lpq -o sample > > I then run it....and it gives and error > > [indra:/homes/surabi] ./sample > > ./sample: error while loading shared libraries: libpq.so.3: cannot open shared object file: No such file or directory > > Please tell what the problem is..and how should I rectify it? > > > Your library is in /usr/local/pgsql/lib this is obviously not in your ld.so.conf > > do you still experience problems when you run > LDLIBRARY=/usr/local/pgsql/lib ./sample > > Regards > > Russell Smith. > > > > >
On Mon, Feb 21, 2005 at 02:22:20PM +0530, Surabhi Ahuja wrote: > I give the following command now to compile sample.c > gcc -o sample sample.c -I/usr/local/pgsql/include -L/usr/local/pgsql/lib -rpath/usr/local/pgsql/lib - lpq > > it gives this message: > gcc: unrecognized option `-rpath/usr/local/pgsql/lib' > (the same happens if i give -R instaed of -rpath As I said, see your compiler or linker documentation for the correct option. Another possibility might be "-Wl,-rpath=/usr/local/pgsql/lib", but *see the documentation* instead of using trial-and-error. What's happening is that the run-time linker doesn't know where to find libpq. You can fix that a few different ways: 1. You can add run-time link information when you build the program. That's what the aforementioned options are for; see your documentation to find out the correct way to do it. Some people consider this the "right" way to solve the problem. 2. You can globally change the run-time linker's configuration. How to do this depends on the platform, so again, you'll have to consult your local documentation. 3. You can use an environment variable like LD_LIBRARY_PATH to tell the run-time linker what additional directories to search. Many people consider this a workaround rather than a fix and therefore suggest avoiding it in favor of (1) or possibly (2). http://www.visi.com/~barr/ldpath.html NOTE: This is a build procedure issue that has nothing to do with PostgreSQL, aside from the fact that in this particular case you're trying to link against a PostgreSQL library. You'll have the same problem any time you link against a shared library that's not in the run-time linker's path. -- Michael Fuhr http://www.fuhr.org/~mfuhr/
Russell Smith wrote: >On Mon, 21 Feb 2005 08:05 pm, Surabhi Ahuja wrote: > > >>it now says: >> >>i do the following >> >>make sample >>LDLIBRARY = /usr/local/pgsql/lib ./sample >> >> >>LDLIBRARY: Command not found. >> >> >>do you still experience problems when you run >>LDLIBRARY=/usr/local/pgsql/lib ./sample >> >> > >Note there is no SPACE in the example I have given. >LDLIBRARY=/usr/local... > >NOT > >LDLIBRARY = /usr/... > >Regards > >Russell Smith. > > > >>________________________________ >> >>From: Russell Smith [mailto:mr-russ@pws.com.au] >>Sent: Mon 2/21/2005 2:19 PM >>To: Surabhi Ahuja >>Cc: pgsql-general@postgresql.org >>Subject: Re: [GENERAL] error while loading shared libraries: libpq.so.3 >> >> >> >>*********************** >>Your mail has been scanned by InterScan VirusWall. >>***********-*********** >> >> >>On Mon, 21 Feb 2005 06:17 pm, Surabhi Ahuja wrote: >> >> >>> i have written a program sample.c >>>it is as folllows: >>>#include<stdlib.h> >>>#include<libpq-fe.h> >>>int main() >>>{ >>> PGconn *myconnection = PQconnectdb(""); >>> printf("Hi"); >>> return 0; >>>} >>> >>>I then compile this program using makefile >>>make sample >>>cc -I/usr/local/pgsql/include sample.c -L/usr/local/pgsql/lib -lpq -o sample >>>I then run it....and it gives and error >>>[indra:/homes/surabi] ./sample >>>./sample: error while loading shared libraries: libpq.so.3: cannot open shared object file: No such file or directory >>>Please tell what the problem is..and how should I rectify it? >>> >>> >>> >>Your library is in /usr/local/pgsql/lib this is obviously not in your ld.so.conf >> >>do you still experience problems when you run >>LDLIBRARY=/usr/local/pgsql/lib ./sample >> >>Regards >> >>Russell Smith. >> >> >> >> >> >> >> > >---------------------------(end of broadcast)--------------------------- >TIP 6: Have you searched our list archives? > > http://archives.postgresql.org > > > Russell, Does it help if you execute the following? LD_LIBRARY_PATH=/usr/local/pgsql/lib export LD_LIBRARY_PATH PATH=/usr/local/pgsql/bin:$PATH export PATH good luck, Phil
mr-russ@pws.com.au (Russell Smith) writes: > On Mon, 21 Feb 2005 08:05 pm, Surabhi Ahuja wrote: > > do you still experience problems when you run > > LDLIBRARY=/usr/local/pgsql/lib ./sample > > Note there is no SPACE in the example I have given. > LDLIBRARY=/usr/local... > > NOT > > LDLIBRARY = /usr/... > > Regards > Shouldn't that be LD_LIBRARY_PATH? -- Remove -42 for email