如何防止 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()
,然后自己编译它。
我正在使用 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()
,然后自己编译它。