Как добавить новую библиотеку с помощью Yocto

Я использую Yocto и просто хочу интегрировать новую библиотеку в свой проект.

Я создаю новый рецепт с именем «libxerces», который содержит файл «libxerces-3.1.1.bb». Файл bb довольно прост, потому что он основан на автоинструментах:

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" в свой образ bb, используя IMAGE_INSTALL + = "libxerces". Затем я пытаюсь создать свой образ с помощью bitbake my-image-test, и все делается правильно, но libxerces возвращает ошибку, потому что не может быть установлен. Howerver, отмечу, что libxerces-dbg, libxerces-utils, libxerces-samples видны в / tmp / work / deploy / ipk. Я знаю, что libxml2 по умолчанию интегрирован в poky layer, но мне приходится использовать xerces ..


person ogs    schedule 01.03.2015    source источник


Ответы (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.

Я надеюсь, что есть более умное решение, но пока я исправил таким образом.

person user976900    schedule 29.04.2015
comment
Да, я сделал то же самое. Я бы опубликовал это, но библиотека слишком велика для моей доски. Я сейчас использую libxml2 :) - person ogs; 29.04.2015

Если вы создаете библиотеку и она предлагает статическое связывание, вы можете контролировать, какие файлы статической библиотеки (файлы * .a) будут включены во встроенную библиотеку.

Переменные PACKAGES и FILES_ * в файле конфигурации meta / conf / bitbake.conf определяют способ упаковки файлов, установленных задачей do_install. По умолчанию переменная PACKAGES включает $ {PN} -staticdev, который представляет все файлы статической библиотеки.

person user1993    schedule 01.03.2015
comment
Да, переменная PACKAGES определяется как PACKAGES = $ {PN} -dbg $ {PN} $ {PN} -doc $ {PN} -dev $ {PN} -static $ {PN} -locale в / meta / conf Файл конфигурации /bitbake.conf. Нужно ли мне включать в рецепт что-то вроде PACKAGES + = $ {PN} -utils FILES _ $ {PN} -staticdev + = $ {libdir} / * a? - person ogs; 01.03.2015

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

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

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

вам нужно добавить строку выше в свой рецепт

person yoctotutor.com    schedule 06.04.2017