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

C++ bitbake grpc交叉编译/配置失败,错误为c-ares::cares引用文件/usr/lib/libcares.so.2.2.0,c++,c,cmake,grpc,c-ares,C++,C,Cmake,Grpc,C Ares,在open-embedded中构建grpc时,我在查找c-ares依赖项方面遇到问题。在配置期间查找依赖项c-ares时,日志中的错误显示为- - - 问题似乎在于cmake如何配置c-ares的导入前缀,该前缀在文件-poky/build/tmp-glibc/sysroot/arm7/usr/lib/cmake/c-ares/c-ares-targets.cmake中配置如下。我相信它应该是进入目标暂存目录的路径 设置\u导入\u前缀/usr 有人能帮我找出这个问题吗?c-ares配方中需要配

在open-embedded中构建grpc时,我在查找c-ares依赖项方面遇到问题。在配置期间查找依赖项c-ares时,日志中的错误显示为-

-

-

问题似乎在于cmake如何配置c-ares的导入前缀,该前缀在文件-poky/build/tmp-glibc/sysroot/arm7/usr/lib/cmake/c-ares/c-ares-targets.cmake中配置如下。我相信它应该是进入目标暂存目录的路径

设置\u导入\u前缀/usr

有人能帮我找出这个问题吗?c-ares配方中需要配置什么才能获得正确的_IMPORT_前缀?? 非常感谢您的帮助。
谢谢

我今天在旧的daisy BitBake环境中构建新的gRPC时遇到了这个问题。我找到的解决方案是通过额外的_OECMAKE变量将.bbappend中更新的变量定义移植到cmake调用中

我选择了后者,因为我似乎只需要c战神使用它,并想限制我的影响。最后,我没有深入研究c-ares与其他gRPC依赖项(例如GFLAG)如何生成CMake导出目标文件之间的差异。我假设在各个项目的CMakeLists.txt文件中会以某种方式生成最终目标路径

diff-git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass 索引b18152a8ed..5203d8aca1 100644 --a/meta/classes/cmake.bbclass +++b/meta/classes/cmake.bbclass @@-108,15+108,15@@cmake\u do\u配置{ ${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.relpathd.getVar'BINDIR',True,d.getVar'prefix',True}\ +-DCMAKE_INSTALL_SBINDIR:PATH=${@os.PATH.relpathd.getVar'SBINDIR',True,d.getVar'prefix',True}\ +-DCMAKE_INSTALL_LIBEXECDIR:PATH=${@os.PATH.relpathd.getVar'LIBEXECDIR',True,d.getVar'prefix',True}\ -DCMAKE_INSTALL_SYSCONFDIR:PATH=${SYSCONFDIR}\ --DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${SHAREDSTATEDIR}\ +-DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=${@os.PATH.relpathd.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.relpathd.getVar'LIBDIR',True,d.getVar'prefix',True}\ +-DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.PATH.relpathd.getVar'INCLUDEDIR',True,d.getVar'prefix',True}\ +-DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.PATH.relpathd.getVar'datadir',True,d.getVar'prefix',True}\ -DCMAKE\u INSTALL\u SO\u NO\u EXE=0\ -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/TOOLCHAIN.cmake\ -DCMAKE\u VERBOSE\u MAKEFILE=1\
这让我痛苦了一段时间。:-有人能在这方面帮助我吗?你能解决这个问题吗?我可能遇到了同样的问题,但我也不能解决。嗨,还没有。我还不能解决这个问题。:-非常感谢分享这一点。我的问题似乎已经解决了。我采取了与你相同的方法来限制我的工作冲击
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.