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."

Reply via email to