我正在使用 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
。
我该如何解决这个问题?
答案 0 :(得分:3)
我在https://bugzilla.redhat.com/show_bug.cgi?id=1404662的Read Hat Bugzilla错误跟踪系统中找到了Tom提供的解决方法。
是的,所以看起来R很完全使用libRblas.so作为> symlink到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。