2016-05-01 373 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}"