似乎无法更新我的共享库路径

似乎无法更新我的共享库路径

我正在尝试向我的 Ubuntu 系统添加一个库文件夹。

我尝试用来更新系统的库文件夹是:/home/user/programs/elastix/lib

我尝试了以下操作:我首先检查了LD_LIBRARY_PATH环境变量:

$ echo $LD_LIBRARY_PATH

/usr/local/cuda-9.0/lib64

而且它只包含 1 个文件夹 (?)。无论如何,我检查了一下ld.so.conf

$ cat /etc/ld.so.conf

include /etc/ld.so.conf.d/*.conf

并将所有配置文件都包含在ld.so.conf.d文件夹中。

-rw-rw-r-- 1 root root  38 Nov 24  2014 fakeroot-x86_64-linux-gnu.conf  
-rw-r--r-- 1 root root 108 Jan 15  2018 i386-linux-gnu.conf   lrwxrwxrwx 1 root root  41 May 15  2018 i386-linux-gnu_EGL.conf -> /etc/alternatives/i386-linux-gnu_egl_conf   lrwxrwxrwx 1 root root  40 May 15  2018 i386-linux-gnu_GL.conf ->  /etc/alternatives/i386-linux-gnu_gl_conf  
-rw-r--r-- 1 root root  44 Jan 27  2016 libc.conf  
-rw-r--r-- 1 root root  38 Nov 14 17:16 randomLibs.conf  
-rw-r--r-- 1 root root  26 May 17 10:44 tensorflow_lib.conf  
-rw-r--r-- 1 root root  68 Apr 15  2016 x86_64-linux-gnu.conf   lrwxrwxrwx 1 root root  43 May 15  2018 x86_64-linux-gnu_EGL.conf -> /etc/alternatives/x86_64-linux-gnu_egl_conf    lrwxrwxrwx 1 root root  42 Sep 14 17:16 x86_64-linux-gnu_GL.conf -> > /etc/alternatives/x86_64-linux-gnu_gl_conf  
-rw-r--r-- 1 root root  56 Jan 15  2018 zz_i386-biarch-compat.conf

它包含 11 个配置文件。这看起来相当奇怪,因为 11 个(非空)配置文件的 1 个链接毫无意义。

我手动将该文件夹添加到ld.so.conf文件中:

$ cat /etc/ld.so.conf

include /etc/ld.so.conf.d/*.conf  
/home/user/programs/elastix/lib

然后运行

$ sudo ldconfig

更新缓存。出现此错误消息,我猜也没有更新任何内容。

/sbin/ldconfig.real: /usr/local/cuda-9.0/lib64/libcudnn.so.7 is not a symbolic link

$ echo $LD_LIBRARY_PATH
/usr/local/cuda-9.0/lib64

使其工作的唯一方法是通过在控制台中专门添加文件夹:

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/programs/elastix/lib
$ echo $LD_LIBRARY_PATH
/usr/local/cuda-9.0/lib64:/home/user/programs/elastix/lib

那么,我的问题是这里发生了什么?为什么我的共享库没有使用更新ldconfig,为什么我也只能看到 1 个文件夹LD_LIBRARY_PATH

根据这个邮政我可以将共享库移动到这些文件夹:

  • /lib/
  • /usr/lib/
  • /usr/本地/lib/

并使其工作,但我想知道以前的方法存在什么问题。

顺便说一下,我正在使用 Ubuntu 16.04。

答案1

共享对象库有一个命名约定:

“真正的”库文件应该命名为libcudnn.so.7.0。从该文件应该创建两个软链接:

$ sudo mv /usr/local/cuda-9.0/lib64/libcudnn.so.7 /usr/local/cuda-9.0/lib64/libcudnn.so.7.0
$ sudo ln -s /usr/local/cuda-9.0/lib64/libcudnn.so.7.0 /usr/local/cuda-9.0/lib64/libcudnn.so.7
$ sudo ln -s /usr/local/cuda-9.0/lib64/libcudnn.so.7.0 /usr/local/cuda-9.0/lib64/libcudnn.so

这允许使用 switch 调用编译器-lcudnn。还ldconfig接缝以验证此约定。另请参阅此(关联)。

相关内容