2015-03-01 2 views
0

Я использую Yocto, и я просто хотел бы интегрировать новую библиотеку в свой проект.Как добавить новую библиотеку с помощью Yocto

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

ответ

2

Я решил ошибку

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

переопределение пакеты переменной.

В вашем случае:

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

Я думаю, что это потому, что файлы .so переходит в $ {PN} -dev пакет по умолчанию.

Надеюсь, что есть более разумное решение, но на данный момент я исправил это.

+0

Да, я сделал то же самое. Я бы разместил это, но библиотека была большой для моей доски. Я использую libxml2 сейчас :) – ogs

0

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

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

+0

Да, переменная ПАКЕТЫ определяются как ПАКЕТЫ = «$ { PN} -dbg $ {PN} $ {PN} -doc $ {PN} -dev $ {PN} -статический $ {PN} -locale "в файл конфигурации /meta/conf/bitbake.conf. Нужно ли включать в рецепт что-то вроде PACKAGES + = "$ {PN} -utils" FILES _ $ {PN} -staticdev + = "$ {libdir}/* a"? – ogs

0

FILES_{PN}-staticdev ="" # для статического LIBS

FILES_{PN}-dev ="" # для динамического LIBS

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

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

Смежные вопросы