Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I get "Can't locate loadable object for module" even after installing the module?

Tags:

module

perl

Could anyone point me to possible causes of Perl not finding an installed module?

$ ll /usr/share/perl5/Unix/Processors.pm
-rw-r--r-- 1 root root 3.2K Sep 11 12:39 /usr/share/perl5/Unix/Processors.pm

Ok,

$ perldoc -l Unix::Processors
/usr/share/perl5/Unix/Processors.pm

Ok, but

$ perl -MUnix::Processors -e1
Can't locate loadable object for module Unix::Processors in @INC (@INC contains: /usr/lib/cegma /usr/share/mocat/src /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at -e line 0
Compilation failed in require.
BEGIN failed--compilation aborted.

FIXED: I had put the compiled Processors.so next to the .pm when it should be in the auto directory.

like image 776
morais Avatar asked Feb 24 '15 15:02

morais


1 Answers

The Unix::Processors module has an XS (C) component that has to be compiled and linked as part of the installation process. The error message Can't locate loadable object is referring to this component (a shared library) rather than the .pm module file itself

This is a symptom of a wrongly-installed module, and most often happens when the .pm file has been simply copied into place instead of being installed properly as described in perldoc perlmodinstall. It can also happen if the installation has been forced, regardless of any errors in the build and test phases.

like image 67
Borodin Avatar answered Sep 28 '22 08:09

Borodin