2016-05-01 245 views
1

我已经将一个基于makefile的项目集成到yocto中的自定义食谱中,但出现了一个问题:do_rootfs失败。do_rootfs失败yocto build

请查找图书馆来源,我尝试这个库集成到OE核心:http://libiec61850.com/libiec61850/wp-content/uploads/2016/02/libiec61850-0.9.0.2.tgz

的.bb文件:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" FILESEXTRAPATHS_prepend := "${THISDIR}/files:" 

DESCRIPTION = "simple Hello World program" PR = "r0" LICENSE = "CLOSED" 

S = "${WORKDIR}" 

DEPEND = "libpthread-stubs libiec61883 libraw1394" SRC_URI += " \ 
     file://config \ 
     file://demos \ 
     file://dotnet \ 
     file://examples \ 
     file://make  \ 
     file://Makefile \ 
     file://src  \ 
     file://third_party \ 
     file://tools \ 
     " 

EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'BUILDDIR=${S}'" 

do_compile() { 
      oe_runmake ${S}/make } do_install() { 
     oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \ 
          INCLUDEDIR=${includedir} 
     install -d ${D}${includedir}/libiec61850/ 
     install -d ${D}${localedir} 
     for f in ${S}/.install/include/*.h; do 
       install -m 0644 $f ${D}${includedir}/libiec61850/ 
     done 
     install -m 0644 ${S}/.install/lib/* ${D}${localedir}/ } 

错误的样子:

Configuring volatile-binds. 
Configuring libxcb-xkb1. 
Configuring libxkbcommon. 
Configuring libidn11. 
Configuring libattr1. 
Configuring libacl1. 
Configuring libz1. 
Configuring libkmod2. 
Configuring udev. 
Configuring kmod. 
Configuring iptables. 
Configuring libcap2. 
Configuring liblzma5. 
Configuring util-linux-fsck. 
Configuring systemd-compat-units. 
Configuring systemd-serialgetty. 
Configuring angstrom-version. 
Configuring udev-hwdb. 
Configuring libe2p2. 
Configuring libext2fs2. 
Configuring e2fsprogs-e2fsck. 
Configuring systemd. 
Configuring kernel-image-4.1.15-v2.5b3+ge6d111c. 
Configuring angstrom-feed-configs. 
Configuring netbase. 
Configuring packagegroup-core-boot. 
Collected errors: 
* opkg_install_cmd: Cannot install package libiec61850. 

ERROR: Function failed: do_rootfs 
ERROR: Logfile of failure stored in: /media/kanji/edb1a7c2-288e-488e-abce-24d478f6cd46/workspace/kanji/oe-core/build/out-glibc/work/colibri_vf-angstrom-linux-gnueabi/core-image-minimal/1.0-r0/temp/log.do_rootfs.8560 
ERROR: Task 7 (/media/kanji/edb1a7c2-288e-488e-abce-24d478f6cd46/workspace/kanji/oe-core/build/../stuff/openembedded-core/meta/recipes-core/images/core-image-minimal.bb, do_rootfs) failed with exit code '1' 
NOTE: Tasks Summary: Attempted 1865 tasks of which 1864 didn't need to be rerun and 1 failed. 
NOTE: Writing buildhistory 
No currently running tasks (1864 of 1866) 

Summary: 1 task failed: 
/media/kanji/edb1a7c2-288e-488e-abce-24d478f6cd46/workspace/kanji/oe-core/build/../stuff/openembedded-core/meta/recipes-core/images/core-image-minimal.bb, do_rootfs 
Summary: There was 1 WARNING message shown. 
Summary: There were 2 ERROR messages shown, returning a non-zero exit code. 
+0

谢谢你#艾蒂恩:) –

回答

3

很难在这里提供一个确切的答案,因为有几件事情可能是错误的或至少是有问题的。所以让我们反向工作:

Collected errors: * opkg_install_cmd: Cannot install package libiec61850. 

这意味着,在安装的软件包列表,当它找不到一个文字libiec61850文件。我假设你创建了libiec61850_0.9.0.2.bb,这就是上面代表的bb文件的内容。除了我认为由于复制/粘贴到此处的空白问题,它看起来没问题。但检查出log.do_compile和log.do_install为了更容易,看看是否有任何问题,建筑只是包装,这样做:

bitbake -c cleansstate libiec61850 
bitbake libiec61850 

,看看它是否抱怨空包装。

接下来,您可能会遇到配方名称 - >二进制输出重命名的问题。做:

ls tmp/deploy/ipk/*/*iec61850* 

然后看看结果是什么。如果您想检查特定的IPK文件,他们只是“的内容AR”存档,您可以提取它们:

mkdir temp 
cd temp 
ar -x ../foo.ipk 
tar zxf data.tar.gz 
+0

谢谢你汤姆:)我也试图附加日志文件,但我无法搜索附件选项中的帖子,我昨天解决了这个问题。 –

1

我发现上面提到的问题的解决方案:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 
    FILESEXTRAPATHS_prepend := "${THISDIR}/files:" 

    DESCRIPTION = "libiec61850 library support added" 
    PR = "r0" 
    LICENSE = "CLOSED" 

    S = "${WORKDIR}" 


    SRC_URI += " \ 
     file://config \ 
     file://demos \ 
     file://dotnet \ 
     file://examples \ 
     file://make \ 
     file://Makefile \ 
     file://src \ 
     file://third_party \ 
     file://tools \ 
     " 

    DEPEND = "libpthread-stubs" 
    RDEPENDS_${PN} += " \ 
      update-alternatives-opkg \ 
      opkg-arch-config \ 
      run-postinsts \ 
      " 

    EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'BUILDDIR=${S}'" 

    do_compile() { 
       oe_runmake ${S}/make 
    } 

    do_install() { 
      oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \ 
           INCLUDEDIR=${includedir} 
      install -d ${D}${includedir}/libiec61850/ 
     install -d ${D}${libdir}/ 
      for f in ${S}/.install/include/*.h; do 
        install -m 0644 $f ${D}${includedir}/libiec61850/ 
      done 
     install -m 0644 ${S}/.install/lib/* ${D}${libdir}/ 
    } 


    FILES_${PN} += "${includedir}/libiec61850/* ${libdir}/*" 
    PACKAGES = "${PN}"