I'm no expert on Oracle, but I have seen similar problems with Informix.
On Jan 3, 2008 7:00 AM, Richard T Malafa <[EMAIL PROTECTED]> wrote:
> [...]
> On the normal PA-RISC machines running 11i V1, I'm now failing in "make"
> after "perl Makefile.pl -l" with latest gcc 4.2.2 with the following:
>
> Running Mkbootstrap for DBD::Oracle ()
> chmod 644 Oracle.bs
> rm -f blib/arch/auto/DBD/Oracle/Oracle.sl
> gcc -Wl,+b"/ora01/app/oracle/product/10.2/lib:/lib/pa20_64"
> -shared -static-libgcc -fPIC -L/lib/pa20_64 Oracle.o dbdimp.o o
> ci8.o -o blib/arch/auto/DBD/Oracle/Oracle.sl \
> -L/ora01/app/oracle/product/10.2/lib -lclntsh -lrt -lpthread
> -lnsl \
>
> /usr/ccs/bin/ld: /ora01/app/oracle/product/10.2/lib/libclntsh.sl:
> Mismatched ABI. 64-bit PA shared library found in 32-bit link.
> collect2: ld returned 1 exit status
> *** Error exit code 1
>
On the face of it, that means you have a 64-bit Oracle client library
installed in the locations specified, but you are trying to build
DBD::Oracle to work with a 32-bit version of Perl. If this interpretation
is correct, this will not work and you are on a hiding to nothing until you
either install a 32-bit Oracle client library or a 64-bit version of Perl.
(The current DBD::Informix Makefile.PL reasonably reliably detects when
there is a mismatch between the installed Informix client libraries and the
version of Perl that is in use -- you wouldn't have gotten as far as having
a Makefile with DBD::Informix.)
Have you looked at the output of 'file $(which perl)' (assuming you use Korn
shell or Bash or another POSIX-compliant shell; otherwise, use back-ticks
instead of $(...)). What does 'perl -V' say?
Basically, you have to have a 64-bit version of Perl to use the 64-bit
Oracle (or Informix, or DB2, or ...) libraries. The standard Perl available
on HP-UX is a 32-bit version.
On Solaris, I build Perl for 64-bit either using the Sun C compiler and
telling Perl Configure that the C compiler is "cc -xarch=sparcv9" or using
the GNU C Compiler and telling Perl Configure that the C compiler is "gcc
-m64". Whether there's a better way is open to negotiation; that one has
worked pretty well for me. But that assumes you are building your own
Perl. If you're using the system-provided Perl, you have to use the same
compiler that was used to build Perl.
> Stop.
>
> No matter how I change the path etc with the Oracle DBA here I can't seem
> to get rid of this Mismatched ABI. And we tried some pretty ridiculous
> paths.
>
> Just went back to the HP site this morning and going to try the complete
> 4.2.1 gcc binary that was not available over the Holiday weekend..
> Didn't have this problem with the older gcc 4.2 and we didn't reinstall
> Oracle. Driving me nuts..
>
On the HP machine I was using earlier today, I found the following. (My
prompt is "Rp5470e7 JL:"; I had no say whatsoever in the choice of machine
name):
Rp5470e7 JL: uname -a
HP-UX rp5470e7 B.11.00 U 9000/800 1195494646 unlimited-user license
Rp5470e7 JL: which perl
/usr/contrib/bin/perl
Rp5470e7 JL: file $(which perl)
/usr/contrib/bin/perl: PA-RISC2.0 shared executable dynamically linked -not
stripped
Rp5470e7 JL: perl -V
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
Platform:
osname=hpux, osvers=10.20, archname=PA-RISC1.1
uname='hp-ux rydal b.10.20 a 9000777 2011764956 two-user license '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
Compiler:
cc='cc', ccflags =' -Ae -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 ',
optimize='-O +Onolimit',
cppflags='-Ae'
ccversion='A.10.32.18', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, usemymalloc=y, prototype=define
Linker and Libraries:
ld='ld', ldflags =''
libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib
libs=-lnsl_s -lndbm -ldld -lm -lc -lndir -lcrypt -lsec
perllibs=-lnsl_s -ldld -lm -lc -lndir -lcrypt -lsec
libc=/lib/libc.sl, so=sl, useshrplib=false, libperl=libperl.a
Dynamic Linking:
dlsrc=dl_hpux.xs, dlext=sl, d_dlsymun=undef, ccdlflags='-Wl,-E
-Wl,-B,deferred '
cccdlflags='+z', lddlflags='-b -s -a shared'
Characteristics of this binary (from libperl):
Compile-time options: USE_LARGE_FILES
Built under hpux
Compiled at Dec 6 2001 14:01:31
@INC:
/usr/local/lib/5.6.1/PA-RISC1.1
/usr/local/lib/5.6.1
/usr/local/lib/site_perl/5.6.1/PA-RISC1.1
/usr/local/lib/site_perl/5.6.1
/usr/local/lib/site_perl
.
Rp5470e7 JL:
Note that the pointer size (ptrsize) is 4 bytes - a dead giveaway that this
is not a 64-bit build of Perl.
--
Jonathan Leffler <[EMAIL PROTECTED]> #include <disclaimer.h>
Guardian of DBD::Informix - v2007.0914 - http://dbi.perl.org
"Blessed are we who can laugh at ourselves, for we shall never cease to be
amused."