首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >bitbake grpc交叉编译/配置失败,出现错误c-ares::cares引用文件/usr/lib/libcares.so.2.2.0

bitbake grpc交叉编译/配置失败,出现错误c-ares::cares引用文件/usr/lib/libcares.so.2.2.0
EN

Stack Overflow用户
提问于 2018-07-19 01:21:22
回答 1查看 684关注 0票数 0

在开放嵌入的grpc中构建grpc时,我遇到了查找c-are依赖关系的问题。在配置过程中查找c-are依赖关系时,日志中的错误显示为-

--

代码语言:javascript
复制
Found ZLIB: ....../poky/build/tmp-glibc/sysroots/arm7/usr/lib/libz.so (found version "1.2.8")
CMake Error at ....../poky/build/tmp-glibc/sysroots/arm7/usr/lib/cmake/c-ares/c-ares-targets.cmake:70 (message):
   The imported target "c-ares::cares" references the file
      "/usr/lib/libcares.so.2.2.0"

but this file does not exist.  Possible reasons include:

   * The file was deleted, renamed, or moved to another location.

   * An install or uninstall procedure did not complete successfully.

   * The installation package was faulty and contained

    "/home/...../poky/build/tmp-glibc/sysroots/arm7/usr/lib/cmake/c-ares/c-ares-targets.cmake"
   but not all the files it references.

--

问题似乎是cmake如何配置c-are的导入前缀,该前缀在文件- poky/build/tmp-glibc/sysroots/arm7/usr/lib/cmake/c-ares/c-ares-targets.cmake.中的配置如下我认为它应该是进入目标分段目录的路径

set(_IMPORT_PREFIX "/usr")

有人能帮我找出这里的问题吗?为了获得正确的_IMPORT_PREFIX,需要在c-are配方中配置什么??任何帮助都是非常感谢的。谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-05-31 07:14:41

今天,当我在一个旧的(菊花式) BitBake环境中构建一个新的gRPC时,我遇到了这个问题。我找到的解决方案要么是向后移植this upstream change to the cmake.bbclass,要么是通过EXTRA_OECMAKE变量将.bbappend中更新的变量定义修改为cmake调用。

我选择了后者,因为我似乎只需要c-ares,并希望限制我的影响。我并没有深入研究c-are和其他gRPC依赖项(例如gflag)如何生成CMake导出目标文件之间的区别。我假设有某种方法可以在各个项目的CMakeLists.txt文件中生成最终目标路径。

代码语言:javascript
复制
diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index b18152a8ed..5203d8aca1 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -108,15 +108,15 @@ cmake_do_configure() {
      ${OECMAKE_SITEFILE} \
      ${OECMAKE_SOURCEPATH} \
      -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
-     -DCMAKE_INSTALL_BINDIR:PATH=${bindir} \
-     -DCMAKE_INSTALL_SBINDIR:PATH=${sbindir} \
-     -DCMAKE_INSTALL_LIBEXECDIR:PATH=${libexecdir} \
+     -DCMAKE_INSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('bindir', True), d.getVar('prefix', True))} \
+     -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir', True), d.getVar('prefix', True))} \
+     -DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.path.relpath(d.getVar('libexecdir', True), d.getVar('prefix', True))} \
      -DCMAKE_INSTALL_SYSCONFDIR:PATH=${sysconfdir} \
-     -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${sharedstatedir} \
+     -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.path.relpath(d.getVar('sharedstatedir', True), d.  getVar('prefix', True))} \
      -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=${localstatedir} \
-     -DCMAKE_INSTALL_LIBDIR:PATH=${libdir} \
-     -DCMAKE_INSTALL_INCLUDEDIR:PATH=${includedir} \
-     -DCMAKE_INSTALL_DATAROOTDIR:PATH=${datadir} \
+     -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir', True), d.getVar('prefix', True))} \
+     -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir', True), d.getVar('prefix', True))} \
+     -DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir', True), d.getVar('prefix', True))} \
      -DCMAKE_INSTALL_SO_NO_EXE=0 \
      -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
      -DCMAKE_VERBOSE_MAKEFILE=1 \
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51407735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档