R : C++11 standard requested but CXX11 is not defined - r

I am using a Linux system x86_64-redhat-linux-gnu-library with a CentOS server.
The R version is 3.4.1
When installing the package "pdftools" I get the following error :
Error in .shlib_internal(args) :
C++11 standard requested but CXX11 is not defined
Has anyone encountered the problem?

Doing the following worked for me:
Under /usr/lib64/R/etc there are 2 Makeconf files:
Makeconf
Makeconf.rpmnew
Backup the 'Makeconf' file and replace it with the contents of 'Makeconf.rpmnew'
Found the solution here (wch's answer):
https://github.com/rstudio/httpuv/issues/82

Related

Installation of r packages failed with the same error "GLIBCXX_3.4.29' not found"

When I tried to install r package "osmdata" (or any other package) with command
install.packages("osmdata")
it failed with error
"GLIBCXX_3.4.29' not found (required by /home...R/x86_64-unknown-linux-gnu-library/4.2/00LOCK-osmdata/00new/osmdata/libs/osmdata.so)
host system is debian, r is installed using package manager Guix.
The error means: osmdata.so was compiled with g++ version 11.1.0 (ABI mapping of GLIBCXX to g++ version is documented here), but the version of libstdc++.so.6 installed on the system is older, and doesn't provide GLIBCXX_3.4.29.
You need to get a version of osmdata.so appropriate for your system, or you need to build it from source, or you need to update your libstdc++.so.6.
P.S. Your question has nothing to do with glibc.
I solved it by installing package r-guix-install from Guix package manager and using this command
guix.install::guix.install("osmdata")

Unable to install R packages due to library not found

In any R package I try to install, I get the following error message:
ld: library not found for -lintl
collect2: error: ld returned 1 exit status
make: *** [utf8.so] Error 1
I'm not sure how to make this a reprex, but I am running:
R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin19.5.0 (64-bit)
Running under: macOS Catalina 10.15.5
What does this error message (ld: library not found for -lintl) mean and how can I fix it to be able to install R packages (the packages I have tried are texreg and lme4)? Thank you.
Edit: I apologize, I thought I had included this with my post. I am not missing gettext (as per Link error installing Rcpp "library not found for -lintl"), and I followed the instructions to export the LPDFLAGS and CPPFLAGS so that they are linked.
As best I can tell, the problem is the ~/.R/Makevars file, which currently looks like this, where I've commented out things I've added to it based on googling.
CC=/usr/local/Cellar/gcc/9.3.0_1/bin/gcc-9
CXX=/usr/local/Cellar/gcc/9.3.0_1/bin/g++-9
CXX11=/usr/local/Cellar/gcc/9.3.0_1/bin/g++-9
CXX14=/usr/local/Cellar/gcc/9.3.0_1/bin/g++-9
cxx17=/usr/local/cellar/gcc/9.3.0_1/bin/g++-9
cxx1X=/usr/local/cellar/gcc/9.3.0_1/bin/g++-9
LDFLAGS=-L/usr/local/Cellar/gcc/9.3.0_1/lib
#FLIBS=-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0
#CC=/usr/local/clang4/bin/clang
#CXX=/usr/local/clang4/bin/clang++
#CXX1X=/usr/local/clang4/bin/clang++
#CXX98=/usr/local/clang4/bin/clang++
#CXX11=/usr/local/clang4/bin/clang++
#CXX14=/usr/local/clang4/bin/clang++
#CXX17=/usr/local/clang4/bin/clang++
#LDFLAGS=-L/usr/local/clang4/lib
Apparently, I needed to remove all the lines from ~/.R/Makevars and I was able to install lme4. I did get some warnings, but library(lme4) works.
If you're using a mac with an Apple Silicon chip (like the M1), then you can try adding this to ~/.R/Makevars:
CFLAGS=-I/opt/homebrew/include
CPPFLAGS=-I/opt/homebrew/include
CXXFLAGS=-I/opt/homebrew/include
CXX11FLAGS=-I/opt/homebrew/include
LDFLAGS=-L/opt/homebrew/lib
This allows R to find the needed libraries. You will need to first ensure you have the needed compilers and dependencies installed. You can usually do this with brew.

R is using the mingw_32 to compile packages for 64-bit architecture

Periodically – I think whenever I update R – I have problems installing packages from source on my 64-bit Windows machine.
Today I'm trying to install a package using devtools::install_github(). The installation proceeded fine on my laptop, but my not on my desktop, which can install the package under *** arch - i386, but under *** arch - x64, which reports the error message
C:/PROGRA~1/R/R-34~1.4/bin/x64/R.dll: file not recognized: File format not recognized
The command that caused the error is
C:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o PACKAGENAME.dll [...]
I believe that the error is arising because R is using mingw_32 to attempt to compile a 64-bit package. The question is, where can I tell R to use mingw_64? I've already checked all the places that I can recall:
R-3.4.4/etc/x64/Makeconf states
BINPREF ?= c:/Rtools/mingw_64/bin/
My system PATH (verified from within R using Sys.getenv('PATH')) includes mingw_64 ahead of mingw_32.
R must be looking somewhere else to decide which compiler to use... but where?
Via R CMD check not looking for gcc in Rtools directory:
R was looking in C:/Users/MYUSERNAME/Documents/.R/Makevars for the value of BINPREF. Deleting the contents of this file removed the incorrect location.
$RPATH/etc/i386/Makeconf is re-created with each new installation of R, and contains the line
BINPREF ?= c:/Rtools/mingw_32/bin/.
The ?= operator will set the value of BINPREF if it is not already set, as it was in the Makevars file mentioned above. So replacing ?= with = will work until a new version of R is installed and the Makeconf file is overwritten – updating, or uninstalling, R will not modify the Makevars file in the User directory.
If you start digging from devtools::install_github, it will lead you through the following functions:
devtools::install_github
devtools:::install_remotes
devtools:::try_install_remote
devtools:::install_remote
devtools:::install
devtools:::check_build_tools
devtools:::setup_rtools
devtools:::scan_path_for_rtools
And when you run the following code:
devtools:::scan_path_for_rtools(TRUE)
devtools:::setup_rtools(debug=TRUE)
Most likely, it is saying that Rtools is not currently installed. (Yes, a bit counterintuitive given that you already have it installed in C:/Rtools but maybe not registered in registry)
To fix it, you will need to run (which is in essence the solution in Rtools is not being detected from RStudio)
Sys.setenv(PATH=paste0("C:\\Rtools\\bin;", Sys.getenv("PATH")))
devtools:::set_rtools_path(structure(list(path="c:/Rtools/mingw_64/bin", version=3.4), class="rtools"))
devtools:::set_rtools_path(structure(list(path="c:/Rtools/mingw_32/bin", version=3.4), class="rtools"))
Please let me know if this works.
BINPREF ?= c:/Rtools/mingw_64/bin/
remove ? before =

ERROR: compilation failed for package ‘seqminer’

I'm having a problem installing 'seqminer'
Please, help me if anyone recognize this problem or been through this.
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
R version 3.2.5 (2016-04-14) -- "Very, Very Secure Dishes"
R_CPP_interface.cpp: In function ‘SEXPREC* getListElement(SEXP, const char*)’:
R_CPP_interface.cpp:37:8: error: ‘strcmp’ is not a member of ‘std’
R_CPP_interface.cpp:37:8: note: suggested alternative:
/usr/include/string.h:143:12: note: ‘strcmp’
make: *** [R_CPP_interface.o] error 1
ERROR: compilation failed for package ‘seqminer’
* removing ‘/usr/local/lib/R/site-library/seqminer’
* restoring previous ‘/usr/local/lib/R/site-library/seqminer’
The error seems to be related to this issue:
strcmp et. al. not a member of std?
Based on the answer there, possible solutions may include:
install and use an earlier version of gcc (<= 4.1)
download the source, edit R_CPP_interface.cpp to insert #include <cstring>, then install from the local source
I would also file an issue at the project Github repo.

error using R package brms

I would like to use the R package brms, but I get an error that I do not manage to interpret. It might have to do with Rtools, which is however installed on my computer.
This is an example from the brms package:
fit1 <- brm(count ~ log_Age_c + log_Base4_c * Trt_c
+ (1|patient) + (1|visit) + (1|obs),
data = epilepsy, family = poisson(),
prior = c(set_prior("student_t(5,0,10)", class = "b"),
set_prior("cauchy(0,2)", class = "sd")))
And this is the error I get:
Error in compileCode(f, code, language = language, verbose = verbose) :
Compilation ERROR, function(s)/method(s) not created!
c:/Rtools/mingw_64/bin/g++: not found
make: *** [file202834c75e9.o] Error 127
Warning message:
l'exécution de la commande 'make -f "C:/PROGRA~1/R/R-33~1.0/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-33~1.0/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="file202834c75e9.dll" WIN=64 TCLBIN=64 OBJECTS="file202834c75e9.o"' renvoie un statut 2
In addition: Warning message:
running command 'C:/PROGRA~1/R/R-33~1.0/bin/x64/R CMD SHLIB file202834c75e9.cpp 2> file202834c75e9.cpp.err.txt' had status 1
Thanks for your help
Indeed, it is a problem with Rtools. What does system("g++ -v") give you? If it is status 127, Rtools cannot be found by R. Most likely, you haven't checked the box during Rtools installation where you were asked to amend the system path. I suggest that you unintall Rtools and install it again making sure to check the box. Please also verify that you are using the correct version of Rtools compatible with your R version.
I had a similar problem with my installation of rstan. The problem occurred with RTools33. Installing RTools34 seemed to fix the problem, although I now get the following warning:
In find_rtools() :
WARNING: Rtools 3.4 found on the path at c:/Rtools is not compatible with R 3.3.1.
Please download and install Rtools 3.3 from http://cran.r-project.org/bin/windows/Rtools/, remove the incompatible version from your PATH, then run find_rtools().
So far this warning appears benign.
If none of the other answers solve this issue, go into your R distribution and open
R-{version}\etc\x64\Makeconf
and change BINPREF on line 19 to whatever the path to your mingw_64\bin directory is.
To fix this error:" c:/Rtools/mingw_64/bin/g++: not found" I located RBuildTools folder on the C: drive, found the g++ file in the bin folder, copied the mingw_64 folder (or wherever your g++ file is located), created an Rtools folder on C: and pasted the mingw_64 folder. This will create the C:/Rtools/mingw_64/bin/ path you need to compile R code using the stan( ) function.
I followed the rStan wiki here on Windows Configuration.
Also instead of hacking Makevars in c:\ you can create your personal by following the instruction here.
In my %HOM%\.R\Makevars.win64 file I have
CXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function
BINPREF="H:/RTools/mingw_64/bin/"
This resolved my issue.

Resources