[Rd] Using a shared object without installing a library required by the object.

Simon Urbanek simon.urbanek at r-project.org
Fri May 24 01:54:44 CEST 2013


On May 23, 2013, at 4:18 PM, Xiao He <praguewatermelon at gmail.com> wrote:

> Dear all,
> 
> I have a C++ code. To create a shared object from this particular code, I
> had to install a Fortran library on my computer (Mac). The compiled code
> runs fine on my computer. However,  if I try to dyn.load() said shared
> object on a computer that does not have the Fortran library installed, the
> object won't load, and instead I get a message below:
> 
> usr/local/lib/libgfortran.2.dylib
> Referenced from: /Users/xh/Downloads/foo2.so
> 
> I wonder if there is any way to compile the original C++ code such that I
> can include the necessary components of the Fortran library without having
> to install the library.
> 

The Fortran run-time is included with R, so you only need to change the path -- e.g.

install_name_tool -change /usr/local/lib/libgfortran.2.dylib /Library/Frameworks/R.framework/Resources/lib/libgfortran.2.dylib /Users/xh/Downloads/foo2.so

You can make that permanent on your build machine by running

install_name_tool -id  /Library/Frameworks/R.framework/Resources/lib/libgfortran.2.dylib /usr/local/lib/libgfortran.2.dylib

If you do that, all code compiled against it subsequently will point to the version inside R instead.

Cheers,
Simon

FWIW: There is R-SIG-Mac for Mac-specific questions.


> 
> Thank you in advance.
> 
> Best,
> Xiao
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 



More information about the R-devel mailing list