yocto:找不到Python.h并且交叉编译失败

时间:2017-10-12 09:34:35

标签: gcc compilation cross-compiling yocto openembedded

我正在使用yokto的poky版本,并在我的yocto构建中添加zbar库。我在http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/zbar/zbar_0.10.bb找到了一个现成的食谱并对其进行了修改以便与poky合作。我用imagemagick工作得很好,编译的zbarimg在目标板上工作。

修改后的食谱可在此处找到:http://paste.ubuntu.com/25725000/

当我继续为构建配置python支持(--with-python)时,一些依赖性问题悄悄上升,我无法解决。

似乎编译器找不到合适的标题,因为包含路径不包含适当的文件夹。

完整的编译器命令是: arm-poky-linux-gnueabi-libtool: compile: arm-poky-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/home/jlumme/imx_build/build-x11-pico-imx6ul/tmp/sysroots/pico-imx6ul-emmc -DHAVE_CONFIG_H -I. -I/home/jlumme/imx_build/build-x11-pico-imx6ul/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/zbar/0.10-r0/zbar-0.10 -I./include -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -I/usr/include/python2.7 -I/usr/include/python2.7 -I/home/jlumme/imx_build/build-x11-pico-imx6ul/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/zbar/0.10-r0/zbar-0.10/include -Wall -Wno-parentheses -O2 -pipe -g -feliminate-unused-debug-types -c /home/jlumme/imx_build/build-x11-pico-imx6ul/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/zbar/0.10-r0/zbar-0.10/python/symbol.c -fPIC -DPIC -o python/.libs/python_zbar_la-symbol.o

您可以看到sysroot变量已设置,并且它看起来像正确的位置,并且有/usr/include/python2.7,但它指向主机系统包含路径。

编译器发出警告:cc1: warning: include location "/usr/include/python2.7" is unsafe for cross-compilation [-Wpoison-system-directories]我不知道它为什么会发生,但似乎python2.7文件夹被恰当地看了,而不是{{1} (我的主机系统没有/usr/lib/python2.7)

如果我转到sysroot include(sysroot)文件夹,我可以看到它有一个子文件夹/home/jlumme/imx_build/build-x11-pico-imx6ul/tmp/sysroots/pico-imx6ul-emmc/usr/include/。如果在这个usr / include文件夹下我添加了符号链接python2.7,编译器会抱怨找不到的下一个头文件。

所以对我而言,我应该做的就是添加适当的Python.h -> python2.7/Python.h + 'sysroot'作为包含搜索文件夹,它会愉快地编译 - 但我不确定如何...

完整的编译日志可在此处获取:http://paste.ubuntu.com/25725014/

1 个答案:

答案 0 :(得分:0)

这是zbar配置脚本中的一个错误。

尝试继承pythonnative,以便configure脚本可以运行兼容的Python来了解要查找的位置。