Tôi đang sử dụng ArchLinux và tôi đang cố gắng cài đặt trình điều khiển tiến trình OpenEdge để tôi có thể truy cập nó qua PHP. Tôi đã cài đặt gói unixodbc và các trình điều khiển, nhưng khi tôi kiểm tra kết nối qua isql hoặc PHP, tôi nhận được lỗi tương tự ...trình quản lý trình điều khiển unixodbc không thể mở thư viện được chỉ định khi cài đặt
# 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
Điều sai lầm là "/ usr/dlc/odbc /lib/pgoe1023.so "hiện đang tồn tại, tôi thậm chí còn liên kết nó với"/usr/dlc ".
Sau đây là các file .ini của tôi ...
ODBC.INI
[SUBS2A]
Description = ODBC Driver for Progress
Driver = /usr/dlc/odbc/lib/pgoe1023.so
FileUsage = 1
ODBCINST.INI (Tôi đã gỡ bỏ một số thông tin quan trọng vì nó là không thích hợp)
[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 Đang thêm thông tin ...
Th ey xuất hiện cho cả hai là 32-bit, ngoại trừ tôi không có ý tưởng những gì tôi đang làm về điều đó.
[[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
Nó xuất hiện rằng nó thiếu một số phụ thuộc ...
[[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)
CẬP NHẬT
tôi sao chép "libpgicu23.so" đến/usr/lib và nó giải quyết vấn đề đó, nhưng tôi vẫn cần "libstdC++ - libc6.2-2.so.3", nhưng khi tôi lấy một từ internet nó nói "lỗi trong khi tải thư viện được chia sẻ: /usr/lib/libstdc++-libc6.2-2.so. 3: Tệp ELF OS ABI không hợp lệ "
Tôi thậm chí còn thực hiện một liên kết tượng trưng từ "libstdC++ - libc6.2-2.so.3" thành "libstdC++. Vậy", nhưng mặc dù nó giải quyết được vấn đề qua ldd, nó gây ra lỗi này khi tôi truy vấn isql ..
isql: symbol lookup error: /usr/dlc/odbc/lib/pgoe1023.so: undefined symbol: __builtin_vec_new
Tôi chưa bao giờ cài đặt odbc trên hộp * nix, nhưng chúng tôi đã làm điều tương tự trên hộp cửa sổ và hoạt động tốt. Bất kỳ đầu vào nào được đánh giá cao.
OK Tôi đã chỉnh sửa câu hỏi của mình với nhiều thông tin hơn. Thật kỳ quặc bởi vì tôi thực sự đã có các tập tin ini ngược lại, tuy nhiên khi tôi đảo ngược chúng, lỗi trở nên tồi tệ hơn (nói rằng nó không thể tìm thấy DSN/Driver). Tuy nhiên khi tôi chạy ldd, tôi nhận được một số phụ thuộc bị thiếu, vì vậy tôi sẽ cố gắng sửa chữa điều đó, tôi tìm thấy một cái gì đó mà tôi nghĩ rằng có thể giúp đỡ ở đây: http://remidian.com/progress/progress-openedge-database-101b -install-on-centos-rhel.html – PolishHurricane
Thông thường nó sẽ không làm cho bất kỳ ý nghĩa rằng bạn đã có các tập tin ini sai cách xung quanh nhưng như unixODBC cho phép bạn chỉ định một trong hai trình điều khiển = XXX, nơi XXX là một mục nhập trong odbcint.ini OR Driver = path_to_shared_object bạn đã bỏ qua nó. Thực tế là tất cả mọi thứ là 32 bit os tốt tuy nhiên, bạn lại thiếu phụ thuộc của bạn, bạn không thể làm những gì bạn đã làm và mong đợi nó để làm việc. ABI không hợp lệ cho thấy bạn đã cài đặt một đối tượng chia sẻ không tương thích. Nó không đơn giản như vậy. – bohica