我该如何重写setup.py默认使用的编译器(gcc)标志?
我知道setup.py使用了与用于构buildpython相同的CFLAGS。 我有一个C扩展我们的是segfaulting。 我需要在不使用 -O2
情况下构build它,因为-O2
正在优化某些值和代码,以便核心文件不足以解决问题。
我只需要修改setup.py,以便不使用-O2
。
我已经阅读distutils文档,特别是distutils.ccompiler
和distutils.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