共享库版本链接约定

时间:2019-04-23 18:38:41

标签: linker shared-libraries versioning .so

我有一个可在给定系统上运行的可执行文件,具有Nvidia Cuda版本8。

在更新的系统上,运行当前最新的CentOS 7.6和Cuda 10.1,我得到了

error while loading shared libraries: libnvblas.so.8.0: cannot open shared object file

要做一个快速解决方案

ln -s   /usr/lib64/libnvblas.so               /usr/lib64/libnvblas.so.8.0
ln -s   /usr/local/cuda/lib64/libcudart.so    /usr/local/cuda/lib64/libcudart.so.8.0
{it errors on only these two}

现在,在cuda 8中,文件和命名约定与现在不同,但是例如在cuda 10.1中,/usr/local/cuda/lib64/中就是这样的

lrwxrwxrwx         17  libcudart.so        ->    libcudart.so.10.1
lrwxrwxrwx         21  libcudart.so.10.1   ->    libcudart.so.10.1.105
-rwxr-xr-x     504480  libcudart.s0.10.1.105
-rw-r--r--     888488  libcudart_static.a
  • 什么是,或者在那里? .so 编号方案的正确或正确约定?根据我的收集,应该简单地针对whatever.so ALWAYS 链接,其中该链接将指向最新版本?
  • 关于我遇到的错误,这是什么原因造成的?一个如何编译,并专门链接到这样的.so版本? 所以我知道自己如何避免

0 个答案:

没有答案