【问题标题】:Linker errors (library versions conflict)链接器错误(库版本冲突)
【发布时间】:2020-12-31 08:02:24
【问题描述】:

我有一个使用 conan 作为包管理器的 cmake 项目。该项目使用 1.71 版本的 boost 组件,我安装了 libboost-dev (v 1.62),无法从我的系统中删除。

/usr/bin/ld:警告:libboost_system.so.1.62.0,/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../需要../x86_64-linux-gnu/libboost_filesystem.so,可能与libboost_system.so.1.71.0冲突
/usr/bin/ld:警告:bin/libAppUtil.so 需要的 libboost_filesystem.so.1.71.0 可能与 libboost_filesystem.so.1.62.0 冲突
/usr/bin/ld:警告:bin/libAppUtil.so 需要的 libboost_filesystem.so.1.71.0 可能与 libboost_filesystem.so.1.62.0 冲突
bin/libCoreInt.so: 未定义引用`boost::filesystem::native(std::__1::basic_string const&)'
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我不知道冲突是否是链接器错误的根源,但我猜是

【问题讨论】:

    标签: c++ linux linker-errors


    【解决方案1】:

    共享库有2个版本:

    1. libboost_system.so.1.62.0(已经存在)
    2. libboost_system.so.1.71.0(项目要求)

    由于无法删除共享库(libboost_system.so.1.62.0)。请将现有库升级到 libboost_system.so.1.71.0。这个问题应该得到解决。

    但同样由于依赖于 libboost_system.so.1.62.0,我们 可以做到以下几点:

    1. 项目特定的 cmake 文件应引用具有共享库“libboost_system.so.1.71.0”的目录。

    所以在构建项目时,可执行文件应该指向版本:libboost_system.so.1.71.0。

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 2017-01-29
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      相关资源
      最近更新 更多