【问题标题】:CMAKE - runtime library hidden filesCMAKE - 运行时库隐藏文件
【发布时间】:2018-07-04 23:43:41
【问题描述】:

我正在运行 Linux Redhat,我安装了 Anaconda,我正在尝试使用 CMAKE 安装程序 (libspimage) 我收到以下警告/错误:

src/CMakeLists.txt:74 (ADD_LIBRARY) 处的 CMake 警告: 无法为目标 _spimage_pybackend 生成安全的运行时搜索路径 因为某些目录中的文件可能与隐式中的库冲突 目录: /usr/lib64 中的运行时库 [libtiff.so.5] 可能被以下文件隐藏: /home/michantia/anaconda2/lib

其中一些库可能无法正确找到。

当我这样做时:

回显 $PATH

我明白了:

/home/mi_a/anaconda2/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin: /sbin:/home/michantia/.local/bin:/home/michantia/bin

我试过了:

导出 PATH=/usr/lib64:$PATH

希望 cmake 在 anancoda 中找到它们之前会在此目录中找到这些库,但这不起作用。对于我在 stackoverflow 中看到的类似问题,我还尝试了另外两个类似的建议,但没有奏效。

非常欢迎任何其他想法。

【问题讨论】:

    标签: cmake anaconda


    【解决方案1】:

    警告信息

    无法为目标生成安全的运行时搜索路径

    CMakeCMake 查找库的能力(在您的情况下为libtiff.so.5也不链接器 链接库的能力。

    警告信息意味着当一个目标(_spimage_pybackend)将被加载时,加载器将无法选择正确的库:根据loader's algorithm和目标的设置,文件将选择/home/michantia/anaconda2/lib/libtiff.so.5 而不是正确的/usr/lib64/libtiff.so.5

    该错误通常是导致从不同目录链接到单个目标的两个库,当具有第二个库的目录还包含具有第一个库名称的文件时:

    1. 目录/usr/lib64 包含一个库libtiff.so.5,它链接到目标。
    2. 目录/home/michantia/anaconda2/lib 包含一个库<A>,它也链接到目标;但是这个目录还包含一个文件libtiff.so.5

    根据CMake algorithm,此类目标的二进制文件的运行路径将包含两个目录,因此可以找到两个库。但是这样的运行路径会让加载器无法正确找到第一个库。

    除非避免这种情况(当一个库包含在两个目录中时),否则几乎无法处理此警告。

    【讨论】:

    • 如何纠正?
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多