我正在使用distutils交叉编译我的扩展(好吧,通过cffi.setsource,但是它将these params直接传递给distutils.Extension),并且需要为Python头提供备用路径。
SYSROOT_TARGET
是我的目标平台sysroot的路径。
我在include_dirs中包含了SYSROOT_TARGET+'/usr/include/python2.7/'
,工作正常,因为它首先搜索了dir,但是我对它打印的警告感到不安:
cc1:警告:包含位置“/usr/include/python2.7”对于交叉编译是不安全的[-Wpoison-system-directories]
这是因为它将-I/usr/include/python2.7
添加到-c
标志之前的gcc命令行。
是否有一个envvar我可以设置完全修改或摆脱该论点?
os.environ['PYTHONXCPREFIX'] = SYSROOT_TARGET+'/usr'
不会改变任何内容。
我知道它确实需要考虑envvars,因为我将编译器设置为工具链中的编译器。
os.environ['CC'] = SYSROOT + '/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc'
要清楚,像这样的建筑工作得很好(现在 ...),但我宁愿不要像我那样毒掉我的包括。
答案 0 :(得分:0)
我最终使用ffibuilder.emit_c_code()
代替ffibuilder.compile()
,然后自行编译。