【问题标题】:yocto: failing to find Python.h and cross compiling failsyocto:找不到 Python.h 并且交叉编译失败
【发布时间】:2018-03-24 04:30:39
【问题描述】:

我正在使用 yocto 的 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 文件夹被适当地查看,只是不在 sysroot 下(我的主机系统没有没有 /usr/lib/python2.7)

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

所以在我看来,我应该做的就是添加适当的 'sysroot' + usr/include/python2.7 作为包含搜索文件夹,它会很高兴地编译 - 但我不确定如何..

完整的编译日志在这里:http://paste.ubuntu.com/25725014/

【问题讨论】:

    标签: gcc compilation cross-compiling yocto openembedded


    【解决方案1】:

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

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

    【讨论】:

    • 您好罗斯,感谢您的回复。我将依赖项添加到 zbar 配置文件(paste.ubuntu.com/25751634
    • 虽然修改 DEPENDS 似乎没有帮助,但我只是在 zbar 的配置文件中直接添加了 CFLAGS += "-I${STAGING_INCDIR}/python2.7",然后它编译了 - 然而,在那之后我收到了一些抱怨 Files/directories were installed but not shipped in any package 的“QA 错误” ,并且指出的文件是/usr/lib/python2.7/dist-packages/zbar.la/usr/lib/python2.7/dist-packages/zbar.so(以及.debug 版本)..
    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多