Cyrus의 Seiveshell을 컴파일 할 때 Postgresql Libs에 어떻게 연결할 수 있습니까?

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

문제

나는 무엇보다도 Perl과 Cyrus IMAP로 구성된 소프트웨어 스택을 유지합니다.

Perl은 잘 작동하는 것 같습니다. Cyrus Cyradm (Perl Script)도 잘 작동합니다. 그러나 Sieveshell은 실행되지 않으며 여기에서 도움을 요청할 이유가 있습니다.

Sieveshell을 실행하면 후속 출력을 얻습니다.

Module Cyrus에 대해 '/usr/local/pozix/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-multi/auto/cyrus/sieve/managesieve/managesieve.so'를로드 할 수 없습니다. :: sieve :: Managesieve : /usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/cyrus/sieve/managesieve/managesieve.so : undefined Symbol : pqfinish at /usr/local/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/dynaloader.pm line 203. at ./sieveshell line 45 컴파일은 필수에서 실패했습니다 ./Sieveshell line. 45. 실패를 시작하십시오-컴파일은 ./sieveshell line 45에서 중단됩니다.

pqfinish는 PostgreSQL 라이브러리의 일부입니다. Managesieve.에서 LDD를 실행하면 PGSQL Libs가 연결되어 있지 않지만 누락 된 라이브러리도 없습니다. libsasl2 라이브러리에서 LDD를 실행하면 나열된 것처럼 보이고 PGSQL을 사용하지만 Managesieve.so에 연결된 라이브러리의 일부는 아닙니다. 또한 LIBSASL2는 다른 소프트웨어에서 사용할 때 잘 작동합니다.

다음은 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)

사이러스 imap을 구축하는 동안 컴파일 오류가 없습니다. 나는 이것이 경로 문제 일 수 있다고 생각하지만 경로 출력을 어디에서 보거나 디버깅 해야하는지 또는 다음에 어디로 가야할지 확실하지 않습니다.

이것을 위해 인터넷 검색을 시도했고 몇 번의 타격을 받았지만 해결책이 없거나 나에게 효과가 없었습니다. 나는 Perl Autoload가 어떤 식 으로든 혼란 스러웠다고 생각합니다. DBD :: PG도 작동하는 것으로 보입니다. 버전 2.15.1 사용.

다음에 어디로 가야하는지에 대한 제안이 있습니까? 거기에 펄서가 있습니까?

해결되었다!

./configure 각 하위 디렉토리에서 makefiles를 구축합니다. Managesieve.so 라이브러리는 Perl ... 즉, perl makefile.pl의 호출로 생성되어 makefile을 만듭니다. 앤드류의 조언은 이것을 추적하는 데 엄청나게 도움이되었습니다. makefile에는 다음 줄이 있습니다.

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 

읽기 위해 업데이트했습니다.

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

그리고 이것은 그것을 해결했습니다!

도움이 되었습니까?

해결책

체 공유 라이브러리를 다시 컴파일하고 -LPGSQL (또는 무엇이든). a 구성 '-with-postgres'를 추가 해야하는 스크립트? 그렇지 않은 경우 makefile (또는 makefile.pl 또는 build.pl)을 수동으로 편집해야 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top