2010-09-27 257 views
-1

在Perl中,这个错误是什么意思?为什么perl2exe会抱怨“未解析的符号:Perl_Gthr_key_ptr”?

Unresolved symbol: Perl_Gthr_key_ptr 

同时转换一个Perl文件中使用HP-UX PA-RISC机器上perl2exe成二进制我得到这个错误。

/usr/lib/dld.sl: Unresolved symbol: Perl_Gthr_key_ptr (code) from /tmp/p2xtmp-9979/Cwd.sl IOT trap (core dumped) 
+2

使用Google搜索“未解析的符号:Perl_Gthr_key_ptr”显示了其他人遇到问题后所做的操作。 – 2010-09-27 15:55:32

回答

5

关闭我的头顶,它看起来像一个非线程的Perl尝试加载为线程化Perl编译的模块。

编辑:澄清,您可以编译支持线程(线程perl)或不支持线程(非线程perl)的Perl。如果模块的构建与线程一起使用,并且由perl加载而不支持线程,则通常会产生上述错误。

要检查perl的线程支持,只需搜索在perl -V输出“线程”字符串:

perl -V | grep thread 
+0

我不明白你的意思是非线程perl运行线程perl模块 – Saravana 2010-09-27 10:47:19

+0

其实我的Perl代码工作正常.. – Saravana 2010-09-28 05:21:12

+0

让我给你一个清晰的图片..我有Perl代码,它工作正常,这是示例代码#!/ usr/bin/perl use strict; 要求5.8.0; 使用Data :: Dumper; 使用Cwd; 使用Cwd'abs_path'; #perl2exe_include bytes; my $ file; my $ dir; my $ abs_path; $ file =“dynamicload”; $ dir = getcwd; $ abs_path = abs_path($ file); print Dumper($ abs_path); 这工作正常,因为perl代码,但只有whil更改为binarty使用PERL2EXE它显示错误。还有一个更新是ldd /usr/lib/dld.sl输出显示/usr/lib/dld.sl:调用mmap()失败 - TEXT /usr/lib/dld.sl /usr/lib/dld.sl:没有足够的空间 – Saravana 2010-09-28 05:30:52

1

一个Perl模块加载到这是不符合你的基地Perl安装二进制兼容。这可能是由于在其他情况下,先前已经使用CPAN shell安装了模块,然后使用OS软件包管理器来升级它下面的Perl。这种情况可以通过

$ cpan -r 

得到解决,这将找到一个二进制组件所有的CPAN模块,并重新编译这些二进制组件免受最新的Perl安装。

相关问题