我怎样才能覆盖setup.py默认使用的编译器(gcc)标志?

Way*_*ker 50 python gcc setup.py

我知道setup.py使用与构建python相同的CFLAGS.我有一个我们的C扩展,即segfaulting.我需要构建它而不是 -O2因为-O2优化了一些值和代码,因此核心文件不足以解决问题.

我只需要修改setup.py,这样-O2就不用了.

我读过的distutils文件,尤其是distutils.ccompilerdistutils.unixcompiler,看看如何添加标记和库,包括,但不知道如何修改默认的gcc标志.

具体来说,这是针对Python 2.5.1上的遗留产品,带有一堆反向端口(Fedora 8,是的,我知道......).不,我无法更改操作系统或python版本,我不能,没有很大的问题,重新编译python.我只需要为一个客户构建一个C扩展,其中一个客户的环境是唯一的一个segfaulting.

cls*_*ung 68

  • 当我使用上述设置运行时,它显示 CFlaGS、-O2 和 -O0。它并没有覆盖它 (4认同)
  • @Sagar 对于 gcc 和 clang 等编译器,后面的标志优先,因此如果“-O0”出现在命令行上“-O2”之后,则“-O0”将覆盖它。 (4认同)

Ada*_*aun 8

当我需要完全删除标志(-pipe)以便我可以在低内存系统上编译 SciPy 时,我遇到了这个问题。我发现,作为一种 hack,我可以通过编辑 /usr/lib/pythonN.N/_sysconfigdata.py 来删除不需要的标志,以删除该标志的每个实例,其中 NN 是你的 Python 版本。有很多重复项,我不确定 setup.py 实际使用了哪些。

  • 这解决了问题...只需编辑 CFLAGS 条目 (2认同)