Bitbake无法找到其他配方的头文件

时间:2019-02-16 11:46:35

标签: header-files yocto bitbake

我有一个取决于星号的包装。由于它取决于星号,因此我在bitbake文件中包括了DEPENDS =“ asterisk”。但是我的源包无法找到asterisk包中可用的“ asterisk.h”。我在此命令[do_populate_sysroot]中尝试了“ bitbake asterisk -c listtasks”可以使用,但是bitbake希望asterisk.h从此处驻留,以便可以从那里获取。 以下是我在编译食谱时遇到的日志错误。

checking for string.h... (cached) yes
 checking for sys/time.h... (cached) yes
 checking for termios.h... (cached) yes
 checking whether asterisk.h in ../include... no
 checking whether asterisk.h in /usr/include... no
 checking whether asterisk.h in /usr/local/include... no
 checking whether asterisk.h in /opt/local/include... no
 configure: error: Can't find "asterisk.h"

注意:以下config.log文件可能会提供更多信息。

1 个答案:

答案 0 :(得分:0)

我们可以使用提供者和用户来说明这种情况,包(配方)提供了供另一个包(配方)使用的头文件,即提供者,包(配方)使用了另一个包(配方)中的头文件)就是用户。

首先,我们更改提供者的配方(myprovider.bb)以导出头文件-myapi.h,

fun uploadImage(imagePath : String){
   uploadToServer(imagePath)
        .subscribe()
        .addTo(disposal)   
}

override onCleared(){
   disposal.dispose()
}

第二,我们更改用户的配方(myuser.bb)以引用头文件-myapi.h

...
do_install() {

    install -d ${D}/${bindir}
    install -m 755 ${B}/hello_provider ${D}/${bindir}

    install -d ${D}${libdir}/lib_myprovider/
    install -m 0755 ${WORKDIR}/myapi.h ${STAGING_DIR_TARGET}${libdir}/lib_myprovider/
}
...

最后,重建myprovider.bb和myuser.bb食谱,它应该可以工作。