¿Cómo puedo vincular en contra de las bibliotecas de PostgreSQL cuando compilo seiveshell de Cyrus?

StackOverflow https://stackoverflow.com/questions/1293506

Pregunta

mantengo una pila de software que consiste en Perl y Cyrus IMAP entre otras cosas.

Perl parece estar funcionando bien y cyradm Ciro (un script en perl) funciona muy bien también. Sin embargo, sieveshell no se ejecute y la razón para pedir ayuda aquí.

Cuando corro sieveshell, consigo la salida de la siguiente manera:

  

No se puede cargar '/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so' para módulo de Cyrus :: :: tamiz managesieve: /usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so: símbolo indefinido: PQfinish en la línea /usr/local/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/DynaLoader.pm 203.    en la línea ./sieveshell 45   Compilación falló en línea requieren por lo ./sieveshell 45.   BEGIN fallado -. Compilación abortada en la línea ./sieveshell 45

PQfinish es parte de las bibliotecas de PostgreSQL. Si me quedo en LDD managesieve.so, las librerías PGSQL no están vinculadas en Sin embargo, no hay bibliotecas que faltan tampoco. Si me quedo en la biblioteca LDD libsasl2 en la lista, se ve bien también y lo hace usar PGSQL pero al parecer no es parte de la biblioteca vinculada a managesieve.so. Por otra parte, libsasl2 está funcionando bien cuando se utiliza por otro software.

Aquí es LDD managesieve.so

linux-gate.so.1 =>  (0xffffe000)
libdb-4.4.so => /lib/libdb-4.4.so (0xb7f8a000)
libsasl2.so.2 => /usr/local/pozix/cyrus-sasl/lib/libsasl2.so.2 (0xb7f74000)
libssl.so.0 => /usr/lib/libssl.so.0 (0xb7f33000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0xb7df6000)
libc.so.6 => /lib/libc.so.6 (0xb7caa000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7c92000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c8e000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7c7b000)
/lib/ld-linux.so.2 (0xb80aa000)

ldd usr / local / pozix / cyrus-sasl / lib / libsasl2.so.2

linux-gate.so.1 =>  (0xffffe000)
libdl.so.2 => /lib/libdl.so.2 (0xb7f0a000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7ef7000)
libc.so.6 => /lib/libc.so.6 (0xb7dab000)
/lib/ld-linux.so.2 (0xb7f34000)

No hay errores de compilación durante la construcción de IMAP Cyrus tampoco. Sospecho que esto podría ser un problema del camino, pero no está seguro de dónde buscar o depurar la salida de ruta o dónde ir después de esto.

Probado google para esto y tiene un par de golpes, pero que o bien no tenía solución o no funcionó para mí. Sospecho que el Perl AUTOLOAD es confundida de alguna manera. DBD :: Pg parece estar funcionando tan bien; utilizando la versión 2.15.1.

¿Alguna sugerencia sobre dónde ir ahora? Cualquier Perl gurús por ahí?

resuelto!

./ configure construye el Makefile en cada subdirectorio. La biblioteca managesieve.so se crea con una llamada de Perl ... POR EJEMPLO Perl Makefile.PL que resulta en un Makefile. consejo de Andrew ayudó inmensamente en el seguimiento de esto. En el Makefile existen las siguientes líneas:

EXTRALIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -lsasl2 -lssl -lcrypto 
LDLOADLIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -lsasl2 -lssl -lcrypto 

¿Qué he actualizado para que diga:

EXTRALIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -L/usr/local/pozix/pgsql/lib -lsasl2 -lssl -lcrypto -lpq

LDLOADLIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -L/usr/local/pozix/pgsql/lib -lsasl2 -lssl -lcrypto -lpq

Y esto lo resolvió!

¿Fue útil?

Solución

Parece que usted tiene que volver a compilar la librería compartida tamiz e incluir la -lPGSql (o lo que sea). ¿Hay un configure script que es necesario agregar un '--with-postgres' a? Si no es así, puede que tenga que editar manualmente el Makefile (o Makefile.PL o Build.PL).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top