如何使用Yocto添加新库

时间:2015-03-01 10:40:34

标签: 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"

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

3 个答案:

答案 0 :(得分:3)

我解决了错误

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

覆盖PACKAGES变量。

在你的情况下:

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

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

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

答案 1 :(得分:1)

如果要构建库并且库提供静态链接,则可以控制哪些静态库文件(* .a文件)包含在构建的库中。

meta / conf / bitbake.conf配置文件中的PACKAGES和FILES_ *变量定义了如何打包do_install任务安装的文件。默认情况下,PACKAGES变量包含$ {PN} -staticdev,它代表所有静态库文件。

答案 2 :(得分:1)

FILES_${PN}-staticdev =""    # for static libs

FILES_${PN}-dev =""          # for dynamic libs

FILES_${PN}-dbg =""          # for debug options

您需要在食谱上添加以上行