Обсуждение: Configuration & libpgtcl.so problems in PostgreSQL 6.3.2 on Linux

Поиск
Список
Период
Сортировка

Configuration & libpgtcl.so problems in PostgreSQL 6.3.2 on Linux

От
Constantin Teodorescu
Дата:
Hello all,

I have downloaded today 6.3.2 and try to compile it.

I have a RedHat 4.2 i386 Linux on a Pentium 200 MMX machine. On the same
system, 6.3 and 6.3.1 have been compiled without errors.

When I tried to compile now PostgreSQL 6.3.2 I got the following errors
:

1. I was logged in as a normal user then su to root. I ran ./configure
and then gmake. He said that I am not running GNUmake and he wants me to
find it !!?!!? I succeed passing this one by logging in directly as root
and running again ./configure


2. The compilation was fine, I delete the old binaries and install the
new one. Tried my databases with psql, everything was fine. I tried to
run PgAccess and it fails. Looking into interfaces/libpgtcl/ I have
discovered that libpgtcl.so has not been generated. Also in
interfaces/libpq was missing libpq.so. I tried to make them by hand  (ld
-shared -L../../interfaces/libpq -lpq -o libpgtcl.so pgtcl.o pgtclCmds.o
pgtclId.o) and then copy libpgtcl.so into my /lib directory. I made the
same thing for libpq in order to get libpq.so.

When I run PgAccess, there are a lot of errors :

wish: can't resolve symbol 'PQexec'
wish: can't resolve symbol 'PQclear'
...
wish: can't resolve symbol 'PQfinish'
couldn't load file "libpgtcl.so": Unable to resolve symbol

I took a look to Makefile.global and I noticed that there isn't defined
there the symbol LINUX_ELF.

Could you give me some help please ?

--
Constantin Teodorescu
FLEX Consulting Braila, ROMANIA

Re: [INTERFACES] Configuration & libpgtcl.so problems in PostgreSQL 6.3.2 on Linux

От
Alvin van Raalte
Дата:
I think we must be the only people left using tcl under Linux. This
hasn't worked for at least a month. In fact I cant recall any 6.3
version working.

However attached is a patch that I submitted a while ago that fixes the
problem.

Alvin.



Вложения

Re: [INTERFACES] Configuration & libpgtcl.so problems in PostgreSQL 6.3.2 on Linux

От
"Kristofer A. E. Peterson"
Дата:
Alvin van Raalte wrote:
>
> I think we must be the only people left using tcl under Linux. This
> hasn't worked for at least a month. In fact I cant recall any 6.3
> version working.
>
> However attached is a patch that I submitted a while ago that fixes the
> problem.
>
> Alvin.
>
>   ------------------------------------------------------------------------
>
>                                Name: postgresql-patch-7
>    postgresql-patch-7          Type: Plain Text (text/plain)
>                         Description: postgresql-patch-7

Rather than applying that patch, it would probably be easier creating a
'Makefile.custom' file in the postgresql-6.3.2/src (which get included
by Makefile.global, and thus every Makefile in the tree). Set
LINUX_ELF=true in Makefile.custom, and you won't have to patch all of
the shared library makefiles. You can also specify CUSTOM_CC and
CUSTOM_COPT in Makefile.custom to specify your compiler and compile
flags, respectively.

As for libpgtcl.so and unresolved symbols, I run a Redhat 5.0 system
where the crypt() function lives in its own library (libcrypt) and not
libc. libpgtcl.so is linked to libpq.so, which is statically linked.
crypt() is probably used by libpq.so for passwords, etc, but since
libpq.so is *not* linked with libcrypt, you must link libcrypt.so as
well libpq.so into your app. The Tk shell, wish8.0, is *not* linked to
libcrypt.so. Thus, when pgaccess.tcl loads the libpgtcl.so library, the
system can't resolve the calls to crypt(). One solution is to run
pgaccess.tcl with pgtksh, which *is* linked with libcrypt.so. Just
change the first line of pgaccess.tcl to #!/usr/local/pgsql/bin/pgtksh
(or where ever you installed postgresql). You could also link
libpgtcl.so manually, adding the '-lcrypt' crypt option, which would let
you run pgaccess.tcl and any other postgresql tcl scripts with wish and
tclsh.

Hope this helps...

- Kris