2011-11-23 10 views
13

Estoy compilando algunas extensiones de cython en Linux y me di cuenta de que usa de manera predeterminada -O2 cuando compila desde el mecanismo de distutils. Me preguntaba si había una forma simple de cambiar eso a -O3.¿Cómo se sobrescriben las banderas de compilación predeterminadas para Cython cuando se compila con distutils?

He intentado utilizar extra_compile_args en los objetos de extensión, pero eso lleva a que tanto -O2 como -O3 se pasen como argumentos a gcc. Como que quiero jugar con otras opciones esotéricas de gcc y espero poder controlar el paso de compilación. Una pregunta obvia es "¿por qué no ejecuto cython my.pyx y compilo los resultados manualmente?". Me encantaría, es mi respuesta ... pero el ejecutable de cython en/usr/local/bin arroja un error DistributionNotFound: Cython == 0.12.1 cuando se ejecuta desde la línea de comandos. No me he dado cuenta de eso.

De todos modos, no estoy seguro de si es algo de cython, algo de distutils o algo del paquete apt roto. Simplemente agarré Cython del ubuntu 11.10 apt repo (y actualmente estoy usando ubuntu 11.10).

+0

Si tiene Cython instalado desde apt, no debería estar en '/ usr/local/bin'. ¿Has intentado ejecutar '/ usr/bin/cython' explícitamente? –

+0

Esa pregunta me vino a la mente ayer :) No encontré una respuesta limpia, appart para rehacer una extensión de compilador de plataforma cruzada ... – tito

Respuesta

2

larsmans comment was right - using/usr/bin/cython resuelve mi problema.

7

usando extra_compile_args = ["- O3"] en su setup.py, el "-O3" debería aparecer después de la opción -O2 sobrecargarlo. Compruebe el tamaño del objeto compartido (.so o .dll) para confirmarlo rápidamente.

Davide

Cuestiones relacionadas