当前位置: 首页 > 面试题库 >

如何覆盖默认情况下setup.py使用的编译器(gcc)标志?

鲁霄
2023-03-14
问题内容

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

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

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

具体来说,这是针对Python 2.5.1上的旧产品,带有大量反向端口(Fedora
8,是的,我知道…)。不,我无法更改OS或python版本,并且在没有大问题的情况下也无法重新编译python。我只需要为一位环境唯一的客户建立一个C扩展。


问题答案:
  • 前面加上CFLAGS="-O0"之前运行setup.py
    % CFLAGS="-O0" python ./setup.py
    

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

  • 另一种方法是添加-O0extra_compile_argssetup.py

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

    % OPT="" python ./setup.py
    


 类似资料:
  • 安装应用程序时,如何默认启用屏幕覆盖权限。 现在我面临一些问题,当捕获图像询问运行时权限时,一些设备不允许它打开屏幕覆盖设置对话框的权限。在用户看来,他们不知道为什么对话框显示以及他们做了什么。 当打开覆盖设置屏幕时,一些应用程序会自动启用屏幕覆盖权限。 下面我使用代码。 此代码直接打开覆盖设置屏幕。所有应用程序的显示列表。 我的要求是显示权限特定的应用程序或启用覆盖权限而无需用户交互。 做需要.

  • 问题内容: 我有一个模板与此: Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。 我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。 有没有一种方法可以更改/覆盖默认的Django翻译? 谢谢。 问题答案: 最简单的方法是收集在django.contrib.admin语言环境文件夹中找到的.po文件,然后重新编

  • 问题内容: 我已经在已经具有gcc / g -4.4的ubuntu 11.04上安装了gcc-3.3 / g -3.3。所以在我的系统中gcc-3.3和4.4都可用。我可以根据需要调用两个编译器。如果我只是调用命令,那么将调用gcc-4.4。要调用gcc-3.3,我必须使用命令。 如何将默认编译器更改为gcc-3.3?当我执行命令时,它应该调用gcc-3.3而不是gcc-4.4。 另外,如何将ma

  • 我有一个RESTAPI,我不想强迫客户端发送请求参数。我有将近400个api方法,我不想将所有参数设置为“required=false” 我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的“required”属性的默认值设置为“false”。 有什么方法可以覆盖它吗?如果我不能或这不是最佳实践,有什么方法可以解决上述问题。

  • 问题内容: 我正在尝试使用seaborn,因为它具有distplot功能。但是我更喜欢默认的matplotlib设置。导入seaborn时,它会自动更改图形的外观。 如何在不改变地块外观的情况下使用seaborn函数? 问题答案: 0.8版(2017年7月)更改了此行为。来自https://seaborn.pydata.org/whatsnew.html#v0-8-0-july-2017: 导入s

  • 我实现了一个在另一个堆栈溢出post上找到的方法,允许使用jQuery展开和折叠表行。该方法很简单,工作正常,但我遇到了缺省情况下扩展行的问题。我如何使这些在页面加载时显示为折叠的,以便用户可以决定展开哪些? 作为一个附带说明,有没有什么方法使折叠/展开看起来更平滑,而不是只是瞬间打开或关闭? 谢谢!