FAQ
Hello,

I am trying to install Perl DBI on an HPUX Cluster Server. Here are the
particulars:

* Unix Version: 11.11
* Informix Version: 9.30.FC1-1
* DBI Version: DBI-1.38
* DBD Version: DBD-Informix-2003.04

I have succeeded in making DBI, but I am having trouble making DBD. At
the end of the ouput from make, I get the following error output:

LD_RUN_PATH="" ld -b -s -a shared Informix.o dbdimp.o dbdattr.o
sqltoken.o sqltype.o ixblob.o decsci.o odbctype.o link.o esqlcver.o
esqlc_v6.o -L/
opt/informix9.30.FC1-1/lib -L/opt/informix9.30.FC1-1/lib/esql -lifsql
-lifasf -lifgen -lifos -lifgls -lnsl -lm -lsec
/opt/informix9.30.FC1-1/lib/esql/
checkapi.o -lifglx -o blib/arch/auto/DBD/Informix/Informix.sl
ld: dbdimp.o: Mismatched ABI. 64-bit PA object file found in 32-bit
link.
*** Error exit code 1

Stop.

I have looked on the Internet to see if anyone else has had a similar
problem. I found some postings, but did not find anything that helped.

I have attached a LOG file, OOPS.log, that contains the output from the
following:

* perl Makefile.PL
* make

Another perturbing factor in this install of Perl DBI is that this
installation is in a clustered environment. There are multiple virtual
servers residing on this one clustered server (~65 virtual servers).
There is a shared perl at /usr/bin/perl among others. When I build this
Custom Perl, I need to locate it in a unique directory, relative to the
PACKAGE ROOT Directory. In my case, this path is as follows:

/cm-donp/opt/bin/perl

When I built DBI, I had to run make as follows:

make PREFIX=/cm-donp/opt

This worked just fine; all the DBI files ended up under /cm-donp/opt.
When I look at the LOG file output, it says something about using DBI
version 1.35. I built 1.38. How do I point to my version of DBI? Make
appears to be using a pre-existing DBI 1.35 installation in the
following directory:

/opt/perl5/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBI

My 1.38 built version is in:

/cm-donp/opt/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBI

Are there changes that need to be made to Makefile.PL to point to my
1.38 version? Anything else?

I would appreciate any help you can give me. I am up against a tight
schedule, and am in desperate need of assistance.

Dean Heath
Managed Business Solutions (MBS)
Location: Corvallis Site, BLDG 5U-P5
Email: Dean.Heath@hp.com
Phone: (541) 715-3035
Fax: (541) 715-1728

Search Discussions

  • DL Redden at Nov 22, 2003 at 4:00 am
    This error is due to the fact that you are using a 32-bit PERL to build DBD on a 64-bit Informix SDK. The Informix SDK must be at the same bit level as you PERL installation. Either build a 64-bit PERL, good luck, or install a 32-bit SDK, what I did.

    "Heath, Dean (MBS Employee)" wrote:Hello,

    I am trying to install Perl DBI on an HPUX Cluster Server. Here are the particulars:

    Unix Version: 11.11
    Informix Version: 9.30.FC1-1
    DBI Version: DBI-1.38
    DBD Version: DBD-Informix-2003.04
    I have succeeded in making DBI, but I am having trouble making DBD. At the end of the ouput from make, I get the following error output:
    LD_RUN_PATH="" ld -b -s -a shared Informix.o dbdimp.o dbdattr.o sqltoken.o sqltype.o ixblob.o decsci.o odbctype.o link.o esqlcver.o esqlc_v6.o -L/
    opt/informix9.30.FC1-1/lib -L/opt/informix9.30.FC1-1/lib/esql -lifsql -lifasf -lifgen -lifos -lifgls -lnsl -lm -lsec /opt/informix9.30.FC1-1/lib/esql/
    checkapi.o -lifglx -o blib/arch/auto/DBD/Informix/Informix.sl
    ld: dbdimp.o: Mismatched ABI. 64-bit PA object file found in 32-bit link.
    *** Error exit code 1

    Stop.
    I have looked on the Internet to see if anyone else has had a similar problem. I found some postings, but did not find anything that helped.

    I have attached a LOG file, OOPS.log, that contains the output from the following:

    perl Makefile.PL
    make
    Another perturbing factor in this install of Perl DBI is that this installation is in a clustered environment. There are multiple virtual servers residing on this one clustered server (~65 virtual servers). There is a shared perl at /usr/bin/perl among others. When I build this Custom Perl, I need to locate it in a unique directory, relative to the PACKAGE ROOT Directory. In my case, this path is as follows:
    /cm-donp/opt/bin/perl
    When I built DBI, I had to run make as follows:
    make PREFIX=/cm-donp/opt
    This worked just fine; all the DBI files ended up under /cm-donp/opt. When I look at the LOG file output, it says something about using DBI version 1.35. I built 1.38. How do I point to my version of DBI? Make appears to be using a pre-existing DBI 1.35 installation in the following directory:
    /opt/perl5/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBI
    My 1.38 built version is in:
    /cm-donp/opt/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBI
    Are there changes that need to be made to Makefile.PL to point to my 1.38 version? Anything else?

    I would appreciate any help you can give me. I am up against a tight schedule, and am in desperate need of assistance.

    Dean Heath
    Managed Business Solutions (MBS)
    Location: Corvallis Site, BLDG 5U-P5
    Email: Dean.Heath@hp.com
    Phone: (541) 715-3035
    Fax: (541) 715-1728


    ATTACHMENT part 2 application/octet-stream name=OOPS.log


    ---------------------------------
    Do you Yahoo!?
    Free Pop-Up Blocker - Get it now
  • Jonathan Leffler at Nov 22, 2003 at 4:17 am

    Heath, Dean (MBS Employee) wrote:

    Hello,

    I am trying to install Perl DBI on an HPUX Cluster Server. Here are the
    particulars:

    * Unix Version: 11.11
    * Informix Version: 9.30.FC1-1
    * DBI Version: DBI-1.38
    * DBD Version: DBD-Informix-2003.04
    And ESQL/C 9.51.FC1. Thanks for including the OOPS.log output.
    I have succeeded in making DBI, but I am having trouble making DBD. At
    the end of the ouput from make, I get the following error output:

    LD_RUN_PATH="" ld -b -s -a shared Informix.o dbdimp.o dbdattr.o
    sqltoken.o sqltype.o ixblob.o decsci.o odbctype.o link.o esqlcver.o
    esqlc_v6.o -L/
    opt/informix9.30.FC1-1/lib -L/opt/informix9.30.FC1-1/lib/esql
    -lifsql -lifasf -lifgen -lifos -lifgls -lnsl -lm -lsec
    /opt/informix9.30.FC1-1/lib/esql/
    checkapi.o -lifglx -o blib/arch/auto/DBD/Informix/Informix.sl
    ld: dbdimp.o: Mismatched ABI. 64-bit PA object file found in 32-bit
    link.
    *** Error exit code 1
    Somewhere along the line, I've dropped the flag that tells the linker
    (ld) that you're doing a 64-bit link. Suggestion - look at the
    equivalent line for DBI and see what's different. There's an option
    to ld missing above. Then you can do one of a variety of things to
    complete the build with the correct option. I'd probably do a
    cut'n'paste on the output from make and insert the extra option.
    Stop.

    I have looked on the Internet to see if anyone else has had a similar
    problem. I found some postings, but did not find anything that helped.

    I have attached a LOG file, OOPS.log, that contains the output from the
    following:

    * perl Makefile.PL
    * make

    Another perturbing factor in this install of Perl DBI is that this
    installation is in a clustered environment. There are multiple virtual
    servers residing on this one clustered server (~65 virtual servers).
    There is a shared perl at /usr/bin/perl among others. When I build this
    Custom Perl, I need to locate it in a unique directory, relative to the
    PACKAGE ROOT Directory. In my case, this path is as follows:
    /cm-donp/opt/bin/perl

    When I built DBI, I had to run make as follows:

    make PREFIX=/cm-donp/opt
    Ooh; this is a wholly separate problem. My personal advice is to
    avoid modifying /usr/bin/perl -- there's too much danger of breaking
    something in the system.
    This worked just fine; all the DBI files ended up under /cm-donp/opt.
    When I look at the LOG file output, it says something about using DBI
    version 1.35. I built 1.38. How do I point to my version of DBI? Make
    appears to be using a pre-existing DBI 1.35 installation in the
    following directory:

    /opt/perl5/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBI
    Yes - the DBD::Informix was built with DBI 1.35, not 1.38.
    My 1.38 built version is in:

    /cm-donp/opt/lib/site_perl/5.6.1/PA-RISC1.1/auto/DBI
    You have to set an environment variable or equivalent. Am I imagining
    things if I mention PERL5_LIB? You'd set that to inlude some prefix
    of that path name - I'm hesitant to say which. It might be as short
    as /cm-donp/opt/lib; it might be as long as up to PA-RISC1.1.
    Are there changes that need to be made to Makefile.PL to point to my
    1.38 version? Anything else?

    I would appreciate any help you can give me. I am up against a tight
    schedule, and am in desperate need of assistance.

    *Dean Heath*
    Managed Business Solutions (MBS)
    Location: Corvallis Site, BLDG 5U-P5
    Email: Dean.Heath@hp.com
    Phone: (541) 715-3035
    Fax: (541) 715-1728
    I'm not quite sure about your path to Perl - is /cm-donp/opt/bin/perl
    the executable or a directory? The way I do it (not the only way -
    TMTOWTDI - and not even necessarily the best) is to install Perl into
    /home/jleffler/perl/v5.008002 and then fix up my PATH to include
    /home/jleffler/perl/v5.008002/bin/perl. This automatically locates
    the software I add under the base directory. I'd adopt a variant of
    this even if I had to administer multiple similar machines (which I
    don't); installing the software for Perl 5.8.2 in some appropriate
    common directory, and if necessary leave links from /usr/local/bin or
    some other location pointing to the current version of Perl.

    ...I see DL Redden has come up with a slightly different diagnosis of
    your problem. And he might well be right. Your Perl binary was
    originally built on HP-UX 10.20, and isn't PA-RISC1.1 a 32-bit
    version? In which case, you do have a 32-bit to 64-bit problem. I'd
    recommend recompiling Perl (5.8.2) on the 64-bit HP-UX 11.11 platform,
    and proceeding from there. If you want to continue with 32-bit Perl,
    then you need a 32-bit version of ESQL/C. I'm not sure whether you
    need CSDK 2.70.HC1 or 2.70.UC1 - but it is one of those two. Or a
    more recent version of CSDK...

    --
    Jonathan Leffler (jleffler@earthlink.net, jleffler@us.ibm.com)
    #include <disclaimer.h>
    Guardian of DBD::Informix v2003.04 -- http://dbi.perl.org/

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupdbi-users @
categoriesperl
postedNov 21, '03 at 6:32p
activeNov 22, '03 at 4:17a
posts3
users3
websitedbi.perl.org

People

Translate

site design / logo © 2022 Grokbase