Compilar postgres-6.3.2 con bibliotecas compartidas

Atanacio Reyes areyesv@yahoo.com
Fri, 9 Oct 1998 21:26:36 -0700 (PDT)






---Juan Paulo Cabezas Sainz <scharles@labsd.inf.utfsm.cl> wrote:
>
> 
> 	Hola, estoy instalando postgres en una Sun Ultra, con solaris
>  2.6 y no  he podido compilarlo para que genere las bibliotecas
> compartidas libpq.so. 
> 
> 	Mi script de configuracion es:
> 
> #./configure --with-shared  --with-template=sparc_solaris-gcc
> --prefix=/opt/postgres --enable-hba --enable-locale --with-tcl
--with-perl
> --with-x11
> 
> 	Me genera luego de la compilacion el siguiente directorio lib
> 
> 
> libecpg.a
> libpgtcl.a
> libpq.a
> local1_template1.bki.source
> local1_template1.description
> pg_geqo.sample
> pg_hba.conf.sample
> 
> 
> 	Alguien me podria ayudar ?
> 
> PD:Hay algun parche que se necesite para postgres-6.3.2 ?
> 

Es evidente que te faltan algunas bibliotecas. Además de las
compartidas, te faltan las que son necesarias para programar en C++ (
libpq++.so, libpq++.a ).
Pero no te preocupes, a mi me pasó lo mismo, aunque tu problema es un
poco diferente al mio ya que yo instalé postgreSQL en una computadora
con linux.  Sin embargo lo que yo hice para solucionar mi problema
puede serte útil a ti.
En primer lugar debo explicarte que en linux los binarios en modo
compartido se llaman ELF y los binarios estáticos son .a, por lo que
el kernel debe también entender binarios de tipo linux_elf, antes de
intentar crear bibliotecas compartidas.
En segundo lugar y tal vez tu ya sepas que el script de configuración
(configure) crea los archivos Makefile en los directorios apropiados
para que el programa make o gmake compile e instale PostgreSQL de la
forma que se especifica en el script de configuración.   Sin embargo
algunos archivos Makefile no se generan correctamente, y es por eso
que tanto tu como yo generamos instalaciones incompletas de PostgreSQL.
En primer lugar, (después de correr el script de configuración) el
punto de partida es el subdirectorio ../src (donde se encuentran los
fuentes de PostgreSQL). En este subdirectorio se encuentra el archivo
Makefile.global. Este archivo lo incluyen todos los demás Makefiles. 
Para que se compilen las bibliotecas libpq++.* debe modificarse en
este archivo la línea:

HAVE_Cplusplus=false  por
HAVE_Cplusplus=true.

En el directorio ../src/interfaces/libpq, el Makefile que ahí se
encuentra contiene lo siguiente (en el caso de linux al menos):

#Shared library stuff
shlib:=
install-shlib-dep:=
ifeq($(PORTNAME), linux)
   ifdef LINUX_ELF
      install-shlib-dep:=install-shlib
      shlib:=libpq.so.1
       .
       .
       .
Esta parte de este Makefile se repite en los Makefiles de los
directorios ../src/interfaces/libpq++, ../src/interfaces/libpgtcl y
../src/interfaces/libecpg

En mi caso en ningún Makefile ya sea en los directorios
../src/interfaces/libpq, ni en ../src/interfaces, ni en ../src se
encuentra definida la directiva LINUX_ELF, por lo que al no cumplirse
la condición 

ifdef LINUX_ELF 

las bibliotecas lib*.so.1 no se compilan ni se instalan.
Para solucionar el problema solo tuve que agregar en algun lugar del
archivo ../src/Makefile.global la línea:

LINUX_ELF=1.

Tu caso debe ser parecido, por lo que te recomiendo que busques en los
Makefiles de los directorios ../src/interfaces/libpq,
../src/interfaces/libpq++, ../src/interfaces/libpgtcl y
../src/interfaces/libecpg, la linea shlib:=lib*.so.1 (* se sustituye
por pq o pq++ o ecpg o pgtcl) y verifiques qué condición es necesario
que se cumpla para que estas bibliotecas sean compiladas.

P.D. La versión que yo instalé también es la 6.3.2.

Suerte!!

   Atanacio Reyes Valenzuela.

   Ensenada B.C. México.
_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com

--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : cancelacion pgsql-ayuda