1831408 Members
3169 Online
110025 Solutions
New Discussion

Re: perl problem

 
Seetha Lakshmi
Frequent Advisor

perl problem

Hi,

Iam having a web application runing on perl 5.6.1. When i click on any link in my application it gives the following error message. Any help would be appreciated.

Can't find 'boot_IO' symbol in /opt1/perl5.6.1/lib/5.6.1/PA-RISC2.0/auto/IO/IO.sl.

Please suggest me what is the problem
8 REPLIES 8
Peter Godron
Honored Contributor

Re: perl problem

Seetha,
can you please double-check that:
1. The installation and make of perl worked
2. That IO.sl was correctly installed and built
To me it seems the code is trying to find a label that is not in the right place
Regards
Seetha Lakshmi
Frequent Advisor

Re: perl problem

my application looks for perl installation in the directory /opt/perl. But since on the particular unix machine where the problem is occuring perl 5.6.1 is installed in the directory "opt1/perl5.6.1". So i set the environment variable PERL5LIB t0 /opt1/perl5.6.1/lib/5.6.1/PA-RISC2.0 before starting the application. How do i check if the installation of /opt1/perl5.6.1/lib/5.6.1/PARISC2.0/auto/IO/IO.sl is correct.
H.Merijn Brand (procura
Honored Contributor

Re: perl problem

Simple solution, make /opt1/perl a symbolic link to /opt/perl (or whatever is the reflection of the truth)

a. /opt1 does not exists, and /opt does:

# ln -s /opt /opt1

b. /opt1 /does/ exist and is a dir, but has no perl, and /opt has perl installed

# ln -s /opt/perl /opt1/perl

c. /opt1 has perl installed, /opt does not exist (strange situation)

# ln -s /opt1 /opt

d. /opt1 has perl installed, and /opt exists, but has no perl

# ln -s /opt1/perl /opt/perl

More difficult solution

a. set $PERL5LIB to include everything you need to find the modules. The default will look more or less like:

a5:/u/usr/merijn 102 > /opt/perl/bin/perl -le'print join":",@INC'
/opt/perl/lib/5.8.6/PA-RISC2.0:/opt/perl/lib/5.8.6:/opt/perl/lib/site_perl/5.8.6/PA-RISC2.0:/opt/perl/lib/site_perl/5.8.6:/opt/perl/lib/site_perl:.
a5:/u/usr/merijn 103 >

b. Include all of thise in the @INC in your script:

push @INC, "/opt1/perl/lib/5.8.6/PA-RISC2.0", "/opt1/perl/lib/5.8.6", "/opt1/perl/lib/site_perl/5.8.6/PA-RISC2.0", "/opt1/perl/lib/site_perl/5.8.6", "/opt1/perl/lib/site_perl";

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Peter Godron
Honored Contributor

Re: perl problem

Seetha,
when perl was installed were the binaries or the source code downloaded?
If the code was downloaded it will have been compiled, which would show you any errors.
If the binaries were used, chances are all modules will expect other modules to be in a certain place.
in my experience that quickest way to solve problems with code being installed in alternative directories is to create links so the path matches ok.
Regards
Seetha Lakshmi
Frequent Advisor

Re: perl problem

I set PERL5LIB="/opt1/perl5.6.1/lib/5.6.1/PA-RISC2.0 and I also set the @INC environment variable correctly. But still I get the following error " Can't find 'boot_IO' symbol in /opt1/perl5.6.1/lib/5.6.1/PA-RISC2.0/auto/IO/IO.sl". Can anyone suggest what is the problem.
Ralph Grothe
Honored Contributor

Re: perl problem

I think Merijn simply forgot to mention.
Place the pushing of @INC inside a BEGIN block to ensure it's evaluated already at compile time instead of runtime when it was too late.
Madness, thy name is system administration
Peter Godron
Honored Contributor

Re: perl problem

Seetha,
can you please run the following:
nm -f /opt1/perl5.6.1/lib/5.6.1/PA-RISC2.0/auto/IO/IO.sl | grep boot_IO
This command will list all symbols defined in the IO.sl library and filter out only the boot_IO label.
If this returns nothing it means that the shared lib does not contain the symbol you need.
Have you created the links and tried again?
Seetha Lakshmi
Frequent Advisor

Re: perl problem

I gave the nm -f /opt1/perl5.6.1/lib/5.6.1/PA-RISC2.0/auto/IO/IO.sl | grep boot_IO command and I got the following.

boot_IO | 16472|extern|entry |
boot_IO | 16664|extern|code |$CODE$.

Please suggest further actions