2009-08-07 10 views
6

Mam obiekt C++, który konwertuję do Perl przy użyciu Perl XS. Ten proces działa dobrze z Perl 5.8.5 i 5.8.7. Ale gdy tylko spróbuję użyć Perl 5.10.0, napotkam wiele błędów kompilacji. Większość z nich są wzdłuż tych linii:Dlaczego pojawiają się błędy "undefined reference" podczas kompilowania XS z Perl 5.10?

 
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' 

To mówi mi, że z jakiegoś powodu rzeczy Perl XS nie jest powiązany w prawidłowo. Kiedy przeszedłem od 5.8.5 do 5.8.7, musiałem tylko zmienić wersję i zrobić to ponownie.

Jakieś wskazówki?

Odpowiedz

7

Czy przekompilowałeś rozszerzenia XS po przejściu do wersji 5.10.0?

Czy ustawiłeś Perla 5.10.0, aby zachować kompatybilność wsteczną po zbudowaniu? (Czy to możliwe? Nigdy nie próbowałem tworzyć wstecznej kompatybilności, więc nie mogę być pewny, że jest to opcja, a @Ysth uważa, że ​​tak nie jest.)

Widziałem podobne problemy podczas pracy między głównymi wersjami Perla, ale niedostatecznie niedawno, aby mieć pewność co dokładnie powoduje problem. Ale wydaje mi się, że gdzieś blisko końca procesu konfiguracji jest pytanie o to, które poprzednie wersje Perla są kompatybilne z rozszerzeniami XS, itp.

+0

perl 5.10.0 nie można uzyskać kompatybilności binarnej z 5.8.x. – ysth

+0

@Ysth: jeśli tak mówisz. Pamiętam, jak widziałem pytanie konfiguracyjne, ale nie pamiętam, czy te pytania przychodziły z 5.10.0. Kilka razy w tym roku zbudowałem tylko Perl 5.10.0 i nie zwracałem zbyt wiele uwagi na odpowiedzi, ponieważ nigdy nie szukałem kompatybilności wstecznej, a domyślną jest "Nie". –

+0

, ale w tym przypadku próbuję przekompilować z 5.10.0; nie używaj czegoś skompilowanego przy pomocy 5.8.5 z 5.10.0 – shergill

2

Używałem 32-bitowego Perla 5.10.0 na maszynie 64-bitowej . Problem rozwiązany! Dziękuję wszystkim, którzy odpowiedzieli.

Powiązane problemy