Соглашение о связывании версии общего объекта - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть исполняемый файл, который работает в данной системе, с 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, где эта ссылка будет указывать на последнюю версию?
  • Что касается ошибки, с которой я сталкиваюсь, то какова причина этого? Как можно скомпилировать и ссылаться именно на такую ​​версию .so? так что я знаю, как этого избежать сам
...