shared-libraries - yocto 项目 - recipe-sysroot 中缺少依赖项
问题描述
可能所有 yocto 人都知道 yocto rocko 2.4+ 中更改了 sysrootfs 策略。所以我有以下问题:我尝试使用 makefile 为共享库制作配方。配方如下(我不声称它是完整的。我根本无法通过构建阶段):
#==================
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${THISDIR}/files/LICENSE;md5=5959e502cb44bafc53b2cc9400e3d4cd"
PR = "r0"
##### First try from my local repo and then we will use the big one
SRC_URI = "git:///home/w23698/projects/anybus/Generic;branch=anybus-lib-0.0.1"
SRCREV = "2fe4ce39a651d71f3f8de1c751dff2581de2c526"
S = "${WORKDIR}/git"
PACKAGES = "${PN} ${PN}-dev ${PN}-dbg"
#####The only dependency
RDEPENDS_${PN} = "libgpiod"
RDEPENDS_${PN}-dev = "libgpiod"
RDEPENDS_${PN}-dbg = "libgpiod"
do_compile() {
oe_runmake
}
do_install() {
install -d ${D}${libdir}
install -m 0644 ${PN}-m40 ${D}${libdir}
}
当它失败时让我惊讶的是:
ww.c:6:10: fatal error: gpiod.h: No such file or directory
| #include "gpiod.h"
| ^~~~~~~~~
| compilation terminated.
然后我注意到命令行是:
arm-poky-linux-gnueabi-gcc -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/<full path>/recipe-sysroot -L/usr/lib -g -Wall -fpic .....
我查看recipe-sysroot/usr/lib/
并发现了一组最小的库,而 libgpiod 不存在。头文件都没有包含在...
有什么建议么?
解决方案
你永远不会设置 DEPENDS=libgpiod。
您设置的 RDEPENDS取决于运行时,因此与编译时间无关。您可以删除它们,因为库链接依赖项将自动生成。
推荐阅读
- google-cloud-platform - 为什么 kompose up 产生“连接被拒绝”?
- php - Cpanel 在 paypal api 中找不到我的 bootsrap.php 文件(内置于 netbeans)
- c# - TargetFrameworkVersion 与 Xamarin
- php - 如何在 Laravel 中使用两个表创建自定义注册?
- python - 在 Python 中计算数组的“导数”
- angularjs - Angularjs - 插入表单内的下拉列表:如何在提交表单之前将项目添加到下拉列表中?
- php - 使用 PHP 和 AJAX 登录:不工作。接收失败的警报不正确的凭据 - 但是没有收到任何错误
- qt - 将 CSS 主题应用于已编译的 Qt 程序
- excel - Sub中的excel上的VBA宏运行时错误'5'
- elasticsearch - 是否有适用于 ElasticSeach 6.4.3 的应用程序客户端(类似于 DBvear)