CMAKE - 运行时库隐藏文件

时间:2018-01-25 16:31:35

标签: cmake anaconda

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

  

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

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

当我这样做时:

  

echo $ 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

我试过了:

  

export PATH = / usr / lib64:$ PATH

希望cmake在anancoda中找到它之前会在这个目录中找到这些库,但这不起作用。我还尝试了另外两个类似的问题来解决我在stackoverflow中遇到的类似问题,但这没有用。

非常欢迎任何其他想法。

1 个答案:

答案 0 :(得分:1)

警告信息

  

无法为目标

生成安全的运行时搜索路径

CMake 相关联, CMake 能够找到一个库(在您的情况下为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
  3. 根据CMake algorithm,此类目标的二进制文件的runpath将包含两个目录,因此可以找到这两个库。但是这样的runpath会混淆加载器以正确地找到第一个库。

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