2011-11-03 50 views
3

当R安装包含其他程序/库的软件包(例如,hdf5SQLite)时,我可以使用其他程序中的软件吗?例如,我的hdf5.so安装在/Library/Frameworks/R.framework/Versions/2.13/Resources/library/hdf5/libs/x86_64/ - 我可以使用它而不是安装hdf5供Python使用(h5py等?)。将R安装的库用于其他程序?

回答

9

作为一般规则,没有。您也可能会误解此:hdf5.so是从R到hdf5文库的绑定。例如。当(在Linux中)请问链接器,我得到了一个给定的R库链接像

[email protected]:~$ ldd /usr/lib/R/site-library/XML/libs/XML.so 
     linux-vdso.so.1 => (0x00007fffcbf75000) 
     libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007fc0a1514000) 
     libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc0a12fc000) 
     libR.so => /usr/lib/libR.so (0x00007fc0a0d92000) 
     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc0a09fe000) 
     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc0a07fa000) 
     libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc0a0574000) 
     libblas.so.3gf => /usr/lib/atlas-base/atlas/libblas.so.3gf (0x00007fc09fcff000) 
     libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007fc09fa1b000) 
     libreadline.so.6 => /lib/libreadline.so.6 (0x00007fc09f7d8000) 
     libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fc09f59c000) 
     liblzma.so.2 => /usr/lib/liblzma.so.2 (0x00007fc09f37a000) 
     libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x00007fc09f169000) 
     librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc09ef61000) 
     libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007fc09ed53000) 
     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc09eb34000) 
     /lib64/ld-linux-x86-64.so.2 (0x00007fc0a1ab6000) 
     libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc09e91e000) 
     libncurses.so.5 => /lib/libncurses.so.5 (0x00007fc09e6d9000) 
[email protected]:~$ 

说明的是,R的XML封装本身依赖于libxml2的。

因此,不是提供你正在寻找的库,它们往往也只是链接到它们。

+0

+1熟悉'ldd'是个明智的想法。我用它来调试一堆R <-> externalLibrary.so问题。 – Iterator

+0

我明白了...但这些'.so'文件链接到的原始库,是否可以不被其他程序使用? – hatmatrix

+1

它们*链接在*中的事实表明它们实际上是由其他程序使用的,因为R是XML库中的其他程序。 –

相关问题