我正在用distutils交叉编译我的扩展(好吧,通过cffi.setsource,但它将这些参数直接传递给distutils。扩展),并且需要为 Python 标头提供备用路径。
SYSROOT_TARGET
是通往目标平台系统根的路径。
我已经在include_dirs中包含SYSROOT_TARGET+'/usr/include/python2.7/'
,它工作正常,因为它首先搜索该目录,但我对它打印的警告感到不安:
CC1:警告:包含位置"/usr/include/python2.7"对于交叉编译是不安全的 [-Wpoison-system-directory]
发生这种情况是因为它在-c
标志之前将-I/usr/include/python2.7
添加到 gcc 命令行。
是否有我可以设置的环境来修改或完全摆脱该参数?
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()
,然后自己编译。