जब मैंने bin/pg_config
ran चलाया तो समस्या का कारण और एक आसान समाधान दोनों स्पष्ट हो गए कमांड लाइन पर।
pg_config
वेरिएबल्स उत्पन्न करता है जिनका उपयोग संकलन और लिंकिंग को नियंत्रित करने के लिए किया जाता है। विशेष रुचि LIBDIR और LDFLAGS हैं। LIBDIR स्थिर पुस्तकालयों के लिए स्थान निर्दिष्ट करता है, जबकि LDFLAGS गतिशील पुस्तकालयों की खोज के लिए स्थान प्रदान करता है। मेरे सिस्टम पर, LIBDIR को /LibraryPostgreSQL/9.3/lib
पर सही ढंग से सेट किया गया था , लेकिन LDFLAGS निम्नानुसार सेट किया गया था:
LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs
चूंकि libpq.5.dylib
इनमें से किसी भी स्थान पर मौजूद नहीं था, मणि इसे खोजने में विफल रहा, और इसके बजाय एक पुराना संस्करण मिला जो /usr/lib
पर स्थापित किया गया था। ।
इसे ठीक करने का एक तरीका यह होगा कि LDFLAGS में सही फ़ाइल स्थान को इंजेक्ट किया जाए, संभवतः extconf.rb
में कोड को संशोधित करके जो कॉन्फिग फाइल जेनरेट करता है। हालांकि, इस मामले में एक बहुत आसान फिक्स सिर्फ /usr/local/lib
में एक सिम्लिंक जोड़ना है फ़ाइल के सही स्थान पर:
/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib
यदि आप इसी तरह की समस्या का सामना करते हैं, तो बस pg_config
. के आउटपुट की जांच करें , और देखें कि क्या आप LDFLAGS द्वारा पहले से निर्दिष्ट निर्देशिकाओं में से किसी एक में सही फ़ाइल स्थान के लिए एक सिमलिंक रख सकते हैं।