Обсуждение: ecpg help
Hello,I'm running Postgresql 7.2.2 on RedHat Linux 7.1. I am trying to use
Postgres embedded sql preprocessor (ECPG). However, I get a loading shared library
problem when I attempt toexecute a program. I included a simple example below...
Thanks
Error:
============
try: error while loading shared libraries: libecpg.so.3: cannot load shared
object file: No such file or directory
echo $LD_LIBRARY_PATH
======================
:/home/smith/lib:/usr/local/pgsql/lib:/usr/lib/qt/lib
ls -l /usr/localpgsql/lib
-rw-r--r-- 1 root root 46302 Aug 30 11:05 libecpg.a
lrwxrwxrwx 1 root root 16 Aug 30 11:05 libecpg.so ->
libecpg.so.3.3.0
lrwxrwxrwx 1 root root 16 Aug 30 11:05 libecpg.so.3 ->
libecpg.so.3.3.0
-rwxr-xr-x 1 root root 40220 Aug 30 11:05 libecpg.so.3.3.0
-rw-r--r-- 1 root root 6664 Aug 30 11:05 libpgeasy.a
lrwxrwxrwx 1 root root 16 Aug 30 11:05 libpgeasy.so ->
libpgeasy.so.2.2
lrwxrwxrwx 1 root root 16 Aug 30 11:05 libpgeasy.so.2 ->
libpgeasy.so.2.2
-rwxr-xr-x 1 root root 10809 Aug 30 11:05 libpgeasy.so.2.2
-rw-r--r-- 1 root root 30574 Aug 30 11:05 libpgtcl.a
lrwxrwxrwx 1 root root 15 Aug 30 11:05 libpgtcl.so ->
libpgtcl.so.2.2
lrwxrwxrwx 1 root root 15 Aug 30 11:05 libpgtcl.so.2 ->
libpgtcl.so.2.2
-rwxr-xr-x 1 root root 35241 Aug 30 11:05 libpgtcl.so.2.2
-rw-r--r-- 1 root root 82598 Aug 30 11:05 libpq.a
-rw-r--r-- 1 root root 68982 Aug 30 11:05 libpq++.a
lrwxrwxrwx 1 root root 12 Aug 30 11:05 libpq.so ->
libpq.so.2.2
lrwxrwxrwx 1 root root 14 Aug 30 11:05 libpq++.so ->
libpq++.so.4.0
lrwxrwxrwx 1 root root 12 Aug 30 11:05 libpq.so.2 ->
libpq.so.2.2
-rwxr-xr-x 1 root root 74685 Aug 30 11:05 libpq.so.2.2
lrwxrwxrwx 1 root root 14 Aug 30 11:05 libpq++.so.4 ->
libpq++.so.4.0
-rwxr-xr-x 1 root root 47166 Aug 30 11:05 libpq++.so.4.0
-rwxr-xr-x 1 root root 1041877 Aug 30 11:05 plperl.so
-rwxr-xr-x 1 root root 90075 Aug 30 11:05 plpgsql.so
-rwxr-xr-x 1 root root 540450 Aug 30 11:05 plpython.so
-rwxr-xr-x 1 root root 33726 Aug 30 11:05 pltcl.so
##################### try.pc #########################
#include <stdio.h>
EXEC SQL BEGIN DECLARE SECTION;
int result;
EXEC SQL END DECLARE SECTION;
int main()
{ EXEC SQL CONNECT TO TmDB; EXEC SQL SELECT (1+1) INTO :result;
printf("Result = %d\n",result);
return 0;
}
##################### Makefile#######################
EC = ecpg
CC = gcc
INCPG = /usr/local/pgsql/include # Path for postgresql includes.
#Declaration header.
LIBPG = /usr/local/pgsql/lib # Path for ecpg libraries.
LIBSPG = -lecpg -lpq # Ecpg libraries.
CFLAGS = -Wall -g -c
%.c: %.pc
$(EC) -t -o $@ $<
%.o: %.c
$(CC) $(CFLAGS) -I $(INCPG) -o $@ $<
all: try
try: try.o
$(CC) -o $@ $^ -L $(LIBPG) $(LIBSPG)
clean:
-rm -f *.o core
The only thing that catches my eye, is the lack of the statement
exec sql include sqlca
with the include files. I forget the exact reason, but it is needed
for the
ECPG preprocessor.
hope this helps.
cheers,
Jim Parker
On 2002.09.25 12:58 Gary Knopp wrote:
> Hello,
> I'm running Postgresql 7.2.2 on RedHat Linux 7.1. I am trying to
> use
> Postgres embedded sql
> preprocessor (ECPG). However, I get a loading shared library
> problem when I attempt to
> execute a program. I included a simple example below...
>
> Thanks
>
> Error:
> ============
> try: error while loading shared libraries: libecpg.so.3: cannot load
> shared
> object file: No such file or directory
>
> echo $LD_LIBRARY_PATH
> ======================
> :/home/smith/lib:/usr/local/pgsql/lib:/usr/lib/qt/lib
>
> ls -l /usr/localpgsql/lib
> -rw-r--r-- 1 root root 46302 Aug 30 11:05 libecpg.a
> lrwxrwxrwx 1 root root 16 Aug 30 11:05 libecpg.so ->
> libecpg.so.3.3.0
> lrwxrwxrwx 1 root root 16 Aug 30 11:05 libecpg.so.3
> ->
> libecpg.so.3.3.0
> -rwxr-xr-x 1 root root 40220 Aug 30 11:05
> libecpg.so.3.3.0
> -rw-r--r-- 1 root root 6664 Aug 30 11:05 libpgeasy.a
> lrwxrwxrwx 1 root root 16 Aug 30 11:05 libpgeasy.so
> ->
> libpgeasy.so.2.2
> lrwxrwxrwx 1 root root 16 Aug 30 11:05 libpgeasy.so.2
> ->
> libpgeasy.so.2.2
> -rwxr-xr-x 1 root root 10809 Aug 30 11:05
> libpgeasy.so.2.2
> -rw-r--r-- 1 root root 30574 Aug 30 11:05 libpgtcl.a
> lrwxrwxrwx 1 root root 15 Aug 30 11:05 libpgtcl.so ->
> libpgtcl.so.2.2
> lrwxrwxrwx 1 root root 15 Aug 30 11:05 libpgtcl.so.2
> ->
> libpgtcl.so.2.2
> -rwxr-xr-x 1 root root 35241 Aug 30 11:05
> libpgtcl.so.2.2
> -rw-r--r-- 1 root root 82598 Aug 30 11:05 libpq.a
> -rw-r--r-- 1 root root 68982 Aug 30 11:05 libpq++.a
> lrwxrwxrwx 1 root root 12 Aug 30 11:05 libpq.so ->
> libpq.so.2.2
> lrwxrwxrwx 1 root root 14 Aug 30 11:05 libpq++.so ->
> libpq++.so.4.0
> lrwxrwxrwx 1 root root 12 Aug 30 11:05 libpq.so.2 ->
> libpq.so.2.2
> -rwxr-xr-x 1 root root 74685 Aug 30 11:05 libpq.so.2.2
> lrwxrwxrwx 1 root root 14 Aug 30 11:05 libpq++.so.4
> ->
> libpq++.so.4.0
> -rwxr-xr-x 1 root root 47166 Aug 30 11:05 libpq++.so.4.0
> -rwxr-xr-x 1 root root 1041877 Aug 30 11:05 plperl.so
> -rwxr-xr-x 1 root root 90075 Aug 30 11:05 plpgsql.so
> -rwxr-xr-x 1 root root 540450 Aug 30 11:05 plpython.so
> -rwxr-xr-x 1 root root 33726 Aug 30 11:05 pltcl.so
>
>
>
>
> ##################### try.pc #########################
> #include <stdio.h>
>
> EXEC SQL BEGIN DECLARE SECTION;
> int result;
> EXEC SQL END DECLARE SECTION;
>
> int main()
> {
> EXEC SQL CONNECT TO TmDB;
> EXEC SQL SELECT (1+1) INTO :result;
>
> printf("Result = %d\n",result);
>
> return 0;
>
> }
>
> ##################### Makefile#######################
> EC = ecpg
> CC = gcc
> INCPG = /usr/local/pgsql/include # Path for postgresql includes.
>
> #Declaration header.
> LIBPG = /usr/local/pgsql/lib # Path for ecpg libraries.
> LIBSPG = -lecpg -lpq # Ecpg libraries.
> CFLAGS = -Wall -g -c
>
>
> %.c: %.pc
> $(EC) -t -o $@ $<
>
> %.o: %.c
> $(CC) $(CFLAGS) -I $(INCPG) -o $@ $<
>
> all: try
>
>
> try: try.o
> $(CC) -o $@ $^ -L $(LIBPG) $(LIBSPG)
>
> clean:
> -rm -f *.o core
>
>
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
On Wed, Sep 25, 2002 at 12:58:55PM -0400, Gary Knopp wrote: > I'm running Postgresql 7.2.2 on RedHat Linux 7.1. I am trying to use > Postgres embedded sql > preprocessor (ECPG). However, I get a loading shared library > problem when I attempt to > execute a program. I included a simple example below... > ... > :/home/smith/lib:/usr/local/pgsql/lib:/usr/lib/qt/lib > > ls -l /usr/localpgsql/lib I take it the missing "/" is a typo here, but something like this is probably the reason. Your problem is on OS level and nothing to do with ecpg itself. I'd try running ldd to find out more. Michael -- Michael Meskes Michael@Fam-Meskes.De Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
On Fri, Sep 27, 2002 at 08:54:24AM -0400, Jim Parker wrote: > The only thing that catches my eye, is the lack of the statement > > exec sql include sqlca > > with the include files. I forget the exact reason, but it is needed > for the > ECPG preprocessor. No, not anymore. Nowadays ecpg does include it automatically. Michael -- Michael Meskes Michael@Fam-Meskes.De Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!