2009-08-07 10 views
6

Ho un oggetto C++ che sto convertendo in Perl usando Perl XS. Questo processo funziona perfettamente con Perl 5.8.5 e 5.8.7. Ma non appena provo a usare Perl 5.10.0, mi imbatto in molti errori di compilazione. La maggior parte di loro sono in questo senso:Perché ottengo errori di "riferimento non definito" quando compilo il mio XS con 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' 

che mi dice che per qualche motivo la roba Perl XS non è collegata in modo corretto. Quando sono passato da 5.8.5 a v5.8.7, ho dovuto cambiare la versione e rifarlo.

Qualche consiglio?

risposta

7

Hai ricompilato le estensioni XS quando sei passato a 5.10.0?

Hai impostato Perl 5.10.0 per mantenere la compatibilità all'indietro quando lo hai creato? (È anche possibile? Non ho mai provato a costruire la compatibilità all'indietro, quindi non posso essere sicuro che sia anche un'opzione, e @Ysth pensa che non lo sia.)

Ho visto problemi simili quando lavoro tra le versioni principali di Perl, ma non sufficientemente da poco tempo per essere sicuri di quale sia la causa del problema. Ma mi sembra di ricordare che da qualche parte vicino alla fine del processo di configurazione c'è una domanda su quali versioni precedenti di Perl essere compatibili con per le estensioni XS, ecc.

+0

Perl 5.10.0 non può essere reso compatibile binario con 5.8.x. – ysth

+0

@Ysth: se lo dici tu. Ricordo di aver visto la domanda di configurazione, ma non ricordo se quelle domande siano arrivate con 5.10.0. Ho solo costruito Perl 5.10.0 un paio di volte quest'anno, e non ho prestato molta attenzione alle risposte perché non ho mai cercato la compatibilità all'indietro e l'impostazione predefinita è "No". –

+0

ma in questo caso sto cercando di ricompilare con 5.10.0; non usare qualcosa compilato con 5.8.5 con 5.10.0 – shergill

2

Stavo usando Perl a 32 bit 5.10.0 su una macchina a 64 bit . Problema risolto! Grazie a tutti quelli che hanno risposto.

Problemi correlati