【问题标题】:Yocto Project not install files properlyYocto Project 未正确安装文件
【发布时间】:2017-09-17 23:53:58
【问题描述】:

我正在尝试为 MariaDB 的 C/C++ 连接器创建一个配方。

Bitbake 可以正常工作,没有错误或警告,但如果我检查了图像中的文件,则缺少两个:

  • libmariadbclient.a
  • libmariadb.so

两者都有不同的包(-dev 和 -staticdev),但无论出于何种原因,都没有发送到我的镜像中。

有人有解决办法吗?

配方如下:

 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
                file://win/packaging     /license.rtf;md5=0b6c50a153e2fca0364c97805d74ba50 \
                file://cmake/COPYING-CMAKE-SCRIPTS;md5=54c7042be62e169199200bc6477f04d1"

SRC_URI = "http://mirror2.hs-esslingen.de/mariadb//connector-c-3.0.2/mariadb-connector-c-3.0.2-src.tar.gz;name=source"

SRC_URI[source.md5sum] = "2eb5ba004ac105eebb538ead352c0c78"
SRC_URI[source.md256sum] = "518d14b8d77838370767d73f9bf1674f46232e1a2a34d4195bd38f52a3033758"

S = "${WORKDIR}/mariadb-connector-c-3.0.2-src"

DEPENDS = "zlib openssl gnutls krb5 curl"

PACKAGES =+"${PN}-include"

FILES_${PN}+="${libdir}/mariadb/libmariadb.so.3 \
    ${libdir}/mariadb/plugin/dialog.so \
    ${libdir}/mariadb/plugin/mysql_clear_password.so \
    ${libdir}/mariadb/plugin/remote_io.so \
    ${libdir}/mariadb/plugin/auth_gssapi_client.so \
    ${bindir}/mariadb_config"

FILES_${PN}-dev+="${libdir}/mariadb/libmariadb.so"

FILES_${PN}-staticdev+="${libdir}/mariadb/libmariadbclient.a"

FILES_${PN}-include+="${includedir}/mariadb/mariadb_com.h \
    ${includedir}/mariadb/mysql.h \
    ${includedir}/mariadb/mariadb_stmt.h \
    ${includedir}/mariadb/ma_pvio.h \
    ${includedir}/mariadb/ma_tls.h \
    ${includedir}/mariadb/mariadb_version.h \
    ${includedir}/mariadb/ma_list.h \
    ${includedir}/mariadb/errmsg.h \
    ${includedir}/mariadb/mariadb_dyncol.h \
    ${includedir}/mariadb/mariadb_ctype.h \
    ${includedir}/mariadb/mysqld_error.h \
    ${includedir}/mariadb/mysql/client_plugin.h \
    ${includedir}/mariadb/mysql/plugin_auth_common.h \
    ${includedir}/mariadb/mysql/plugin_auth.h \
    ${includedir}/mariadb/mariadb/ma_io.h "

RDEPENDS_${PN}+="${PN}-include"

inherit cmake

do_compile() {
    make
}

【问题讨论】:

  • 它们未在您的映像中提供,因为您的映像中没有其他包对这些包具有运行时依赖关系。您真的确定图像中的某些内容需要这些文件吗?静态库和开发文件通常不是目标图像的一部分。
  • 所以-dev-staticdev 包不包含在我的图像中?我需要它们,因为我有一些源代码要编译。没有他们我得到了错误。如何将它们包含在我的最终图像中?我知道,这并不常见
  • 您真的是想在目标上上编译您的源代码吗?我更喜欢在我的构建机器上编译...

标签: mariadb yocto bitbake openembedded


【解决方案1】:

只添加一个特定的包到图像可以通过例如完成。 IMAGE_INSTALL_append = " mariadb-dev" 在您的 local.conf(或图像配方)中。听起来你想在设备上编译一些东西,所以这不太可能做你想做的事(你仍然会缺少所有的开发工具和你需要的所有其他 -dev 包)。

我真的不建议在图像上进行开发(为什么不为您的应用程序编写一个配方并让 Yocto 来处理编译和安装?)但是如果您想这样做,在 local.conf 中添加它应该可以工作:

EXTRA_IMAGE_FEATURES += "dev-pkgs tools-sdk"

这会将构建工具(gcc、make 等)和所有 -dev 包添加到映像中。详情请见the manual

【讨论】:

    猜你喜欢
    • 2020-09-30
    • 2018-11-29
    • 1970-01-01
    • 2021-09-02
    • 2020-02-08
    • 2019-10-29
    • 1970-01-01
    • 2016-07-21
    • 2021-05-30
    相关资源
    最近更新 更多