我正在尝试使用R版本3.4.0在OS X 10.11.6上安装rJava包:
install.packages("rJava", type = "source")
我收到以下错误:
clang -o libjri.jnilib Rengine.o jri.o Rcallbacks.o Rinit.o globals.o rjava.o -dynamiclib -framework JavaVM -fopenmp -L/usr/local/lib -F/Library/Frameworks/R.framework/.. -framework R -lpcre -llzma -lbz2 -lz -licucore -lm -liconv
clang: error: unsupported option '-fopenmp'
make[2]: *** [libjri.jnilib] Error 1
make[1]: *** [src/JRI.jar] Error 2
make: *** [jri] Error 2
ERROR: compilation failed for package ‘rJava’
据我所知,clang被用作编译器,使用' fopenmp' clang似乎没有支持它。任何人都可以看到解决这个问题的方法,可能会强制使用不同的编译器吗? (注意:我对编译器几乎一无所知)
提前致谢。
答案 0 :(得分:21)
这是因为R 3.4.0是由CRAN编译的llvm-4.0.0(支持OpenMP),但Apple的fork(默认安装在macOS上)不支持OpenMP。有三种解决方案
install.packages(type = "binary")
。~/.R/Makevars
)。SHLIB_OPENMP_CFLAGS
SHLIB_OPENMP_CXXFLAGS
和~/.R/Makevars
醇>
对于2.您可以使用brew install llvm
或brew install gcc --without-multilib
安装编译器,然后您必须将编译器路径添加到~/.R/Makevars
文件。
CC=/usr/local/opt/llvm/bin/clang
CXX=/usr/local/opt/llvm/bin/clang++
# Also potentially CXX11 (for C++11 compiler)
CXX11=/usr/local/opt/llvm/bin/clang++
或gcc
使用(仔细检查gcc可执行文件并且名称正确)
CC=/usr/local/bin/gcc-7
CXX=/usr/local/bin/gcc-7
# Also potentially CXX11 (for C++11 compiler)
CXX11=/usr/local/bin/gcc-7
或者,您可以安装CRAN Provided LLVM 4.0并正确设置Makevars
文件。
对于3.您只需取消设置SHLIB_OPENMP_CFLAGS
SHLIB_OPENMP_CFLAGS=
SHLIB_OPENMP_CXXFLAGS=
有关详细信息,请参阅编写R扩展中的OpenMP support。
请注意,此错误与Java或rJava包无关,因此理想情况下,问题可以重命名为clang: error: unsupported option '-fopenmp'
。
答案 1 :(得分:0)
在终端中运行以下命令也可以修复RStudio中的包下载,您可以毫无问题地运行Rjava或r-app。
brew cask install r-app
brew install homebrew/versions/gcc49 --without-multilib
sudo chown -R $(whoami):admin /usr/local
brew link --overwrite --force gcc49
brew unlink gcc49 && brew link gcc49
brew install llvm
mkdir ~/.R; touch ~/.R/Makevars