[Rcpp-devel] compiling Rcpp with 3.0.1 on Solaris 10

Dirk Eddelbuettel edd at debian.org
Mon Jun 24 20:44:43 CEST 2013


Hi Hans,

On 24 June 2013 at 16:30, MAYER Hans wrote:
| 
| 
| Hello 
| 
| My colleagues asked me to install "R" with module "shiny". 
| R version 3.0.1 compiled fine on Solaris 10 and is running well. 
| 
| I tried to install "shiny". With the dependencies "Rcpp" should be installed before. But the compile step did fail. See below. 
| The initial error message is "Error in dyn.load(file, DLLpath = DLLpath, ...) :" 
| Before there are some warning. The final problem is, that the shared library Rcpp.so was not generated.
| 
| I am not familiar with R but I  could manage to compile a lot of source code on Solaris. Very often it's only a small change in Makefile or source code. 
| Is there a way to compile "Rcpp" manually step by step  ? 
| It seems, that the file Rcpp.so is removed before it is used for linking. ( See line rm libRcpp.so libRcpp.a ) 

That's normal, see any installation in Linux. And the core library is of
course installed.  You actually misread the error.

| How-to fix this problem. I am sure, it's not a major issue. 
|
| Kind regards
| Hans
| 
| 
| 
| 
| # R CMD INSTALL Rcpp
| * installing to library '/usr/local/lib/R/library'
| * installing *source* package 'Rcpp' ...
| ** libs
| g++ -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c Date.cpp -o Date.o
| Date.cpp: In member function `void Rcpp::Date::update_tm()':
| Date.cpp:108: warning: converting to `time_t' from `double'
| Date.cpp: In member function `double Rcpp::Date::mktime00(tm&) const':
| Date.cpp:134: warning: converting to `int' from `double'
| Date.cpp:137: warning: converting to `int' from `double'
| Date.cpp: In function `Rcpp::Date Rcpp::operator+(const Rcpp::Date&, int)':
| Date.cpp:164: warning: converting to `time_t' from `double'
| Date.cpp: In function `tm* Rcpp::timesub(const time_t*, long int, const Rcpp::state*, tm*)':
| Date.cpp:1523: warning: converting to `long int' from `double'
| g++ -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c Module.cpp -o Module.o
| gcc -std=gnu99 -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c Rcpp_init.c -o Rcpp_init.o
| g++ -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c Timer.cpp -o Timer.o
| g++ -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c api.cpp -o api.o
| g++ -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c attributes.cpp -o attributes.o
| attributes.cpp: In member function `std::vector<Rcpp::attributes::Param, std::allocator<Rcpp::attributes::Param> > Rcpp::attributes::SourceFileAttributesParser::parseParameters(const std::string&)':
| attributes.cpp:986: warning: converting of negative value `-0x00000000000000001' to `size_t'
| g++ -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c barrier.cpp -o barrier.o
| g++ -I/usr/local/lib/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include    -fPIC  -g -O2  -c exceptions.cpp -o exceptions.o
| g++ -shared -L/usr/local/lib -L/usr/sfw/lib -L/opt/sfw/lib -L/opt/solarisstudio12.3/lib -L/opt/solarisstudio12.3/prod/lib -o Rcpp.so Date.o Module.o Rcpp_init.o Timer.o api.o attributes.o barrier.o exceptions.o
| g++ -o libRcpp.so Date.o Module.o Rcpp_init.o Timer.o api.o attributes.o barrier.o exceptions.o -shared
| ar qc libRcpp.a Date.o Module.o Rcpp_init.o Timer.o api.o attributes.o barrier.o exceptions.o

So far so good.

| cp libRcpp.so ../inst/lib
| cp libRcpp.a ../inst/lib
| rm libRcpp.so libRcpp.a
| installing to /usr/local/lib/R/library/Rcpp/libs
| ** R
| ** inst
| ** preparing package for lazy loading
| ** help
| *** installing help indices
| ** building package indices
| ** installing vignettes
|    'Rcpp-FAQ.Rnw'
|    'Rcpp-attributes.Rnw'
|    'Rcpp-extending.Rnw'
|    'Rcpp-introduction.Rnw'
|    'Rcpp-modules.Rnw'
|    'Rcpp-package.Rnw'
|    'Rcpp-sugar.Rnw'
|    'Rcpp-unitTests.Rnw'
| ** testing if installed package can be loaded
| Error in dyn.load(file, DLLpath = DLLpath, ...) :
|   unable to load shared object '/usr/local/lib/R/library/Rcpp/libs/Rcpp.so':
|   ld.so.1: R: fatal: relocation error: file /usr/local/lib/R/library/Rcpp/libs/Rcpp.so: symbol backtrace: referenced symbol not found

The 'backtrace' symbol appears to be missing.

It is used only in the file src/api.cpp where we even use some #define
statements to control where we build this.  This would normally exclude
Solaris but I guess is active because you use g++.

In a first instance, comment that out -- with the help of a local C++ expert
-- and then build Rcpp from your modified sources.

Hope this helps,  Dirk


| Error: loading failed
| Execution halted
| ERROR: loading failed
| * removing '/usr/local/lib/R/library/Rcpp'
| amur1:root>
| amur1:root>
| amur1:root> R CMD INSTALL Rcpp
| * installing to library '/usr/local/lib/R/library'
| * installing *source* package 'Rcpp' ...
| ** libs
| g++ -o libRcpp.so Date.o Module.o Rcpp_init.o Timer.o api.o attributes.o barrier.o exceptions.o -shared
| ar qc libRcpp.a Date.o Module.o Rcpp_init.o Timer.o api.o attributes.o barrier.o exceptions.o
| cp libRcpp.so ../inst/lib
| cp libRcpp.a ../inst/lib
| rm libRcpp.so libRcpp.a
| installing to /usr/local/lib/R/library/Rcpp/libs
| ** R
| ** inst
| ** preparing package for lazy loading
| ** help
| *** installing help indices
| ** building package indices
| ** installing vignettes
|    'Rcpp-FAQ.Rnw'
|    'Rcpp-attributes.Rnw'
|    'Rcpp-extending.Rnw'
|    'Rcpp-introduction.Rnw'
|    'Rcpp-modules.Rnw'
|    'Rcpp-package.Rnw'
|    'Rcpp-sugar.Rnw'
|    'Rcpp-unitTests.Rnw'
| ** testing if installed package can be loaded
| Error in dyn.load(file, DLLpath = DLLpath, ...) :
|   unable to load shared object '/usr/local/lib/R/library/Rcpp/libs/Rcpp.so':
|   ld.so.1: R: fatal: relocation error: file /usr/local/lib/R/library/Rcpp/libs/Rcpp.so: symbol backtrace: referenced symbol not found
| Error: loading failed
| Execution halted
| ERROR: loading failed
| * removing '/usr/local/lib/R/library/Rcpp'
| 
| 
| 
| -- 
| 
| 
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list