【发布时间】:2020-07-27 06:14:06
【问题描述】:
我正在尝试编译一个简单的小 hello world 示例来感受 Cython。它可以工作,但是编译中到处都是我不想要的标志。按照示例here,我能够清除大部分不需要的标志,但尽管我尽最大努力控制环境变量,但仍有一些标志仍然存在。链接问题中的最后一条评论表明额外的标志可能由供应商烘焙到编译器中,但我已经通过使用几个不同的编译器验证了这不太可能,所有这些编译器都默认使用相同的额外标志。
我对 setup.py 的调用如下所示:
CC="gcc" CXX="g++" OPT="" CFLAGS="-O3 -D_GNU_SOURCE" BASECFLAGS="" LDFLAGS="" CCSHARED="" LDSHARED="gcc -shared" PY_CORE_FLAGS="" PY_CFLAGS="" AR="" ARFLAGS="" CPPFLAGS="" CPP="" SHLIB_SUFFIX="" python3 setup.py build_ext --inplace
setup.py 很简单:
from setuptools import Extension, setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize([Extension("hellotest", ["hellotest.pyx"])], language_level="3")
)
最后是编译过程中 gcc 的输出,不需要的标志括在方括号中:
gcc [-DNDEBUG -g -fwrapv -O2 -Wall] -O3 -D_GNU_SOURCE -fPIC -I./ -I. -I/usr/include/python3.6m -c hellotest.c -o build/temp.linux-x86_64-3.6/hellotest.o
gcc [-DNDEBUG -g -fwrapv -O2 -Wall] -O3 -D_GNU_SOURCE -fPIC -I./ -I. -I/usr/include/python3.6m -c ./funcs.c -o build/temp.linux-x86_64-3.6/./funcs.o
gcc -shared -O3 -D_GNU_SOURCE build/temp.linux-x86_64-3.6/hellotest.o build/temp.linux-x86_64-3.6/./funcs.o -o build/lib.linux-x86_64-3.6/hellotest.cpython-36m-x86_64-linux-gnu.so
有没有人知道他们在哪里找到了编译器选项?
【问题讨论】:
-
我添加了一个“setuptools”,因为我很确定这些标志是由 setuptools 添加的。我不知道确切的位置,但希望添加标签能将问题摆在这样做的人面前。
标签: c python-3.x cython setuptools setup.py