كيف يمكنني الارتباط مقابل Libs postgresql عندما أقوم بتجميع سايروس Seiveshell؟

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

سؤال

أحافظ على كومة برمجية تتكون من بيرل وسيروس IMAP من بين أشياء أخرى.

يبدو أن بيرل يعمل بشكل جيد وسيروس سيراادم (برنامج نصي بيرل) يعمل بشكل جيد أيضا. ومع ذلك، لن تنفذ Seieveshell وسبب طلب المساعدة هنا.

عندما أقوم بتشغيل seieveshell، أحصل على إخراج متابعة:

لا يمكن تحميل '/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/cyrus/sieve/managesieve/managesieve.so' للوحدة CYRUS: : غربال :: managesieve pqfinish في /usr/local/pozix/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/dynaloader.pm الخط 203. في. فشل التجميع 45/sieveshell في تتطلب في ./sieveshell Line 45. ابدأ فشل - تجميع إحباط في ./sieveshell Line 45.

PQFinish جزء من مكتبات postgresql. إذا قمت بتشغيل LDD على managesieve.so، فإن PGSQL Libs غير مرتبط بمعني، لا توجد مكتبات مفقودة أيضا. إذا قمت بتشغيل LDD على مكتبة LIBSASL2 المدرجة، فإنه يبدو موافقا أيضا ولا يستخدم PGSQL ولكن يبدو أنه ليس جزءا من المكتبة المرتبطة ب ManageseAve.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 / محلي / بوزيكس / سايروس-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 أيضا. أظن أن هذا قد يكون مشكلة مسار ولكن غير متأكد من أين تبدو أو تصحيح إخراج المسار أو أين تذهب بعد ذلك.

حاول جوجلينج من أجل هذا وحصلت على زوجين، لكنهم إما ليس لديهم أي حل أو لم ينجح علي. أظن أن تربط بيرل التلقائي المحفوظة بطريقة ما. DBD :: PG يبدو أنه يعمل كذلك؛ باستخدام الإصدار 2.15.1.

أي اقتراحات حول أين تذهب بعد ذلك؟ أي gurus بيرل هناك؟

تم حلها!

./configure يبني makefiles في كل دليل فرعي. تم إنشاء مكتبة managese.so مع مكالمة من بيرل ... IE 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. (أو أيا كان). هل يوجد تهيئة البرنامج النصي الذي تحتاجه لإضافة "- Postgres"؟ إذا لم يكن الأمر كذلك، فقد تضطر إلى تحرير makefile (أو makefile.pl أو build.pl يدويا يدويا).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top