Compilar extensiones para windows
Chema Cortes
py en ch3m4.org
Lun Jun 19 14:11:37 CEST 2006
Luis Miguel Morillas escribió:
>> Si eso va a ser lo mejor. Otra posibilidad puede ser usar Mingw, que
>> creo que en las últimas versiones va muy bien con Python (y en
>> particular con Python 2.4).
>>
>
> Eso es lo que he hecho al final. En 5 minutos tenía instalado el mingw
> y compilada la extensión.
No es que haya hecho muchas cosas, pero para compilar el módulo syck
(parser de YAML) usé cygwin en compatibilidad con mingw y me fue de
maravilla. No hace falta recompilar python; tan sólo sacar algunos
ficheros para importación de referencias. Lo tenía todo más o menos
documentado, pero las desgracias nunca vienen sólas. A la caída bestial
de mi servidor web, se une ahora el fallo general del disco duro de mi
pc. Necesitaré mucho tiempo antes de volver a tener toda la
documentación recuperada.
Por si te sirve, te comento los pasos a dar:
1) instalar cygwin (http://www.cygwin.com/setup.exe). Añadir
c:\cygwin\bin al PATH
2) instalar pexports
(http://www.emmestech.com/software/cygwin/pexports-0.43/pexports-0.43.zip).
Descomprimirlo en c:\cygwin\bin
3) crear los archivos de importación "libpython24.a" y "libmscvr71.a".
Estos archivos son necesarios para el linkado. Abrir una terminal de
msdos y seguir estos pasos:
cd c:\windows\system32
pexports python24.dll > python24.def
dlltool -d python24.def -D python24.dll -l libpython24.a
move libpython24.a c:\Python24\libs
cd c:\Python24
pexports msvcr71.dll > msvcr71.def
dlltool -d msvcr71.def -D msvcr71.dll -l libmsvcr71.a
move libmsvcr71.a libs
Al usar el compilador de cygwin hay que definir la variable de entorno
CFLAGS=-mno-cygwin . Por ejemplo, para compilar el módulo syck yo hacía
lo siguiente desde la carpeta donde estaban descomprimidos los fuentes:
bash configure CFLAGS=-mno-cygwin
make
Para usar distutils hay que tener la precaución de tener que el python
de cygwin no se ejecute antes del de windows (se puede quitar el del
cygwin sin problemas para compilar). La ejecución sería así:
python setup.py build --compiler=mingw32 install
En cuanto al .Net SDK, hace falta configurar algunas variables del
entorno que vienen definidas en el fichero "sdkvars.bat". Por si os
sirve de álgo, el script con el que lanzaba el entorno .Net era éste:
@echo off
echo --
echo *** Initiating Microsoft .Net SDK... ***
echo --
title "Microsoft .Net SDK"
call "%ProgramFiles%\Microsoft.NET\SDK\v1.1\Bin\sdkvars.bat"
SET PATH=%PATH%;%ProgramFiles%\Nant\bin;%ProgramFiles%\boo\bin
chcp 1252
Como se ve, tenía instalado nant y boo. Nant es casi imprescindible si
váis a hacer desarrollos en .Net/mono . El último comando era para que
la terminal me pusiera los acentos correctamente.
Lamentablemente, no puedo dedicarme ahora a probar la compilación del
amara. Si tienes alguna consulta, ya sabes donde encontrarme.
Un saludo,
--
Chema Cortés (py en ch3m4.org)
"Proudly made on earth by generic humanoid carbon units"
Más información sobre la lista de distribución Python-es