2016-12-20 28 views
1

我使用的是Fedora 25库找不到,虽然我使用ldconfig和/etc/ld.so.conf.d/lib.conf

我有一个需要多个库的二进制文件。二进制找不到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

我该如何解决这个问题?

回答

3

我在阅读Hat Bugzilla错误跟踪系统https://bugzilla.redhat.com/show_bug.cgi?id=1404662找到了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。