【问题标题】:library not found although I use ldconfig and /etc/ld.so.conf.d/lib.conf尽管我使用 ldconfig 和 /etc/ld.so.conf.d/lib.conf,但找不到库
【发布时间】:2016-12-20 08:47:43
【问题描述】:

我正在使用 Fedora 25

我有一个需要多个库的二进制文件。二进制找不到libRblas.so

$ ldd XPore-Engine | less | grep not
libvtkRenderingAnnotation.so.1 => /usr/lib64/vtk/libvtkRenderingAnnotation.so.1 (0x00007fac12563000)
libRblas.so => not found
libRblas.so => not found
libRblas.so => not found

使用.conf 文件正确配置库路径:

$ cat /etc/ld.so.conf.d/R-x86_64.conf
/usr/lib64/R/lib
$ ll /usr/lib64/R/lib
lrwxrwxrwx. 1 root root     11 dic 16 20:46 libopenblas.so.0 -> libRblas.so
lrwxrwxrwx. 1 root root     27 oct 31 21:16 libRblas.so -> /usr/lib64/libopenblas.so.0
-rwxr-xr-x. 1 root root 1989312 oct 31 21:16 libRlapack.so
-rwxr-xr-x. 1 root root  178856 oct 31 21:16 libRrefblas.so
-rwxr-xr-x. 1 root root 2911536 oct 31 21:16 libR.so

我用ldconfig加载配置:

$ ldconfig -v | grep libRblas
        libopenblas.so.0 -> libRblas.so

但是,在再次执行 ldd 后,它返回相同的输出,指出未找到 libRblas.so

我该如何解决这个问题?

【问题讨论】:

    标签: shared-libraries dynamic-linking ldd openblas fedora-25


    【解决方案1】:

    我在 https://bugzilla.redhat.com/show_bug.cgi?id=1404662 的 Read Hat Bugzilla 错误跟踪系统中找到了 Tom 提供的解决方法。

    是的,所以看起来虽然 R 非常乐意使用 libRblas.so 作为指向 libopenblas.so.0 的 > 符号链接,但在外部,没有别的。 使用 openblas 的加速非常显着,因此修复方法是构建具有 libRblas.so 文件名和 soname 的 openblas 副本,并使用它而不是符号链接。我有一个新的 openblas 版本,它添加了这个,然后我会做新一轮依赖它的 R 版本。

    作为临时解决方法,您可以(以 root 身份)运行: rm -f /usr/lib64/R/lib/libRblas.so mv /usr/lib64/R/lib/libRrefblas.so /usr/lib64/R/lib/libRblas.so

    这将恢复 R 提供的未优化的 libRblas.so。

    哦,在移动 libRrefblas.so 之后运行 /sbin/ldconfig(以 root 身份),以便更新 ldcache。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2013-08-21
      • 2016-11-01
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多