【问题标题】:CMake not finding package that is clearly thereCMake没有找到明显存在的包
【发布时间】:2020-11-24 13:51:39
【问题描述】:

我正在尝试通过 qtcreator 中的 cmake 构建项目,但在外部包依赖项方面遇到了问题。 有几个包它找不到,但我将符号链接添加到实际文件位置到 cmake 正在查找的目录中,之后它们运行良好。 但是,这个库 libopencv_viz.so.3.2.0 不与我合作。我添加了符号链接并直观地验证了文件/链接位于正确的位置,但 cmake 仍然告诉我它找不到文件,我不知道如何解决这个问题。正如我在之前的帖子中所说,我现在仍然只是学习 cmake,所以我完全不知道为什么它无法找到可验证位于正确位置的包。

/usr/share/OpenCV/OpenCVModules.cmake:192 处的 CMake 错误(消息): 导入的目标“opencv_viz”引用文件

 "/usr/lib/x86_64-linux-gnu/libopencv_viz.so.3.2.0"

但是这个文件不存在。可能的原因包括:

  • 文件已被删除、重命名或移动到其他位置。

  • 安装或卸载过程未成功完成。

  • 安装包出错并包含

    "/usr/share/OpenCV/OpenCVModules.cmake"

但不是它引用的所有文件。

【问题讨论】:

  • 检查权限、文件类型等。您的屏幕截图将libopencv_video.so.3.2.0 显示为链接,但libopencv_viz.so.3.2.0 没有。
  • 文件权限与我创建的所有其他符号链接相同。我在链接上运行了“文件”,它说它们是损坏的符号链接。什么会导致符号链接在创建后立即断开?我用 apt 安装了 lib,它显然创建了一个从 libopencv_viz.so 到 libopencv_viz.so.3.2 的硬符号链接,但它指向的文件不存在。很明显,这就是为什么我的 libopencv_viz.3.2.0->libopencv_viz.so 符号链接失败的原因。但是为什么我在安装没有错误的情况下在安装后立即断开链接?

标签: c++ opencv cmake qt-creator


【解决方案1】:

手动创建符号链接表明您的安装不完整。清理您的手动符号链接,并找出您的安装有什么问题。

在 Linux 上,带有完整数字版本的 .so.x.y.z 是运行时库是正常的。即,应用程序运行所需的文件。版本号可确保应用加载与其构建时所依据的库相同的库。

.so 符号链接到.so.x.y.z 用于构建链。当编译器(实际上是链接器)链接 libopencv_viz 时,它会搜索 libopencv_viz.so,将符号链接解析为版本化文件,然后链接它。

许多发行版(包括 Ubuntu)将运行时库与开发组件分开。我的猜测是你已经安装了名为libopencv-viz3.2 的软件包,但没有安装名为libopencv-viz-dev 的软件包。

【讨论】:

    猜你喜欢
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多