Operating System - Linux
1823267 Members
2979 Online
109648 Solutions
New Discussion юеВ

DBD:Informix installed error for Perl

 
SOLVED
Go to solution
Steven_181
Advisor

DBD:Informix installed error for Perl

I have the following successfully installed:

-HP-UX 11.23 ia64 (itanium machine)
-4GL 7.32 FC3
-IDS 9.40 FC7
-SDK 2.81 FC3 with ESQL/C 9x
-Perl 5.8.3 default on /opt/perl
-Apache 1.3.31
-DBI 1.50
-HP C/ANSI compiler
-GCC 4.10 compiler

We need to connect to Informix from Perl.

During the installation of DBD-Informix for 2003.04. I encounter the following error:

LD_RUN_PATH="" /usr/bin/ld -b +vnocompatwarnings -L/usr/lib/hpux32 Informix.o dbdimp.o dbdattr.o sqltoken.o sqltype.o ixblob.o decsci.o odbctype.o link.o esqlcver.o esqlc_v6.o -L/apps/informix94/lib -L/apps/informix94/lib/esql -lifsql -lifasf -lifgen -lifos -lifgls -ldl -lm -lsec -lelf /apps/informix94/lib/esql/checkapi.o -lifglx -o blib/arch/auto/DBD/Informix/Informix.so ld: Can't find library or mismatched ABI for -lifsql Fatal error.

*** Error exit code 1

Kindly advice.

Steven
21 REPLIES 21
Arunvijai_4
Honored Contributor

Re: DBD:Informix installed error for Perl

Hi Steven,

You need to make sure you compile for 32 bit or 64 bit and use corresponding libraries to link.

-Arun
"A ship in the harbor is safe, but that is not what ships are built for"
Ralph Grothe
Honored Contributor

Re: DBD:Informix installed error for Perl

Yes, if libifsql is in your LD_LIBRARY_PATH it sound as if you are trying to link 32bit and 64bit objects, I would assume.
Madness, thy name is system administration
Steven_181
Advisor

Re: DBD:Informix installed error for Perl

I am new to this. Could you advice what should I do.

What are the steps to overcome the errors?

Thanks
Arunvijai_4
Honored Contributor

Re: DBD:Informix installed error for Perl

Hi,

Edit your LF_RUN_PATH to add full to 32 or 64 bit lifsl. I am not sure which bit you are compiling. Find out full path using find command, # find . -name "libifsql"

-Arun
"A ship in the harbor is safe, but that is not what ships are built for"
H.Merijn Brand (procura
Honored Contributor

Re: DBD:Informix installed error for Perl

Small typo in that post :)
LF_RUN_PATH => LD_RUN_PATH

but that aside.

Check 1: is your informix 32bit or 64bit?

I bet it is 64bit, as the error from DBD::Informix hints me towards the fact that you are using a 32bit perl:
LD_RUN_PATH="" /usr/bin/ld -b +vnocompatwarnings -L/usr/lib/hpux32 Informix.o db

Check 2: As I now assume that you have a 64bit Informix, you will *need* a 64bit perl to go with it. 32bit and 64bit don't mix
So you have to check your install and see if you have both perl/32 and perl/64, and where you have them available
If you only have perl/32, you will have to install perl/64. If you also have perl64, you only have to change your $PATH, and restart the DBD::Informix stuff (assuming that perl/64 already includes DBI

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Steve Lewis
Honored Contributor

Re: DBD:Informix installed error for Perl

Yes it is definitely 64 bit informix, thats what the FCx sub-version denotes.
Steven_181
Advisor

Re: DBD:Informix installed error for Perl

Thanks.

Yes. The informix is 64bits. And there are 2 perl (32+64) installed in the HP 11.23 by default. This is very confusing.

I have make my PATH to point to /opt/perl_64 and also ln -s /opt/perl_64/bin/perl perl in /usr/bin.

Now the perl is 64 bits.

This have solved the DBI and DBD problem.

Now I recompile my Apache mod_perl again
due to changing to 64 bits perl.

It was successful compile with the libperl.so create.

But when I start the Apache, it give me an error as follows. Did I miss something?

/usr/lib/hpux32/dld.so: Unsatisfied code symbol '__divsi3' in load module '/apps/apache/libexec/libproxy.so'.
Syntax error on line 230 of /apps/apache/conf/httpd.conf:
Cannot load /apps/apache/libexec/libproxy.so into server: Unresolved external
./apachectl start: httpd could not be started

Any help is greatly appreciated.
Arunvijai_4
Honored Contributor

Re: DBD:Informix installed error for Perl

Hi Steven,


/usr/lib/hpux32/dld.so: Unsatisfied code symbol '__divsi3' in load module '/apps/apache/libexec/libproxy.so'.
Syntax error on line 230 of /apps/apache/conf/httpd.conf:
Cannot load /apps/apache/libexec/libproxy.so into server: Unresolved external
./apachectl start: httpd could not be started

You should have Apache 64 bit since you built mod_perl in 64. A note of caution: Executables and Binaries should always have mode matching (32 or 64).

Also, try to assign points.

-Arun
"A ship in the harbor is safe, but that is not what ships are built for"
H.Merijn Brand (procura
Honored Contributor

Re: DBD:Informix installed error for Perl

> /usr/lib/hpux32/dld.so: Unsatisfied code symbol '__divsi3' in load module '/apps/apache/libexec/libproxy.so'.

All those mod3, div3, ***3 calls can be found in libgcc

Make Apachy and/or mod_perl force link with libgcc.a and the problem will most likely disappear

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Steven_181
Advisor

Re: DBD:Informix installed error for Perl

Hi Merjin,

Could you kindle let me know how to do the following: I am very new to this issue.

Thanks.

Make Apachy and/or mod_perl force link with libgcc.a and the problem will most likely disappear

Arunvijai_4
Honored Contributor

Re: DBD:Informix installed error for Perl

Hi Steven,

At the time of compiling mod_perl, you need to explicitly link to libgcc.a. To do this, add full path to libgcc.a in Makefile when "ld" being called,

-L/usr/local/lib/libgcc.a or whichever applicable in your case.

-Arun
"A ship in the harbor is safe, but that is not what ships are built for"
H.Merijn Brand (procura
Honored Contributor

Re: DBD:Informix installed error for Perl

You said you rebuilt perl.

change the Makefile, and add -lgcc to the LDFLAGS

If that doesn't force libgcc, add a dummy call in one of the .c files, like

void _force_libgcc_load ()
{
divsi3 ();
}

HTH, Enjoy, Have FUN! H.Merijn [ who uses Apache nor mod_perl ]
Enjoy, Have FUN! H.Merijn
Steven_181
Advisor

Re: DBD:Informix installed error for Perl

Hi All,

I have tried the following to compile Apache1.3.31 to 64 bit using gcc on my Itanium rx2620.

1) export LDFLAGS='-mlp64'

2) ./configure --with-layout=Apache --prefix=/apps/apache \
--enable-module=most \
--enable-shared=max

3) make

But I get the following errors:

gcc -c -I../os/unix -I../include -DHPUX11 -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite `../apaci` gen_test_char.c
gcc -DHPUX11 -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite `../apaci` -mlp64 -o gen_test_char gen_test_char.o -lm -lpthread
ld: Can't find library or mismatched ABI for -lgcc
Fatal error.
collect2: ld returned 1 exit status
*** Error exit code 1

I have the libgcc.a locate in:
/opt/hp-gcc-4.1.0/lib/gcc/ia64-hp-hpux11.23/4.1.0/hpux64/libgcc.a
/opt/hp-gcc-4.1.0/lib/gcc/ia64-hp-hpux11.23/4.1.0/libgcc.a

But I can't seems to get Apache 64 compile.

Any ideas.

Thanks
H.Merijn Brand (procura
Honored Contributor
Solution

Re: DBD:Informix installed error for Perl

The first gcc line did not have the -mlp64 flag, causing it to build a 32bit object

You will need to add -mlp64 to the CCFLAGS, and -lgcc to the LDFLAGS

Enjoy, Have FUN! H.Merijn [ don't forget to express your satisfaction with the answers given ]
Enjoy, Have FUN! H.Merijn
Arunvijai_4
Honored Contributor

Re: DBD:Informix installed error for Perl

Steven,

1) export CFLAGS="-mlp64"

2) export CPPFLAGS="-mlp64" (Precautionary step)

mismatched ABI generally means of bit compatibility.

-Arun

"A ship in the harbor is safe, but that is not what ships are built for"
Steven_181
Advisor

Re: DBD:Informix installed error for Perl

Sorry for bothering all of you.

The compile to 64 bits now works fine.
It's was great!

But when I start apache, I get the following error:

/usr/lib/hpux64/dld.so: Unsatisfied code symbol '__modsi3' in load module '/apps/apache/libexec/mod_imap.so'.
Syntax error on line 218 of /apps/apache/conf/httpd.conf:
Cannot load /apps/apache/libexec/mod_imap.so into server: Unresolved external

I have out of ideas.

Any one knows what next?
H.Merijn Brand (procura
Honored Contributor

Re: DBD:Informix installed error for Perl

edit one of the .c files and add

void _force_libgcc_load ()
{
divsi3 ();
}

That should forc-load libgcc

Maybe more friendly (and easier), find yourself the FULL PATH for libgcc.a and add it to the LDFLAGS

LDFLAGS='/usr/local/pa20_64/lib/gcc/hppa64-hp-hpux11.00/4.0.3/libgcc.a ....'

Let the .... be what was in LDFLAGS before you changed it

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Arunvijai_4
Honored Contributor

Re: DBD:Informix installed error for Perl

Hi Steven,


/usr/lib/hpux64/dld.so: Unsatisfied code symbol '__modsi3' in load module '/apps/apache/libexec/mod_imap.so'.
Syntax error on line 218 of /apps/apache/conf/httpd.conf:
Cannot load /apps/apache/libexec/mod_imap.so into server: Unresolved external

Comment out mod_imap.so in Apache configuration file. Then try to start Apache..

# grep "mod_imap.so" `find /apps/apache/conf -type f`

-Arun
"A ship in the harbor is safe, but that is not what ships are built for"
Steven_181
Advisor

Re: DBD:Informix installed error for Perl

Hi Merjin,

Do you mean to set the LDFLAGS='/opt/hp-gcc-4.1.0/lib/gcc/ia64-hp-hpux11.23/4.1.0/hpux64/libgcc.a -lgcc' ?

Steven_181
Advisor

Re: DBD:Informix installed error for Perl

I have recompile again with
LDFLAGS=/opt/hp-gcc-4.1.0/lib/gcc/ia64-hp-hpux11.23/4.1.0/hpux64/libgcc.a -lgcc

But I still get the error:

/usr/lib/hpux64/dld.so: Unsatisfied code symbol '__modsi3' in load module '/apps/apache/libexec/mod_imap.so'.
Syntax error on line 219 of /apps/apache/conf/httpd.conf:
Cannot load /apps/apache/libexec/mod_imap.so into server: Unresolved external
./apachectl start: httpd could not be started

I need the imap.so and also libproxy.so to be up. Both are having the same error.

Please advice.
isaac_loven
Frequent Advisor

Re: DBD:Informix installed error for Perl

I am having a simular problem. Did you find a solution ? Thanks Isaac