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

2024-04-27 13:28:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道setup.py使用与构建python相同的CFLAGS。我有一个单独的C延伸,那就是断层。我需要在没有-O2的情况下构建它,因为-O2正在优化一些值和代码,因此核心文件不足以解决问题。

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

我已经阅读了distutils文档,特别是distutils.ccompilerdistutils.unixcompiler,并了解了如何添加标志、libs和include,而不是如何修改默认的gcc标志。

具体来说,这是针对Python2.5.1上的一个遗留产品,它有一堆后端端口(Fedora8,是的,我知道…)。不,我不能更改操作系统或python版本,如果没有大问题,我也不能重新编译python。我只需要为一个环境是唯一分段的客户构建一个一次性的C扩展。


Tags: 文件代码文档py核心标志setup情况
1条回答
网友
1楼 · 发布于 2024-04-27 13:28:47
  • 在运行setup.py之前,请预先准备CFLAGS="-O0"

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

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

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

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

    % OPT="" python ./setup.py
    

相关问题 更多 >