Following up library dependency in R package compilation
I had not anticipated to encounter this problem again so soon, but I did when I was installing yet another package on my own laptop.
ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0' ld: warning: directory not found for option '-L/usr/local/gfortran/lib' ld: library not found for -lgfortran clang: error: linker command failed with exit code 1 (use -v to see invocation)
This prompted to think again about the issues
I grunted about the other
Back then, I could not install some packages because R can not locate
libgfortran during package compilation, and my work-around was install
via Conda, which seems to provide compiled binary version.
What tells R where to find compilers and libraries?
I (belatedly) find out R have a configuration file in
/Library/Frameworks/R.framework/Resources/etc/Makeconf, and sometimes
when Conda/Homebrew or other package managers install new compilers or
libraries, it might not get updated.
This is exactly the source of my problem. It is suggested
file in the same
which would then be read with a higher priority, but it somehow does not
work on my laptop.
As a result, I commented out the original setting in
Makeconf and installed
homebrew. Now, I have
gfortran incorporated into the homebrew
gcc, which could also replace
clang from Xcode to support
The changes in my
Makeconf file as a result is:
# Use Homebrew gcc for OpenMP support CC = gcc-8 # CC = clang # Original setting ... # Use Homebrew gcc for OpenMP support CXX = g++-8 # CXX = clang++ # Original setting ... # Ask R to find the Homebrew copy of gcc FLIBS = -L/usr/local/lib/gcc/8/gcc/x86_64-apple-darwin17.5.0/8.1.0 -L/usr/local/lib/gcc/8 -lgfortran -lquadmath -lm # The original one # FLIBS = -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm
This fixed my problem of R package compilation.
# SessionInfo at the time of writing > sessionInfo() R version 3.4.4 (2018-03-15) Platform: x86_64-apple-darwin15.6.0 (64-bit) Running under: macOS High Sierra 10.13.4 Matrix products: default BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib locale:  en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages:  stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached):  compiler_3.4.4 tools_3.4.4 yaml_2.1.19