CMAKE - 运行时库隐藏文件

问题描述 投票:0回答:1

我正在运行 Linux Redhat,我安装了 Anaconda,并且我正在尝试使用

CMAKE
安装程序 (libspimage) amd 我收到以下警告/错误:

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

我尝试过:

导出路径=/usr/lib64:$PATH

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

任何其他想法都非常受欢迎。

cmake anaconda
1个回答
0
投票

警告信息

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

既不CMake查找库的能力相关(

libtiff.so.5
在您的情况下)也不链接器链接库的能力相关。

警告消息意味着当加载目标(

_spimage_pybackend
)时,加载器将无法选择正确的库:根据加载器的算法和目标的设置,将选择文件
/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算法,此类目标的二进制文件的运行路径将包括这两个目录,因此可以找到这两个库。但是这样的运行路径会混淆加载器以正确找到第一个库。

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

© www.soinside.com 2019 - 2024. All rights reserved.