linux - 如何使用 Yocto 添加新库

标签 linux autotools xerces-c recipe yocto

我正在使用 Yocto,我只是想在我的项目中集成一个新的库。

我创建了一个名为“libxerces”的新配方,其中包含一个文件“libxerces-3.1.1.bb”。 bb 文件非常简单,因为它基于 autotools:

DESCRIPTION = "Xerces-c is a validating xml parser written in C++"
HOMEPAGE = "http://xerces.apache.org/xerces-c/"
PRIORITY = "optional"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"

PR = "r1"

SRC_URI = "http://mirror.bit.edu.cn/apache//xerces/c/3/sources/xerces-c-${PV}.tar.gz"

s="${WORKDIR}/xerces-c-${PV}"

inherit autotools pkgconfig

SRC_URI[md5sum] = "6a8ec45d83c8cfb1584c5a5345cb51ae"
SRC_URI[sha256sum] = "a42785f71e0b91d5fd273831c87410ce60a73ccfdd207de1b805d26d44968736"

PACKAGES =+ "${PN}-utils"

FILES_${PN} = "${libdir}/*.so"
FILES_${PN}-utils = "${bindir}/*"
FILES_${PN}-staticdev = "${libdir}/*.a"*

BBCLASSEXTEND += "native"

我使用 IMAGE_INSTALL += "libxerces"将 "libxerces"添加到我的 bb 图像中。然后,我尝试通过 bitbake my-image-test 构建我的图像,一切都正确完成,但 libxerces 返回错误,因为它无法安装。但是,我注意到 libxerces-dbg、libxerces-utils、libxerces-samples 在/tmp/work/deploy/ipk 下可见。我知道 libxml2 默认集成到 poky 层中,但我必须使用 xerces..

最佳答案

我解决了错误

ERROR: Unable to install packages.
Collected errors:
 * opkg_install_cmd: Cannot install package libxerces.

覆盖 PACKAGES 变量。

在你的情况下:

PACKAGES = "${PN} ${PN}-utils ${PN}-staticdev"

我认为这是因为 .so 文件默认转到 ${PN}-dev 包。

我希望有一个更聪明的解决方案,但现在我以这种方式修复。

关于linux - 如何使用 Yocto 添加新库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792597/

相关文章:

autotools - 可能是未定义的宏 : AC_MSG_ERROR

c - autotools:执行 “make check” 时不包含库

C++ Xerces-c - 如何判断节点是否为占位符

linux - 如何在 shell 脚本中给出输入列表?

linux - 使用 flock 锁定文件 X 时间

autotools - 使用 PKG_CHECK_MODULES 时,autoconf 生成的 Makefile 不传递库头的标志

c++ - 使用 xerces for c++ 调用 getDocument 时出现段错误

c++ - 使用 -icu 构建 xerces

linux - 在 Spark 中将 IP 地址设置为 spark.driver.host 而不是主机名?

linux - Android Studio 是否应该在 Linux 上使用 sudo 运行