Phani Teluguti
Phani Teluguti

Reputation: 3

Trouble installing rcpp package on R server- Suse 12 SP3 - R-3.3.2

I am very new to R language. Being an admin I am setting up an rserver and installing the required packages for my use of this R server with SAP HANA 1.0.

The fundamental problem here is when i am installing the rcpp.0.12.16 and getting the below error. g++ is 4.8-6.189.

Are there an incompatibilities witht the OS version R version and rccp package i am using? Please help resolving this issue.

> setwd("/Media/R/R_indep_pack")
> install.packages("Rcpp_0.12.16.tar.gz",repos = NULL, type="source")
* installing *source* package ‘Rcpp’ ...
** package ‘Rcpp’ successfully unpacked and MD5 sums checked
** libs
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c Date.cpp -o Date.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c Module.cpp -o Module.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c Rcpp_init.cpp -o Rcpp_init.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c api.cpp -o api.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c attributes.cpp -o attributes.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c barrier.cpp -o barrier.o
g++ -L/usr/local/lib64/R/lib -L/usr/local/lib64 -o Rcpp.so Date.o Module.o 
Rcpp_init.o api.o attributes.o barrier.o -L/usr/local/lib64/R/lib -lR
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crt1.o: In function 
`_start':
/home/abuild/rpmbuild/BUILD/glibc-2.22/csu/../sysdeps/x86_64/start.S:114: 
undefined reference to `main'
collect2: error: ld returned 1 exit status
/usr/local/lib64/R/share/make/shlib.mk:6: recipe for target 'Rcpp.so' failed
make: *** [Rcpp.so] Error 1
ERROR: compilation failed for package ‘Rcpp’
* removing ‘/usr/local/lib64/R/library/Rcpp’
Warning message:
In install.packages("Rcpp_0.12.16.tar.gz", repos = NULL, type = "source") : 
  installation of package ‘Rcpp_0.12.16.tar.gz’ had non-zero exit status
>

Upvotes: 0

Views: 316

Answers (2)

Ralf Stubner
Ralf Stubner

Reputation: 26823

Your linker is looking for a main function since it is not told to build a shared library:

g++ -L/usr/local/lib64/R/lib -L/usr/local/lib64 -o Rcpp.so Date.o Module.o 
Rcpp_init.o api.o attributes.o barrier.o -L/usr/local/lib64/R/lib -lR

Here a -shared is missing from the command line. The command line flags used here are defined via the Makevars file:

$ grep SHLIB.*LDFLAGS $(R RHOME)/etc/Makeconf
SHLIB_CXXLDFLAGS = -shared
SHLIB_CXX98LDFLAGS = -shared
SHLIB_CXX11LDFLAGS = -shared
SHLIB_CXX14LDFLAGS = -shared
SHLIB_CXX17LDFLAGS = -shared
SHLIB_FCLDFLAGS = -shared
SHLIB_LDFLAGS = -shared# $(CFLAGS) $(CPICFLAGS)
SHLIB_LINK = $(SHLIB_LD) $(SHLIB_LDFLAGS) $(LIBR0) $(LDFLAGS)
SHLIB_CXX1XLDFLAGS = -shared

Either these are incorrectly set on your system or you are overriding them via ~/.R/Makevars.

Upvotes: 1

Gwang-Jin Kim
Gwang-Jin Kim

Reputation: 9865

In ubuntu, in such situation, I would search for

apt search rcpp # search in central repository for \
# packages for R packages

In this case, this leads to 'r-cran-rcpp' package which I then install with

sudo apt install r-cran-rcpp

(such packages from 'r-cran-' help, because they install for you the further dependencies in the system - which are often dependencies outside of R - automatically for you. E.g. some packages require java or some other system libraries.).

Similarly, you have to search in rpm or yast2 repos for rcpp packages.

I found googling http://rpmfind.net/linux/rpm2html/search.php?query=R-Rcpp

or http://rpm.pbone.net/index.php3/stat/4/idpl/33595438/dir/opensuse/com/R-RcppArmadillo-0.4.450.1.0-2.38.i586.rpm.html

Or: if you are using conda:

conda install -c r r-rcpp

would definitely help ...

If you don't know conda: This tutorial is super! https://www.youtube.com/watch?v=YJC6ldI3hWk Just spend 11 minutes and you will be able to use conda!

(With conda, you can install several R versions with all their packages in parallel in your system - sometimes you need that because some versions are not compativle with some R packages - conda creates for you different local environments within which you can install programs with all their specific dependencies. And you can switch between the environments.) I definitely recommend you to use conda. Because this solves many package dependency problems.

Upvotes: 0

Related Questions