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: [EMAIL PROTECTED]
    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 ([EMAIL PROTECTED], [EMAIL PROTECTED]) #include <disclaimer.h>
Guardian of DBD::Informix v2003.04 -- http://dbi.perl.org/




Reply via email to