Perl无法找到内联C模块:“自举内联模块时出现问题”

时间:2019-06-21 10:25:46

标签: c linux perl inline

尝试运行Perl脚本时,在下面获得错误。该脚本来自以下程序包:https://github.com/aquaskyline/LRSIM

$ perl simulateLinkedReads.pl
Had problems bootstrapping Inline module 'simulateLinkedReads_pl_4e0722f'

Can't locate loadable object for module simulateLinkedReads_pl_4e0722f in @INC (@INC contains: [some long path]/_Inline/lib /home/olavur/perl5/lib/perl5/5.22.1/x86_64-linux-gnu-thread-multi /home/olavur/perl5/lib/perl5/5.22.1 /home/olavur/perl5/lib/perl5/x86_64-linux-gnu-thread-multi /home/olavur/perl5/lib/perl5 /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/local/share/perl/5.22.1/Inline.pm line 541.


at simulateLinkedReads.pl line 0.
INIT failed--call queue aborted.

因此它正在寻找simulateLinkedReads_pl_4e0722f“内联”模块,它似乎位于此处:

[some long path]/_Inline/lib/auto/simulateLinkedReads_pl_4e0722f/simulateLinkedReads_pl_4e0722f.inl

@INC路径包含[some long path]/_Inline/lib。它不应该包含[some long path]/_Inline/lib/auto吗?

因此,我不知道该错误是由于我的Perl设置,我的LRSIM软件包的安装/构建还是源于LRSIM的错误。

我是Perl的完整模型,但我尝试在此处包括有关Perl设置的一些信息(请注意,有两个文件,“ Perl模块”和“ Perl配置”): https://gist.github.com/olavurmortensen/00b2baa61399a5b7c39bca323dbf0233

使用perl -V获取一些配置信息,使用perl -e 'print qx/find $_ -name "*.pm"/ foreach ( @INC );'获取已安装的模块。

任何帮助将不胜感激。

编辑:

根据@melpomene的建议,我运行了strace -f -o trace.log perl LRSIM/simulateLinkedReads.pl并将跟踪信息上传到这里:

https://gist.github.com/olavurmortensen/eca66135486899beccf8610667241451

编辑:

更新的跟踪,因为它不完整: https://gist.github.com/olavurmortensen/eca66135486899beccf8610667241451

1 个答案:

答案 0 :(得分:2)

您的strace日志make的第24093行周围有关于Clock skew detected的内容。也许问题与脚本在(/mnt/fargen/experiments/...上运行的文件系统有关?

make依靠准确的时间戳来确定哪些文件需要更新并计划其操作。如果时间戳记错误,则文件可能构建不正确或根本不构建。


根本涉及make的原因是,Inline::C在后​​台提取了嵌入式C代码并为其创建了一个临时的Perl模块,其中包括一个XS文件Makefile.PL。 ,以及整个机械。然后,它将调用perl Makefile.PL && make && make install,后者应创建一个.so文件并将其复制到perl可以加载的位置(此.so文件是 loadable对象在错误消息中提到)。