带有Anaconda&的rJava链接器错误licuuc没有针对MacOS Sierra 10.12.4的Anaconda的fopenmp错误 [英] rJava linker error licuuc with Anaconda & fopenmp error without Anaconda for macOS Sierra 10.12.4

查看:89
本文介绍了带有Anaconda&的rJava链接器错误licuuc没有针对MacOS Sierra 10.12.4的Anaconda的fopenmp错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在macOS Sierra 10.12.4上安装rJava.根据R CMD javareconf|grep version,我当前的Java版本是Java version: 1.8.0_131.我已经用Homebrew的木桶安装了Java.

I want to install rJava on macOS Sierra 10.12.4. My current Java version is Java version: 1.8.0_131, according to R CMD javareconf|grep version. I have installed Java with Homebrew's cask.

我的Java运行以下

$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

我的R版本是

R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin11.4.2 (64-bit)

R Java配置运行如下

R Java config runs such that

$ R CMD javareconf
Java interpreter : /usr/bin/java
Java version     : 1.8.0_131
Java home path   : /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Non-system Java on macOS

trying to compile and link a JNI program 
detected JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
During startup - Warning messages:
1: Setting LC_COLLATE failed, using "C" 
2: Setting LC_TIME failed, using "C" 
3: Setting LC_MESSAGES failed, using "C" 
4: Setting LC_MONETARY failed, using "C" 
clang -I/Volumes/osx/201705_anaconda/anaconda/lib/R/include -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include/darwin -I/Volumes/osx/201705_anaconda/anaconda/include    -fPIC  -I/Volumes/osx/201705_anaconda/anaconda/include  -c conftest.c -o conftest.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Volumes/osx/201705_anaconda/anaconda/lib/R/lib -arch x86_64 -L/Volumes/osx/201705_anaconda/anaconda/lib -lgfortran -L/Volumes/osx/201705_anaconda/anaconda -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server -ljvm -L/Volumes/osx/201705_anaconda/anaconda/lib/R/lib -lR -lintl -liconv -lc -Wl,-framework -Wl,CoreFoundation


JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Java library path: $(JAVA_HOME)/lib/server
JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin
JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
Updating Java configuration in /Volumes/osx/201705_anaconda/anaconda/lib/R
Done.

它似乎已按照此处进行了正确设置并且此SO线程无法编译JNI程序rJava ,因此JDK看起来像是正确安装.

which looks to be properly set-up as guided here and this SO thread unable to compile JNI program rJava so the JDK looks to be correctly installed.

我通过命令install.packages("rJava")

checking Java support in R... present:
interpreter : '/usr/bin/java'
archiver    : '/usr/bin/jar'
compiler    : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags   : '-I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/../include/darwin'
java libs   : '-L/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server -ljvm'
...
ld: library not found for -licuuc
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libjri.jnilib] Error 1
make[1]: *** [src/JRI.jar] Error 2
make: *** [jri] Error 2
ERROR: compilation failed for package ‘rJava’

尽管有Java来源,我也遇到了相同的错误:官方的JDK和Homebrew的Java返回了相同的链接器/库错误.

I have got the same error despite Java sources: official JDK and Homebrew's Java return the same linker/library error.

旧线程

  1. 在macOS上安装rJava Sierra 10.12.1:链接器错误licuuc :使用MacPorts的解决方案候选对象

  1. Install rJava on macOS Sierra 10.12.1: linker error licuuc: a solution candidate with MacPorts

在MacOS Sierra 10.12上的rJava. 15:不支持的选项fopenmp

rJava加载错误升级"后的RStudio/R到OSX Yosemite

在macOS上安装xlsx和rJava小牛10.9.5

我已尝试解决的问题

  1. options("java.home")返回NULL,因此options("java.home"="/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/")按照此处

  1. options("java.home") returns NULL so options("java.home"="/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/") as guided by here

安装了Homebrew的Java,并替换为Oracele的Java和JDK 指导下进行的sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")',但还是相同的licuuc library not found错误.

Unistalled Homebrew's Java and replaced it with Oracele's Java and JDK here: the same licuuc library/linker error persists. I tried sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")' guided by this but the same licuuc library not found error.

将macOS从El Capitan 10.11.6更新到了Sierra 10.12.4,但仍然存在相同的licuuc库/链接器错误.

Updated macOS from El Capitan 10.11.6 to Sierra 10.12.4 but the same licuuc library/linker error persists.

运行时没有sudo,缺少javac(遵循此处和此

Running without sudo, javac missing (following this here and this here). This error may be easiest to fix with pointing the javac directory there to /usr/bin/javac but better solution? When I run it with sudo, I got the same licuuc error.

R CMD javareconf -e LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LD_LIBRARY_PATH

Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'

Unable to locate an executable at "/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/javac"
(-1)
    make[2]: *** [org/rosuda/JRI/Rengine.class] Error 2
    make[1]: *** [src/JRI.jar] Error 2
    make: *** [jri] Error 2
    ERROR: compilation failed for package ‘rJava’

  • 在删除Anaconda conda install anaconda-clean; anaconda-clean --yes; rm -rf ~/anaconda之后,请在此处进行指导,并用桶安装R,以使brew cask install r-app; sudo R CMD javareconf; Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'出现新错误

  • After removal of Anaconda conda install anaconda-clean; anaconda-clean --yes; rm -rf ~/anaconda, guided here, and installing R with cask such that brew cask install r-app; sudo R CMD javareconf; Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")' so getting a new error

    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’
    

  • 在没有Anaconda的情况下会导致此错误的formp的原因是什么?

    推荐答案

    我以两种方式提供解决方案:Anaconda和Brew方法.我建议您使用Brew解决方案.在这两种情况下,我都安装了Oracle的JDK,如果这样做,请记住使用sudo R CMD javareconf为R重新配置Java.

    I provide the solution in two ways: Anaconda and the Brew way. I suggest you to use the Brew solution. In both cases, I have Oracle's JDK installed and if you do this, remember reconfigure Java for R with sudo R CMD javareconf.

    Anaconda(解决licuuc错误的方法)

    发生了类似的链接器错误这里.蟒蛇路径使事情变得混乱

    A similar linker error occurred here. The anaconda path messes things up as

    $ R CMD config --ldflags
      -L/Users/osx/anaconda3/lib/R/lib -lR -lpcre -llzma -lbz2 -lz -lm -liconv -licuuc -licui18n
    

    因此请从~/.bash_profile

    export PATH="/Users/osx/anaconda3/bin:$PATH" #Removed to install rJava
    

    所以我们应该得到类似的东西

    so we should get something like

    $ R CMD config --ldflags
      -F/Library/Frameworks/R.framework/.. -framework R -lpcre -llzma -lbz2 -lz -licucore -lm -liconv
    

    ,此后甚至可以通过Anaconda与

    and after this rJava can be installed even with Anaconda with

    sudo R CMD javareconf 
    Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
    

    恭喜!

    酿造(解决fopenmp错误)

    您的R安装应使用Homebrew酒桶完成,

    Your R installation should be done with Homebrew cask such that

    brew cask install r-app
    

    brew的r软件包不足以实现此目的.很快,forenmp问题在于编译器没有该标志,因此我们必须重新编译该编译器. 此处对此方法进行了更详细的说明.问题中的问题在于3.3.* R和gcc解决方案的使用方式

    where brew's r package is not enough for this. Shortly, the forenmp problem is in the compiler not having the flag so we have to recompile the compiler. This solution is explained more thoroughly here. The problem in the question is for 3.3.* R and gcc solution used such that

    #xcode-select --install #if Xcode commandline tools not installed
    brew install homebrew/versions/gcc49 --without-multilib #Long ~70min compiling...
    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
    
    echo "VER=-4.9 
    CC=gcc$(VER)
    CXX=g++$(VER)
    CXX1X=g++$(VER)
    CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
    CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
    FLIBS=-L/usr/local/Cellar/gcc/4.9.3/lib/gcc/4.9" > ~/.R/Makevars
    

    现在

    sudo R CMD javareconf 
    Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
    

    现在rJava正在工作!

    由于类似的问题,下面的解决方案也在下面提到

    1. 在macOS上安装rJava Sierra 10.12.1:链接器错误licuuc

    在MacOS Sierra 10.12上的rJava. 15:不支持的选项fopenmp

    这篇关于带有Anaconda&的rJava链接器错误licuuc没有针对MacOS Sierra 10.12.4的Anaconda的fopenmp错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆