Konrad Smolinski
2007-Sep-19 17:25 UTC
[Rd] building a package - shared library loading problem
Dear All, I am trying to write my first R package and I bump into loading shared library problem( working on Mac OS X 10.4.10 as well as Linux Ubuntu). I want to makes use of (incorporate) a shared library matchinglib.so in the package. Library was created via R CMD -SHLIB. Following 'Writing R Extensions' I place matchinglib.so in the 'libs' directory and use NAMESPACE file with an entry: useDynLib(matchinglib) Now, executing 'R CMD check mypackage' I face the following error on OS X: ----------------------------------------------------- * checking whether the package can be loaded ... ERROR Error in library.dynam(lib, package, package.lib) : shared library 'matchinglib' not found Error: package/namespace load failed for 'cheetah' Execution halted It looks like this package has a loading problem: see the messages for details. ---------------------------------------------------- The same problem occurs under Linux. Shall I specify a direct path to libs or modify NAMESPACE? konrad --- Konrad Smolinski Economics Department European University Institute Badia Fiesolana Via dei Roccettini 9 I-50014 San Domenico di Fiesole (FI) ITALY konrad.smolinski at eui.eu konrad.smolinski at gmail.com
Simon Urbanek
2007-Sep-19 19:41 UTC
[Rd] building a package - shared library loading problem
Konrad, for a package you should not be using R CMD SHLIB at all. It is used internally and for non-package compilation. If you have a proper source package, you just install it using R CMD INSTALL. To be precise, assuming you have your package and source code in the "foo" directory you can create the source package like this: tar fcz foo_1.0.tar.gz foo That package doesn't contain any .so objects and thus can be installed anywhere using R CMD INSTALL foo_1.0.tar.gz That step will create the .so in the appropriate place which differs by system and R version. If you want to create a binary package for a given platform, use the --build flag. Please read 'Writing R Extensions' - you just want to use the src directory and not mess with libs. Cheers, Simon On Sep 19, 2007, at 1:25 PM, Konrad Smolinski wrote:> Dear All, > I am trying to write my first R package and I bump into loading shared > library problem( working on Mac OS X 10.4.10 as well as Linux Ubuntu). > I want to makes use of (incorporate) a shared library > matchinglib.so in > the package. Library was created via R CMD -SHLIB. > Following 'Writing R Extensions' I place matchinglib.so in the 'libs' > directory and use NAMESPACE file with an entry: > useDynLib(matchinglib) > > Now, executing 'R CMD check mypackage' I face the following error > on OS X: > ----------------------------------------------------- > * checking whether the package can be loaded ... ERROR > Error in library.dynam(lib, package, package.lib) : > shared library 'matchinglib' not found > Error: package/namespace load failed for 'cheetah' > Execution halted > > It looks like this package has a loading problem: see the messages for > details. > ---------------------------------------------------- > The same problem occurs under Linux. > > Shall I specify a direct path to libs or modify NAMESPACE? > > konrad > --- > Konrad Smolinski > Economics Department > European University Institute > Badia Fiesolana > Via dei Roccettini 9 > I-50014 San Domenico di Fiesole (FI) > ITALY > > konrad.smolinski at eui.eu > konrad.smolinski at gmail.com > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > >