[Rd] linking hdf5, requires setting LD_LIBRARY_PATH
James Bullard
bullard at stat.berkeley.edu
Wed Mar 3 04:27:41 CET 2010
On Mar 2, 2010, at 17:45, Dirk Eddelbuettel <edd at debian.org> wrote:
>
> Unless I am missing something, this has nothing to do with hdf5 per
> se. See
> below.
>
No, you are not missing anything. Thank you for the response. This is
exactly what I was looking for.
Thanks again, Jim
> On 2 March 2010 at 16:20, bullard at stat.Berkeley.EDU wrote:
> | I am writing an R package to interface to hdf5 files (yes I know one
> | exists, the issue will be demonstrated using that package). I tend
> to like
> | to build/install things locally so that aspects of the system I am
> working
> | on don't cause problems later when attempting to install
> elsewhere. To
> | this end, I build and install the hdf5 libraries w/out incident:
> |
> | tar xzf hdf5-1.8.4.tar.bz2
> | cd hdf5-1.8.4
> | ./configure --prefix=/home/jbullard/scratch/hdf5_install
> | make && make install
> |
> | Now, I make a shared object using the following (I am compiling
> hdf5.c
> | directly in src of the hdf5 package):
> |
> | gcc -I/home/jbullard/projects/me/R-builder/lib64/R/include
> | -I/home/jbullard/scratch/hdf5_install/include -I/usr/local/include
> -fpic
> | -g -O2 -std=gnu99 -c hdf5.c -o hdf5.o
> | gcc -shared -L/usr/local/lib64 -o hdf5.so hdf5.o
> | -L/home/jbullard/scratch/hdf5_install/lib -lhdf5 -lz -lm
> | -L/home/jbullard/projects/me/R-builder/lib64/R/lib -lR
> |
> | I then start R and get the following error:
> |
> | Error in dyn.load("hdf5.so") :
> | unable to load shared library '/home/jbullard/scratch/hdf5/src/
> hdf5.so':
> | libhdf5.so.6: cannot open shared object file: No such file or
> directory
> |
> | The solution is set LD_LIBRARY_PATH to
> | /home/jbullard/scratch/hdf5_install/lib
>
> Of course. This is a dynamic library, and ld.so needs to find it.
>
> So if and when _you_ opt to depart from using standard locations,
> _you_ need
> to tell ld.so where to look.
>
> Setting LD_LIBRARY_PATH is one of several ways to do so. Others
> include
>
> a) the /etc/ld.so.conf file,
>
> b) (on newer linuxen) a file in the /etc/ld.so.conf.d/ directory
>
> c) encode the path at link time using the rpath argument.
>
> Rcpp and RInside provide examples of the last approach.
>
> Hth, Dirk
>
> |
> | Then things work just fine. However, I dislike this option -- Is
> there any
> | other way which things can be orchestrated completely at package
> install
> | time? I don't want to go editing any files in the R installation;
> more
> | like an option to append something to R's LD_LIBRARY_PATH w/in the
> | Makevars.in of the package being installed (in this case, hdf5)?
> |
> | Details of platform below. As always, thanks in advance.
> |
> | jim
> |
> | R version 2.11.0 Under development (unstable) (2010-02-08 r51110)
> | x86_64-unknown-linux-gnu
> |
> | locale:
> | [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
> | [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
> | [5] LC_MONETARY=C LC_MESSAGES=en_US.UTF-8
> | [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
> | [9] LC_ADDRESS=C LC_TELEPHONE=C
> | [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
> |
> | attached base packages:
> | [1] stats graphics grDevices utils datasets methods base
> |
> | HDF5 Version 1.8.4
> | R hdf5 package: hdf5_1.6.9.tar.gz
> | Linux mp-1246 2.6.31-19-generic #56-Ubuntu SMP Thu Jan 28 02:39:34
> UTC
> | 2010 x86_64 GNU/Linux
> |
> | ______________________________________________
> | R-devel at r-project.org mailing list
> | https://stat.ethz.ch/mailman/listinfo/r-devel
>
> --
> Registration is open for the 2nd International conference R /
> Finance 2010
> See http://www.RinFinance.com for details, and see you in Chicago
> in April!
More information about the R-devel
mailing list