
Building the rSPDE package from source on Mac and Linux
David Bolin and Alexandre B. Simas
Created: 2023-01-17. Last modified: 2025-04-26.
Source:vignettes/build_source.rmd
build_source.rmdBuilding from source
To build rSPDE from source you need to obtain the GitHub version. If you
have all the dependencies (see below how to install some of them), you
can install the rSPDE package from source by running the
following command on R (for the development version):
remotes::install_github("davidbolin/rspde", ref = "devel-src")or, if you want to install the stable version:
remotes::install_github("davidbolin/rspde", ref = "stable-src")Dependencies on Linux
The rSPDE package depends on the Eigen C++
library.
To install Eigen on Ubuntu, run:
To install Eigen on Arch-Linux or Manjaro, run:
To install Eigen on Red Hat, Fedor or CentOS, run:
To install Eigen on OpenSuse, run:
Dependencies on Mac
We can install Eigen on MacOS with Homebrew.
To install Homebrew, run:
To install Eigen using Homebrew, run:
Finally, if after installing eigen with
brew it gives you an error that it cannot find
eigen library, you can create a symbolic link to
eigen’s path as:
You also need to create the following symbolic links related to homebrew:
sudo ln -s $(brew --prefix)/lib /usr/local/brewlib
sudo ln -s $(brew --prefix)/include /usr/local/brewincludeFinally, you need to install gcc-14:
and also create the symbolic links associated to
gcc:
Adjusting the Makefile
If you experience trouble while installing the rSPDE
package, you might need to adjust the Makefile. Before
that, you will need to have rSPDE source files locally on
your computer. To such an end, you can, for instance, close the
rSPDE repository by running the following command on a
terminal:
You can also download the source files.
Now, let us discuss the Makefile. The
Makefile has the following base form:
toInclude = ${R_LIBRARY_DIR}/INLA/include/
obj = cgeneric_mvnormdens.o cgeneric_aux_nonstat.o cgeneric_aux_nonstat_fixed.o \
cgeneric_rspde_stat_frac_model.o cgeneric_rspde_nonstat_general.o \
cgeneric_rspde_stat_general.o cgeneric_rspde_stat_parsim_gen.o \
cgeneric_rspde_stat_parsim_fixed.o cgeneric_rspde_stat_int.o \
cgeneric_rspde_nonstat_gen_fixed.o cgeneric_rspde_nonstat_int.o \
cgeneric_aux_nonstat_int.o
all : rSPDE.so
CC = clang
CXX = clang++
EIGEN_MAC = /usr/local/include/eigen3/
EIGEN_LINUX = /usr/include/eigen3/
flags = -O2 -Wall -Wextra -fpic
%.o: %.c
$(CC) $(flags) -Iinclude -I$(toInclude) -c $^ -o $@
%.o: %.cpp
$(CXX) $(flags) -I$(toInclude) -I$(EIGEN_MAC) -I$(EIGEN_LINUX) -c $^ -o $@
rSPDE.so: $(obj)
$(CXX) -shared *.o -o ../inst/shared/rspde_cgeneric_models.so -lblas -llapack
clean :
rm -f *.o
.PHONY: all cleanAdjusts on Linux
For linux, we recommend to use the gcc-12 and
g++-12 compilers. To this end, one must install
gcc and g++, then change the following lines
on the Makefile:
One should also confirm the location of the Eigen library. The
default location is /usr/include/eigen3/ and is already set
at the Makefile. If you have Eigen installed in a different location,
you will need to update the Makefile by changing the
EIGEN_LINUX variable:
To install gcc and g++ on Ubuntu, run
To install gcc and g++ on Arch-Linux or
Manjaro, run:
To install gcc and g++ on Red Hat, Fedor or
CentOS, run:
To install gcc and g++ on OpenSuse,
run:
Adjusts on Mac
For Mac, especially with intel processors, we found the most stable
compiler to be clang and clang++. Thus, one
must have the following lines on the Makefile:
One should also confirm the location of the Eigen library. The
default location is /usr/local and is already set at the
Makefile.
If you installed Eigen using Homebrew, you can check the location of the Eigen installation by using the following command:
You can, then, update the EIGEN_MAC variable in the
Makefile with the correct path.