grimbough / rhdf5

Package providing an interface between HDF5 and R
http://bioconductor.org/packages/rhdf5
61 stars 22 forks source link

Errors loading library #3

Closed grimbough closed 6 years ago

grimbough commented 6 years ago
>  library(rhdf5)
Error: package or namespace load failed for ârhdf5â in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/export/R-3.4.2/lib64/R/library/rhdf5/libs/rhdf5.so':
  /export/R-3.4.2/lib64/R/library/rhdf5/libs/rhdf5.so: undefined symbol: H5T_NATIVE_INT16_g

This was encountered using using the Intel C++ compiler and Math Kernel Library on a CentOS 6 installation.

Reported by Malcolm Tobias

grimbough commented 6 years ago

Currently trying to resolve this in Rhdf5lib here

grimbough commented 6 years ago

I was finally able to recreate this error properly by getting a trial version of the Intel compilers and running my own CentOS installation. With that combination I got exactly the same output as seen in the first post.

Working theory is that this is related to using a combination of the Intel C compiler and the GNU archiver.

I haven't figured out how to determine this in a configure script, but for now setting these two environment variables prior to trying to install the package seems to work:

AR=/opt/intel/bin/xiar
LD=/opt/intel/bin/xild

The first is definitely needed, not sure about the second one.

Then running BiocInstaller::biocLite('rhdf5') in an R session works for me

grimbough commented 6 years ago

Closing as this seems to have solved the issue.

SolomonShorser-OICR commented 5 years ago

I'm getting a similar error, though it's with H5T_NATIVE_INT32_g instead of H5T_NATIVE_INT16_g. The error occurs when I try to install the package using R CMD INSTALL ., rather than library("rhdf5") as described in the original post here. To be more specific the error occurs during testing:

...
installing to /u/my_user/R/x86_64-pc-linux-gnu-library/3.6/00LOCK-rhdf5/00new/rhdf5/libs
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘rhdf5’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/u/my_user/R/x86_64-pc-linux-gnu-library/3.6/00LOCK-rhdf5/00new/rhdf5/libs/rhdf5.so':
  /u/my_user/R/x86_64-pc-linux-gnu-library/3.6/00LOCK-rhdf5/00new/rhdf5/libs/rhdf5.so: undefined symbol: H5T_NATIVE_INT32_g
Error: loading failed

Setting AR and LD didn't work.

Is there any other possible solution to this?

R version: 3.6.0 I'm not using the Intel compiler or libraries (at least not as far as I know).

SolomonShorser-OICR commented 5 years ago

It seems this was related to the HPC environment I was working in. Eventually, I was able to build and install rhdf5, but it required some setup that is particular to this environment.

grimbough commented 5 years ago

Thanks for updating here. If you want to leave a record of the step you took it would be much appreciated. I can add them to a vignette I'm working on for 'non-standard' installations.

SolomonShorser-OICR commented 5 years ago

Not sure how much that will help other users who are not building in this environment, but:

The build process could only link to the necessary libraries (the hdf5 dev files, in the case of rhdf5) if I executed the build on a particular node in the cluster, but I thought it would work on other nodes. What confused me was that some other libraries did build ok on the non-build node. It really was just a matter of which dependencies were needed. Once I switched the the build-node, everything was OK.