RcppCore / RcppArmadillo

Rcpp integration for the Armadillo templated linear algebra library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

compilation failed for package ‘RcppArmadillo’ library not found for -lemutls_w

marioem opened this issue · comments

Hi,

trying to update RcppArmadillo from 0.10.8.1.0 to 0.11.0.0.0, compiling from source on macOS 12.3.1, R 4.1.3, RStudio 2022.02.1 Build 461, but running into this error

installing the source package ‘RcppArmadillo’

trying URL 'https://cran.rstudio.com/src/contrib/RcppArmadillo_0.11.0.0.0.tar.gz'
Content type 'application/x-gzip' length 1376953 bytes (1.3 MB)
==================================================
downloaded 1.3 MB

* installing *source* package ‘RcppArmadillo’ ...
** package ‘RcppArmadillo’ successfully unpacked and MD5 sums checked
** using staged installation
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether clang++ -arch arm64 -std=gnu++14 accepts -g... yes
checking how to run the C++ preprocessor... clang++ -arch arm64 -std=gnu++14 -E
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether clang++ -arch arm64 -std=gnu++14 accepts -g... (cached) yes
checking whether we have a suitable tempdir... /var/folders/pj/2mlkhsg15vqc5h_5t5km__1h0000gp/T
checking whether R CMD SHLIB can already compile programs using OpenMP... no
checking whether g++ version is sufficient... almost
configure: WARNING: Compiler self-identifies as being compliant with GNUC extensions but is not g++.
checking for macOS... found
checking for macOS Apple compiler... not found
checking for clang compiler... found
checking for OpenMP compatible version of clang... not found
configure: WARNING: OpenMP unavailable and turned off.
checking LAPACK_LIBS... R-supplied partial LAPACK found
configure: WARNING: Some complex-valued LAPACK functions may not be available
configure: creating ./config.status
config.status: creating inst/include/RcppArmadilloConfigGenerated.h
config.status: creating src/Makevars
** libs
clang++ -arch arm64 -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I'/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/library/Rcpp/include' -I/opt/R/arm64/include  -I../inst/include  -fPIC  -falign-functions=64 -Wall -g -O2  -c RcppArmadillo.cpp -o RcppArmadillo.o
clang++ -arch arm64 -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I'/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/library/Rcpp/include' -I/opt/R/arm64/include  -I../inst/include  -fPIC  -falign-functions=64 -Wall -g -O2  -c RcppExports.cpp -o RcppExports.o
clang++ -arch arm64 -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I'/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/library/Rcpp/include' -I/opt/R/arm64/include  -I../inst/include  -fPIC  -falign-functions=64 -Wall -g -O2  -c fastLm.cpp -o fastLm.o
clang++ -arch arm64 -std=gnu++11 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/opt/R/arm64/lib -o RcppArmadillo.so RcppArmadillo.o RcppExports.o fastLm.o -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -L/opt/R/arm64/gfortran/lib/gcc/aarch64-apple-darwin20.2.0/11.0.0 -L/opt/R/arm64/gfortran/lib -lgfortran -lemutls_w -lm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: warning: directory not found for option '-L/opt/R/arm64/gfortran/lib/gcc/aarch64-apple-darwin20.2.0/11.0.0'
ld: library not found for -lemutls_w
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [RcppArmadillo.so] Error 1
ERROR: compilation failed for package ‘RcppArmadillo’
* removing ‘/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/library/RcppArmadillo’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/library/RcppArmadillo’
Warning in install.packages :
  installation of package ‘RcppArmadillo’ had non-zero exit status

Internet seems to know nothing about emutls_w. Am I missing something on my side?

BRs,

Mariusz

Look at the end of your linker command (copying):

-L/opt/R/arm64/gfortran/lib -lgfortran -lemutls_w -lm \ ## NB Note emutils_w here
-F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation

The livemutls_w library is something your operating system, or tools, or R, or ... should provide. Check with the relevant docs and HOWTOs. something seems to once again have changed on how one build on macOS. It is not a symbol inside a library (typical linker error) but a more systematic issue. R apparently expects this to be present. We do not influence that line (as RcppArmadillo is famously header-only).

And, as always, note that RcppArmadillo is in good standing at CRAN include macOS:

image

(This still lacks 0.11.0 on some of the macOS builds but it has some too...)