3
当R安装包含其他程序/库的软件包(例如,hdf5
,SQLite
)时,我可以使用其他程序中的软件吗?例如,我的hdf5.so
安装在/Library/Frameworks/R.framework/Versions/2.13/Resources/library/hdf5/libs/x86_64/
- 我可以使用它而不是安装hdf5
供Python使用(h5py
等?)。将R安装的库用于其他程序?
当R安装包含其他程序/库的软件包(例如,hdf5
,SQLite
)时,我可以使用其他程序中的软件吗?例如,我的hdf5.so
安装在/Library/Frameworks/R.framework/Versions/2.13/Resources/library/hdf5/libs/x86_64/
- 我可以使用它而不是安装hdf5
供Python使用(h5py
等?)。将R安装的库用于其他程序?
作为一般规则,没有。您也可能会误解此: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的。
因此,不是提供你正在寻找的库,它们往往也只是链接到它们。
+1熟悉'ldd'是个明智的想法。我用它来调试一堆R <-> externalLibrary.so问题。 – Iterator
我明白了...但这些'.so'文件链接到的原始库,是否可以不被其他程序使用? – hatmatrix
它们*链接在*中的事实表明它们实际上是由其他程序使用的,因为R是XML库中的其他程序。 –