好的,所以我尝试在带有Oracle11g数据库的64位Solaris 11计算机上使用CPANM安装CGI模块,DBI模块和DBD :: Oracle驱动程序的组合。
我使用Perlbrew安装了最新版本的Perl,更新了CPANM,然后执行了以下操作...
cpanm -v -f -i CGI
cpanm -v -f -i DBI
这两个模块安装得很好,当我尝试正常安装时,DBI确实有一个小的测试错误(t / zvxnp_85gofer.t),但强制安装似乎有效。
然后我去尝试安装我需要的最后一部分:
cpanm -v -f -i DBD::Oracle
这是在安装结束时出现的错误......
Running Mkbootstrap for DBD::Oracle ()
chmod 644 Oracle.bs
rm -f blib/arch/auto/DBD/Oracle/Oracle.so
LD_RUN_PATH="/opt/oracle/rdbms/lib" gcc -G -L/usr/gnu/lib -fstack-protector Oracle.o dbdimp.o oci8.o -o blib/arch/auto/DBD/Oracle/Oracle.so \
-L/opt/oracle/rdbms/lib/ -lclntsh -lkstat -lnsl -lsocket -lresolv -lgen -ldl -lsched -lrt -R/opt/oracle/rdbms/lib -laio -lposix4 -lkstat -lm -lpthread \
ld: fatal: file /opt/oracle/rdbms/lib//libclntsh.so: wrong ELF class: ELFCLASS64
ld: fatal: file processing errors. No output written to blib/arch/auto/DBD/Oracle/Oracle.so
collect2: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `blib/arch/auto/DBD/Oracle/Oracle.so'
FAIL
! Installing DBD::Oracle failed. See /home/oracle/.cpanm/build.log for details.
我猜测它只是来自wrong ELF class: ELFCLASS64
它与存在的64位二进制文件之间的某些不匹配以及此驱动程序是否需要安装32位二进制文件?一些研究表明我需要找到lib32目录才能继续安装,但我似乎无法找到它。
我做了:
echo $ORACLE_HOME
---> /选择/ ORACLE / RDBMS
ls $ORACLE_HOME
返回以下目录......
apex emcli mgw rdbms
assistants has network relnotes
bin hs nls root.sh
ccr ide oc4j scheduler
cdata install odbc slax
cfgtoollogs install.platform olap sqldeveloper
clone instantclient ons sqlj
config inventory OPatch sqlplus
crs j2ee opmn srvm
csmig javavm oracore sysman
css jdbc oraInst.loc timingframework
ctx jdev ord ucp
cv jdk oui uix
dbs jlib owb utl
dc_ocm ldap owm wwg
deinstall lib64 perl xdk
demo log plsql
diagnostics md precomp
dv mesg racg
所以我看到了一个lib64,但没有lib或lib32。有没有人以前遇到过这个问题,找到了解决方案,或者知道我怎么能从这里继续?
答案 0 :(得分:2)
请在oracle.com上查看1271236.1和883702.1。它将解释如何为11i客户端安装获取32位库。
答案 1 :(得分:2)
我有同样的问题。通过对perl install执行./Configure -es -Dprefix=$HOME/usr/local -Dcc=gcc -Duse64bitall -Dusethreads
来修复它