Perl 无法定位内联 C 模块:"Had problems bootstrapping Inline module"
Perl can't locate inline C module: "Had problems bootstrapping Inline module"
尝试 运行 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
"inline" 模块,它似乎位于此处:
[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
包的 installation/build,还是 LRSIM
的源代码中的错误。
我完全不懂 Perl,但我试图在此处包含一些有关我的 Perl 设置的信息(注意有两个文件,"Perl modules" 和 "Perl configuration"):
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
您的 strace
日志 make
的第 24093 行附近说了一些关于 Clock skew detected
的内容。也许问题与脚本在 (/mnt/fargen/experiments/...
) 上 运行 的文件系统有关?
make
依靠准确的时间戳来确定哪些文件需要更新并安排其操作。如果时间戳错误,文件可能构建不正确或根本不构建。
之所以涉及 make
是因为在幕后 Inline::C
提取了嵌入式 C 代码并为其创建了一个 ad-hoc Perl 模块,包括一个 XS 文件,Makefile.PL
,以及整台机器。然后它调用 perl Makefile.PL && make && make install
,它应该创建一个 .so
文件并将其复制到 perl 可以加载它的位置(这个 .so
文件是 可加载对象 错误信息中提到)。
尝试 运行 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
"inline" 模块,它似乎位于此处:
[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
包的 installation/build,还是 LRSIM
的源代码中的错误。
我完全不懂 Perl,但我试图在此处包含一些有关我的 Perl 设置的信息(注意有两个文件,"Perl modules" 和 "Perl configuration"): 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
您的 strace
日志 make
的第 24093 行附近说了一些关于 Clock skew detected
的内容。也许问题与脚本在 (/mnt/fargen/experiments/...
) 上 运行 的文件系统有关?
make
依靠准确的时间戳来确定哪些文件需要更新并安排其操作。如果时间戳错误,文件可能构建不正确或根本不构建。
之所以涉及 make
是因为在幕后 Inline::C
提取了嵌入式 C 代码并为其创建了一个 ad-hoc Perl 模块,包括一个 XS 文件,Makefile.PL
,以及整台机器。然后它调用 perl Makefile.PL && make && make install
,它应该创建一个 .so
文件并将其复制到 perl 可以加载它的位置(这个 .so
文件是 可加载对象 错误信息中提到)。