4.2 Requisitos de enlazado

Aunque el guion configure que viene con las fuentes de Python construirá correctamente Python para que exporte los símbolos necesarios para las extensiones de enlace dinámico, esto no es así de manera automática en las aplicaciones que empotran la biblioteca de Python estáticamente, al menos en Unix. Esto supone un problema cuando la aplicación está enlazada a la biblioteca de ejecución estática (libpython.a) y necesita cargar extensiones dinámicas (implementadas como ficheros .so).

El problema está en que algunos puntos de entrada están definidos en el entorno de ejecución de Python sólo para ser utilizados por los módulos de extensión. Si la aplicación huésped no usa ninguno de estos puntos de entrada, algunos enlazadores no incluirán estos puntos de entrada en la tabla de símbolos del ejecutable final. Es necesario proporcionar ciertas opciones al enlazador para indicarle que no elimine esos símbolos.

Determinar las opciones correctas para una plataforma dada puede se difícil, pero afortunadamente la configuración de Python ya tiene los valores necesarios. Para obtenerlos de un intérprete de Python instalado, se ha de arrancar una sesión interactiva:

>>> import distutils.sysconfig
>>> distutils.sysconfig.LINKFORSHARED 
'-Xlinker -export-dynamic'

El contenido de la cadena presentada será el bloque de opciones que se deben usar. Si la cadena aparece vacía, no es necesario añadir opciones adicionales. La definición de LINKFORSHARED se corresponde con la variable del mismo nombre del Makefile principal de Python.


Ver Sobre este documento... para obtener información sobre sugerencias.