注意。该解决方案适用于 Intel 处理器(不适用于 Apple M1 芯片)
这些是我在启用多线程/openMP 的情况下从源安装 data.table 的步骤(最初在https://stackoverflow.com/a/65334247/12957340):
- 重新安装 xcode 命令行工具(即使它说“最新”)
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
- 通过 Homebrew 安装 gcc 和 llvm (Homebrew 安装说明)或者,如果您已经通过 Homebrew 安装了 gcc/llvm,请跳到下一步
# This can take several hours
brew install gcc
brew install llvm
- 通过 Homebrew 安装 gcc 和 llvm 后:
brew cleanup
brew update
brew upgrade
brew reinstall gcc
brew reinstall llvm
- 将一些标头链接到 /usr/local/include
sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/
# You can safely ignore warnings like this:
#ln: /usr/local/include//tcl.h: File exists
#ln: /usr/local/include//tclDecls.h: File exists
#ln: /usr/local/include//tclPlatDecls.h: File exists
#ln: /usr/local/include//tclTomMath.h: File exists
#ln: /usr/local/include//tclTomMathDecls.h: File exists
#ln: /usr/local/include//tk.h: File exists
#ln: /usr/local/include//tkDecls.h: File exists
#ln: /usr/local/include//tkPlatDecls.h: File exists
- 安装GMP库:
brew install gmp
- 创建一个新的
~/.R/Makevars
文件(如果您已经有~/.R/Makevars
文件,将其保存在不同的目录中(远离~/.R/
)) 并在文件中仅包含这些行:
LOC=/usr/local/gfortran
CC=$(LOC)/bin/gcc -fopenmp
CXX=$(LOC)/bin/g++ -fopenmp
CXX11 = $(LOC)/bin/g++ -fopenmp
CFLAGS=-g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe
CXXFLAGS=-g -O3 -Wall -pedantic -std=c++11 -mtune=native -pipe
LDFLAGS=-L$(LOC)/lib -Wl,-rpath,$(LOC)/lib,-L/usr/local/lib
CPPFLAGS=-I$(LOC)/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/usr/local/include
FLIBS=-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin19/10.2.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm
CXX1X=/usr/local/gfortran/bin/g++
CXX98=/usr/local/gfortran/bin/g++
CXX11=/usr/local/gfortran/bin/g++
CXX14=/usr/local/gfortran/bin/g++
CXX17=/usr/local/gfortran/bin/g++
- 从 R/Rstudio 中的源代码编译 data.table
install.packages("data.table", type = "source")
# To check whether it installed correctly, run:
library(data.table)
- 如果你的包无法编译,一些 SO 用户必须安装一个新的 gfortran (回复:https://stackoverflow.com/a/65334247/12957340),您可以从中下载https://github.com/fxcoudert/gfortran-for-macOS/releases