2017-04-24 70 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