如何从Cython设置文件中删除-pthread编译器标志[英] How to remove -pthread compiler flag from cython setup file

本文是小编为大家收集整理的关于如何从Cython设置文件中删除-pthread编译器标志的处理方法,想解了如何从Cython设置文件中删除-pthread编译器标志的问题怎么解决?如何从Cython设置文件中删除-pthread编译器标志问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

在Linux环境中,当我运行Cython的设置脚本时,我会得到

gcc -pthread -B /apps/.../compiler_compat -Wl,-sysroot=/ -Wsign-compare 
-DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/ap......  

对于我的情况,我想删除pthread选项.如何通过Cython设置文件进行操作?我看到有添加编译器标志的选项,但无需删除.我的设置文件:

from distutils.core import setup
from Cython.Build import cythonize

from distutils.extension import Extension

extensions = [Extension("foo",sources = ["foo.pyx"])]                                 

setup(ext_modules = cythonize(extensions))

推荐答案

正如@davidw指出的那样,对于许多选项,也有一个选项对其进行否定/覆盖它,而命令行" wins"上的最后一个选项.因此,例如,添加额外的编译选项-Os将覆盖默认设置-O2或-O3,因为-Os将在命令行上-O2

然而,-pthread没有这样的"合作伙伴",唯一的机会是防止其完全出现在命令行上.这样做的方法有些骇人听闻,但是这种骇客不是我们都使用python的原因吗?

distutils使用distutils.sysconfig查找正确的编译/链接标志.一种可能性是修改其功能,以便-pthread被过滤出来.

我选择


我不完全确定,没有-pthread构建并将结果模块加载到使用-pthread构建的Python Interpreter中是一个好主意 - 不确定它不会以某种微妙的方式破裂并按预期工作.

本文地址:https://www.itbaoku.cn/post/1793831.html