1

我正在使用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没有找到。

我怎样才能解决这个问题?

4

1 回答 1

3

我在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。

于 2016-12-20T16:50:49.187 回答