我该如何重写setup.py默认使用的编译器(gcc)标志?

我知道setup.py使用了与用于构buildpython相同的CFLAGS。 我有一个C扩展我们的是segfaulting。 我需要在不使用 -O2 情况下构build它因为-O2正在优化某些值和代码,以便核心文件不足以解决问题。

我只需要修改setup.py,以便不使用-O2

我已经阅读distutils文档,特别是distutils.ccompilerdistutils.unixcompiler ,看看如何添加标志和库和包括,但不是如何修改默认的gcc标志。

具体来说,这是针对Python 2.5.1上的一个遗留产品,带有一些后端(Fedora 8,是的,我知道…)。 不,我不能改变操作系统或Python版本,我不能,没有很大的问题,重新编译python。 我只需要为其中一个环境是唯一的一个客户的客户build立一个C扩展。

  • 在运行setup.py之前,请预先CFLAGS="-O0"

     % CFLAGS="-O0" python ./setup.py 

    在编译时, -O0将被附加到CFLAGS ,因此将覆盖之前的-O2设置。

  • 另一种方法是在setup.py中将-O0添加到extra_compile_args中:

     moduleA = Extension('moduleA', ....., include_dirs = ['/usr/include', '/usr/local/include'], extra_compile_args = ["-O0"], ) 
  • 如果你想删除所有的默认标志,使用:

     % OPT="" python ./setup.py