2012-04-25 14 views
8

पर निर्दिष्ट लाइब्रेरी नहीं खोल सकता है, मैं ArchLinux का उपयोग कर रहा हूं और मैं OpenEdge प्रगति ड्राइवर स्थापित करने का प्रयास कर रहा हूं ताकि मैं इसे PHP के माध्यम से एक्सेस कर सकूं। मैं unixodbc पैकेज और ड्राइवरों स्थापित किया है, लेकिन जब मैं isql या PHP के माध्यम से कनेक्शन का परीक्षण, मैं एक ही त्रुटि मिलती है ...unixodbc ड्राइवर प्रबंधक

# isql -3 SUBS2A 
[01000][unixODBC][Driver Manager]Can't open lib '/usr/dlc/odbc/lib/pgoe1023.so' : file not found 
[ISQL]ERROR: Could not SQLConnect 

में गड़बड़ बात यह है कि "/ usr/डीएलसी/ODBC है /lib/pgoe1023.so "वर्तमान में मौजूद है, मैंने इसे"/usr/dlc "से भी सिम्लिंक किया है।

निम्नलिखित मेरी .ini फ़ाइलों

odbc.ini

[SUBS2A] 
Description = ODBC Driver for Progress 
Driver = /usr/dlc/odbc/lib/pgoe1023.so 
FileUsage = 1 

odbcinst.ini रहे हैं ... (मैं साख में से कुछ को हटा दिया के रूप में यह अप्रासंगिक है)

[ODBC-test] 
Description = SUBS2A 
Driver = SUBS2A 
Server = 192.168.1.2 
Port = 4000 
APILevel=1 
ConnectFunctions=YYN 
CPTimeout=60 
DriverODBCVer=03.60 
FileUsage=0 
SQLLevel=0 
UsageCount=1 
ArraySize=50 
DefaultLongDataBuffLen=2048 
DefaultIsolationLevel= READ COMMITTED 
StaticCursorLongColBuffLen=4096 

EDIT अधिक जानकारी जोड़ना ...

था आईपी ​​32-बिट दोनों दिखाई देती है, सिवाय इसके कि मुझे नहीं पता कि मैं इसके बारे में क्या कर रहा हूं।

[[email protected] etc]# file /usr/bin/isql 
/usr/bin/isql: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, BuildID[sha1]=0xd1bc16c119       bb5cad6fea9e2a9abc1d06794a2775, stripped 
[[email protected] etc]# file /usr/dlc/odbc/lib/pgoe1023.so 
/usr/dlc/odbc/lib/pgoe1023.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped 

ऐसा लगता है कि यह कुछ निर्भरता याद आ रही है ...

[[email protected] lib]# ldd pgoe1023.so 
     linux-gate.so.1 => (0xb77c2000) 
     libpthread.so.0 => /lib/libpthread.so.0 (0xb7499000) 
     librt.so.1 => /lib/librt.so.1 (0xb7490000) 
     libpgicu23.so => not found 
     libdl.so.2 => /lib/libdl.so.2 (0xb748b000) 
     libstdc++-libc6.2-2.so.3 => not found 
     libm.so.6 => /lib/libm.so.6 (0xb745e000) 
     libc.so.6 => /lib/libc.so.6 (0xb72bc000) 
     /lib/ld-linux.so.2 (0xb77c3000) 

अद्यतन

मैं/usr/lib करने के लिए "libpgicu23.so" की नकल की और यह कि समस्या हल हो, लेकिन मुझे अभी भी "libstdC++ - libc6.2-2.so.3" की आवश्यकता है, लेकिन जब मैंने इंटरनेट से एक को पकड़ लिया तो उसने कहा "साझा पुस्तकालयों को लोड करते समय त्रुटि: /usr/lib/libstdc++-libc6.2-2.so। 3: ईएलएफ फाइल ओएस एबीआई अमान्य "

मैंने वास्तव में "libstdC++ - libc6.2-2.so.3" से "libstdC++।" से एक सिम्लिंक भी बनाया है, लेकिन यह समस्या के हल होने के बावजूद समस्या के हल होने के बावजूद, यह त्रुटि आई है जब मैंने isql queried ..

isql: symbol lookup error: /usr/dlc/odbc/lib/pgoe1023.so: undefined symbol: __builtin_vec_new

मैंने कभी * * निक्स बॉक्स पर ओडीबीसी स्थापित नहीं किया है, लेकिन हमने विंडोज़ बॉक्स पर भी यही काम किया है और यह ठीक काम करता है। किसी भी इनपुट की सराहना की।

उत्तर

14

चेक unixODBC और अपने ड्राइवर एक ही वास्तुकला अर्थात हैं, चलाएँ:

which isql 
file xxx (whatever came back from above) 
file /usr/dlc/odbc/lib/pgoe1023.so 

वे दोनों होना चाहिए 32 बिट या 64 बिट। एक 64 बिट यूनिक्सोडबीसी 32 बिट ड्राइवरों का उपयोग नहीं कर सकता है और इसके विपरीत।

आपको उस सिम्लिंक की आवश्यकता नहीं होनी चाहिए।

सभी निर्भरताओं को सुनिश्चित करने के लिए /usr/dlc/odbc/lib/pgoe1023.so पर ldd चलाएं।

चेक /usr/dlc/odbc/lib/pgoe1023.so निष्पादन योग्य है।

बीटीडब्ल्यू, मुझे लगता है कि आपको अपने लेबल गलत तरीके से मिल गए हैं क्योंकि आपकी odbc.ini फ़ाइल सामग्री odbcinst.ini और इसके विपरीत होनी चाहिए।

+0

ठीक है मैंने अधिक जानकारी के साथ अपने प्रश्न में एक संपादन किया है। यह अजीब है क्योंकि मेरे पास वास्तव में आईएनआई फाइलें विपरीत थीं, हालांकि जब मैं उन्हें उलट देता हूं, तो त्रुटि खराब हो जाती है (कहती है कि यह डीएसएन/ड्राइवर नहीं ढूंढ सकता)। हालांकि जब मैं अजीब दौड़ता हूं, तो मुझे कुछ लापता निर्भरता मिलती है, इसलिए मैं इसे ठीक करने की कोशिश करने जा रहा हूं, मुझे ऐसा कुछ मिला जो मुझे लगता है कि यहां मदद कर सकती है: http://remidian.com/progress/progress-openedge-database-101b -install-on-centos-rhel.html – PolishHurricane

+0

आमतौर पर यह कोई एहसास नहीं होगा कि आपने आईएनआई फाइलों को गलत तरीके से फाइल किया है, लेकिन यूनिक्सोडबीसी आपको ड्राइवर = XXX निर्दिष्ट करने की अनुमति देता है जहां XXX odbcint.ini या ड्राइवर में प्रविष्टि है = path_to_shared_object आप इसके साथ चले गए। तथ्य यह है कि सबकुछ 32 बिट अच्छा है, फिर भी, आप अपनी लापता निर्भरता पुनः करते हैं, आप जो भी कर चुके हैं वह नहीं कर सकते हैं और इसे काम करने की उम्मीद करते हैं। एबीआई अमान्य बताता है कि आपने एक असंगत साझा ऑब्जेक्ट स्थापित किया है। यह उतना आसान नहीं है जितना। – bohica

2

जांचने की एक चीज़ यूनिक्सोडबीसी libs के मामूली संस्करण संख्या है जो चालक के खिलाफ जुड़ा हुआ है। चूंकि यूनिक्सोडबीसी 2.3.1 मैंने 64 बिट प्लेटफ़ॉर्म पर SQLLEN आकार में परिवर्तन को प्रतिबिंबित करने के लिए मामूली lib संख्या 2 को बदल दिया है।हालांकि यदि ड्राइवर lib को पहले संस्करण के विरुद्ध जोड़ा गया था तो यह libodbc.so.1 की तलाश करेगा, और वर्तमान स्रोत libodbc.so.2 प्रदान करते हैं। सरल समाधान * .so.1 से * .so.2 तक एक sym लिंक प्रदान करना है। Libodbcinst.so के बारे में भी यही सच है, इसलिए इसे भी जांचें।

संबंधित मुद्दे