2010-09-27 63 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安裝。

相關問題