Yocto:封闭的源库,包含用于库和标头的单独软件包

如何解决Yocto:封闭的源库,包含用于库和标头的单独软件包

我有自己的.so封闭源代码库并提供头文件。我的.so库文件应位于yocto映像内,但头文件应仅在其他项目编译期间使用。

这里是yocto收据:

SUMMARY = "foo library"
LICENSE = "CLOSED"
SECTION = "libs"
SRC_URI = "file://usr/lib/libfoo.so \
           file://usr/include/foo.h "
S = "${WORKDIR}"
inherit autotools pkgconfig
do_compile() {
}
do_install() {
        install -d ${D}/usr/lib
        install -m 0755 ${WORKDIR}/usr/lib/libfoo.so ${D}/usr/lib/libfoo.so.1
        ln -s /usr/lib/libfoo.so.1 ${D}/usr/lib/libfoo.so
        install -d ${D}/usr/include
        install -m 0644 ${WORKDIR}/usr/include/foo.h ${D}/usr/include/
}

FILES_${PN}-dev += "${includedir} "
FILES_${PN} += "/usr/lib/libfoo.so \
        /usr/lib/libfoo.so.1"
PROVIDES += "libfoo"

我希望$ {PN}软件包具有libfoo.so和libfoo.so.1,而$ {PN} -dev软件包只有一个头文件。但是yocto bitbake仅复制$ {PN}中的libfoo.so.1,而libfoo.so位于$ {PN} -dev数据包中。

您能帮我如何将文件移至$ {PN}包中吗?

解决方法

此行为是正确的。未版本化的.so文件安装在-dev软件包中,因为系统中的软件包应针对版本文件进行链接。

需要在映像中安装-dev软件包是非常罕见的,因此有效地,只有您的版本化的so文件才能创建它。

如您所见,标头位于-dev包中,因此除非将-dev包显式添加到映像中,否则不会将其添加到映像中。

由于头文件位于includedir中,该文件是用于其他配方(参见SYSROOT_DIRS)的sysroot的目录之一,因此在构建时,其他配方可以使用它。与您的库相同,安装在lib_dir中(也在上述变量中​​)。

因此,当前的行为是预期的。目前尚不清楚为什么还要在主程序包中也要使用非版本的符号链接。

如果出于某种原因这确实是您想要做的,则只需在食谱中添加以下内容:

 SOLIBS = ".so"
 FILES_SOLIBSDEV = ""

c.f。 https://wiki.yoctoproject.org/wiki/TipsAndTricks/Packaging_Prebuilt_Libraries#Non-versioned_Libraries

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?