2009-08-07 12 views
6

Tengo un objeto C++ que estoy convirtiendo a Perl usando Perl XS. Este proceso funciona bien con Perl 5.8.5 y 5.8.7. Pero tan pronto como trato de usar Perl 5.10.0, me encuentro con muchos errores de compilación. La mayoría de ellos están a lo largo de estas líneas:¿Por qué obtengo errores de "referencia no definida" cuando compilo mi 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' 

Eso me dice que por alguna razón las cosas Perl XS no está siendo vinculado en forma adecuada. Cuando pasé de 5.8.5 a v5.8.7, solo tuve que cambiar la versión y volver a hacerla.

¿Algún consejo?

Respuesta

7

¿Ha recompilado las extensiones XS cuando se trasladó a 5.10.0?

¿Ha establecido Perl 5.10.0 para mantener la compatibilidad con versiones anteriores cuando lo creó? (¿Es eso posible? Nunca intenté construir compatibilidad con versiones anteriores, así que no puedo estar seguro de que sea siquiera una opción, y @Ysth cree que no.)

He visto problemas similares cuando trabajo entre las principales versiones de Perl, pero no lo suficiente como para tener la certeza de qué es exactamente lo que causa el problema. Pero parece recordar que en algún lugar cerca del final del proceso de configuración hay una pregunta acerca de qué versiones anteriores de Perl son compatibles con las extensiones XS, etc.

+0

perl 5.10.0 no se puede hacer compatible binario hacia atrás con 5.8.x. – ysth

+0

@Ysth: si tú lo dices. Recuerdo haber visto la pregunta de configuración, pero no recuerdo si esas preguntas vinieron con 5.10.0. Este año, construí Perl 5.10.0 solo un par de veces, y no presté mucha atención a las respuestas porque nunca he buscado la compatibilidad con versiones anteriores y el valor predeterminado es 'No'. –

+0

pero en este caso estoy tratando de recompilar con 5.10.0; no use algo compilado con 5.8.5 con 5.10.0 – shergill

2

Estaba usando 32bit Perl 5.10.0 en una máquina de 64 bits . ¡Problema resuelto! Gracias a todos los que respondieron.

Cuestiones relacionadas