如何防止 distutils 添加 -I/usr/include/python2.7 到 gcc 命令行? (或将其更改为其他内容)

How do I prevent distutils from adding -I/usr/include/python2.7 to the gcc command line? (or change it to something else)

我正在使用 distutils 交叉编译我的扩展(好吧,通过 cffi.setsource,但它将 these params 直接传递给 distutils.Extension),并且需要为 Python headers.

SYSROOT_TARGET 是我的目标平台的 sysroot 的路径。

我在 include_dirs 中包含 SYSROOT_TARGET+'/usr/include/python2.7/' 工作正常 因为它首先搜索那个目录,但我对它打印的这个警告感到不安:

cc1: warning: include location "/usr/include/python2.7" is unsafe for cross-compilation [-Wpoison-system-directories]

发生这种情况是因为它在 -c 标志之前将 -I/usr/include/python2.7 添加到 gcc 命令行。

是否有我可以设置的 envvar 来修改或完全删除该参数?

os.environ['PYTHONXCPREFIX'] = SYSROOT_TARGET+'/usr' 没有任何改变。

我知道它确实考虑了 envvars,因为这就是我将编译器设置为工具链中的编译器的方式。

os.environ['CC'] = SYSROOT + '/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc'

需要说明的是,像这样构建工作正常(目前...),但我不想那样毒化我的包含目录。

我最终使用 ffibuilder.emit_c_code() 而不是 ffibuilder.compile(),然后自己编译它。