2017-04-24 112 views
8

我想有R版本3.4.0在OS X 10.11.6安装rJava包:备用编译器安装的R程序包:错误安装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',它看起来不被铛支持。任何人都可以看到解决这个问题的方法,可能迫使使用不同的编译器。 (注:我对编译器几乎一无所知)

在此先感谢。

回答

11

这是因为RAN 3.4.0由支持OpenMP的llvm-4.0.0编译的,但Apple的fork(默认安装在macOS上)而不是支持OpenMP。有三种解决方案

  1. 使用由CRAN提供的软件包二进制文件,例如, install.packages(type = "binary")
  2. 安装支持OpenMP的编译器,例如gcc或clang,但是您还必须修改个人makevars文件中的变量(~/.R/Makevars)。在~/.R/Makevars

对于2

  • 取消设置SHLIB_OPENMP_CFLAGSSHLIB_OPENMP_CXXFLAGS你可以用brew install clangbrew 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'

  • +0

    任何线索,我的个人makevars文件是? '$ cd〜/ .R/Makevars -bash:cd:/Users/me/.R/Makevars:没有这样的文件或目录' – BLT

    +1

    默认情况下没有一个,你需要创建'〜/ .R /'目录和'Makevars'文件(如果不存在)。 – Jim

    +0

    '从命令行获得'R --quiet -e'install.packages(“rJava”,type =“binary”,repos =“http://cran.us.r-project.org”)'我。 –

    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