2016-12-20 56 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。