Operating System - HP-UX
1753913 Members
8350 Online
108810 Solutions
New Discussion юеВ

Errormessage on Perl Module

 
SOLVED
Go to solution
Kalin Evtimov
Regular Advisor

Errormessage on Perl Module

Does anybody have an Idea what this error could mean:

/usr/lib/hpux32/dld.so: Unsatisfied code symbol '__divdf3' in load module '/opt/perl5/lib/site_perl/5.8.6/IA64.ARCHREV_0/auto/RRDs/RRDs.so'

RRDs.so is a part of an Perl-Module, which I compiled with cc. The Programm, which is crashing is using gcc, I think.

ldd -r RRDs.so gives me "Symbol not found" for most procedures incl. __divdf3.

If anybody has already had something like this, please help.

My System: HP-UX 11.23 on IA64
9 REPLIES 9
Ermin Borovac
Honored Contributor
Solution

Re: Errormessage on Perl Module

This is a result of mixing cc and gcc. __divdf3 can be found inside libgcc.so, which gcc pulls in at link time. If you are using cc to compile, libgcc won't be included so error will result.
Kalin Evtimov
Regular Advisor

Re: Errormessage on Perl Module

Is there a way for fixing this , or I have to compile my system again using only one compiler?
Ermin Borovac
Honored Contributor

Re: Errormessage on Perl Module

Check what compiler perl was compiled with

$ perl -V:cc

Also please provide output of

$ ldd -v /opt/perl5/lib/site_perl/5.8.6/IA64.ARCHREV_0/auto/RRDs/RRDs.so

If perl and perl module RRD were compiled with cc, then my guess is that RRD.so was linked with RRDtool shared library, which was compiled with gcc.

So you will probably need to recompile RRDtool with cc.

Kalin Evtimov
Regular Advisor

Re: Errormessage on Perl Module

The first gives:
cc='cc';

so, Perl was compiled with cc (as if I didn`t knew that :) )

The second:

find library=libm.so.1; required by /opt/perl5/lib/site_perl/5.8.6/IA64.ARCHREV_0/auto/RRDs/RRDs.so
libm.so.1 => /usr/lib/hpux32/libm.so.1
Kalin Evtimov
Regular Advisor

Re: Errormessage on Perl Module

OK, I compiled RRDtool with cc, but still the same.
H.Merijn Brand (procura
Honored Contributor

Re: Errormessage on Perl Module

instead of 'ldd' use 'chatr'

ldd is a more universal tool, but it only shows the things that can be resolved. chatr shows where the libs are *expected*

Then get yourself a libgcc.sl and put it where it is expected.

Your perl is built with 'cc', and one of the things you added is built with gcc. If you expect to add XS modules to your perl distro (XS modules are the modules that need a C compiler), your best bets are

1. Install the C compiler that was used to build perl

2. Install a perl build that used the C compiler you have (*)

Mixing of either is possible, but cannot (easily) be automated. A lot of manual intervention in the makefiles is needed, and also a trained eye in reading the messages

(*) gcc built perl binaries are available widely. On my site ( http://mirrors.develooper.com/hpux/ ) you find almost all builds for pa-risc. for itanium, you'd better go here: http://hpux.connect.org.uk/hppd/hpux/Languages/perl-5.8.6/

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Ermin Borovac
Honored Contributor

Re: Errormessage on Perl Module

/opt/perl5/lib/site_perl/5.8.6/IA64.ARCHREV_0/auto/RRDs/RRDs.so was compiled using gcc.

You will need to recompile it using cc.

You said that you recompiled rrdtool using cc. Have you also done 'make site-perl-install' to update perl module (/opt/perl5/lib/site_perl/5.8.6/IA64.ARCHREV_0/auto/RRDs/RRDs.so).
Kalin Evtimov
Regular Advisor

Re: Errormessage on Perl Module

my make doesn't know what site-perl-install is:

Make: Don't know how to make site-perl-install. Stop.

But if I check the Perl modules under webmin/Perl Modules, I can see that the RRD.s was compiled today.
Ermin Borovac
Honored Contributor

Re: Errormessage on Perl Module

It looks to me that rrdtool (version 1.2.8) by default installs rrd perl module in the directory where rrd is installed. More precisely it goes into $prefix/lib/perl where $prefix is given as an argument to to ./configure --prefix=$prefix.

To get rrd perl module installed in perl's site-perl directory (/opt/perl5/lib/site_perl) you have to run make site-perl-install in rrd source directory after successful build. However, you may need to run configure with --enable-site-perl-install option.

When rrd perl module is built with cc, '/opt/perl5/lib/site_perl/5.8.6/IA64.ARCHREV_0/auto/RRDs/RRDs.so' should not contain __divdf3 symbol. Check with nm

$ nm /opt/perl5/lib/site_perl/5.8.6/IA64.ARCHREV_0/auto/RRDs/RRDs.so | grep __divdf3