2017-09-16 135 views
0

我正在尝试为MariaDB的C/C++连接器创建一个配方。Yocto Project没有正确安装文件

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 
} 
+0

它们不在图像上发运,因为图像中没有其他软件包对这些软件包有运行时依赖性。你是否真的确定图像中的某些东西需要这些文件?静态库和开发文件通常不是目标映像的一部分。 – jku

+0

那么'-dev'和'-staticdev'软件包不包含在我的映像中?我需要它们,因为我有一些源代码可以编译。没有他们,我得到错误。我如何将它们包含在最终图像中?我知道,这是不常见的 –

+0

你是否确实意味着你想在你的目标上编译源代码?我宁愿在我的编译机器上编译... – Anders

回答

2

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

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

EXTRA_IMAGE_FEATURES += "dev-pkgs tools-sdk" 

这将构建工具(gcc,make等)和所有-dev包添加到图像。有关更多详细信息,请参见the manual