2009-08-07 106 views
6

我有一個C++對象,我使用Perl XS轉換爲Perl。這個過程適用於Perl 5.8.5和5.8.7。但只要我嘗試使用Perl 5.10.0,就會遇到很多編譯錯誤。他們大多數沿着這些線:當我用Perl 5.10編譯XS時,爲什麼會出現「undefined reference」錯誤?

 
undefined reference to 'PL_stack_max' 
undefined reference to 'PL_stack_sp' 
undefined reference to 'Perl_sv_2pv_flags' 
undefined reference to 'Perl_sv_setref_pv' 

這告訴我,由於某種原因,Perl XS的東西沒有正確鏈接。當我從5.8.5版本升級到5.8.7版本時,我只需要更改版本並重新制作。

任何提示?

回答

7

當您移至5.10.0時是否重新編譯了XS擴展?

您是否將Perl 5.10.0設置爲在構建時保持向後兼容性? (這甚至可能嗎?我從來沒有試圖建立向後兼容性,所以我不能確定它甚至是一個選項,而@Ysth認爲它不是。)

我在工作時看到過類似的問題在主要版本的Perl之間,但最近還不足以確定導致問題的原因。但我似乎記得,在配置過程結束的某個地方,有一個關於Perl的哪些先前版本與XS擴展兼容的問題等。

+0

perl 5.10.0不能與5.8.x進行二進制向後兼容。 – ysth 2009-08-09 10:25:44

+0

@Ysth:如果你這麼說。我記得看到了配置問題,但我不記得這些問題是否與5.10.0一起出現。今年我只創建了幾次Perl 5.10.0,並沒有太注意答案,因爲我從來沒有尋求向後兼容性,默認是'不'。 – 2009-08-09 15:37:23

+0

但在這種情況下,我試圖用5.10.0重新編譯;不使用5.10.0 – shergill 2009-08-10 14:39:42

2

我在64位機器上使用32位Perl 5.10.0 。問題解決了! 感謝所有回覆的人。

相關問題