【问题标题】:"ld: Warning: directory not found" when attempting to install R package尝试安装 R 包时出现“ld:警告:找不到目录”
【发布时间】:2019-02-17 10:24:39
【问题描述】:

我目前在运行 El Cap 10.11.6 的 Mac 上尝试在 R Studio 中安装“robustbase”包并遇到以下错误:

    ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0'
    ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
    ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0'
    ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
    ld: library not found for -lgfortran
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make: *** [robustbase.so] Error 1
    ERROR: compilation failed for package ‘robustbase’
    * removing ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/robustbase’

我四处寻找可能的解决方案,并在this thread 中看到我可能需要修改 R/makevars 文件。

这是正确的解决方案吗?如果是这样,我在哪里修改这个文件,在我的终端?这超出了我对 R 和代码的基本知识,因此不胜感激。

如果有任何其他信息有帮助,请告诉我!

【问题讨论】:

    标签: r macos compiler-errors package failed-installation


    【解决方案1】:

    您运行的似乎是过时版本的R。您应该安装最新版本。以下内容仅适用于最新版本的R

    您似乎没有安装 Fortran 编译器。您可以在此页面 tools 上从 CRAN 获取它。您可能还需要安装同一页面上提供的 clang6 编译器。

    如果你这样做,你应该添加这个

    /usr/local/clang6/bin 
    

    到 PATH 的开头。您应该检查 /usr/local/bin 是否在您的路径中,以使 gfortran 编译器可访问。

    您还应该将这些行添加到您的~/.R/Makevars

    CC=/usr/local/clang6/bin/clang
    CXX=/usr/local/clang6/bin/clang++
    LDFLAGS =-L/usr/local/clang6/lib
    

    【讨论】:

      【解决方案2】:

      在 macOS 15 Catalina 中,我遇到了类似的错误: ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0'。 那是因为我从另一个安装中复制粘贴了.R/Makevars

      我使用了这个 Makevars 配置的 macOS Catalina 的修复:

      XCBASE=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
      LLVMBASE=/usr/local/opt/llvm
      GETTEXT=/usr/local/opt/gettext
      GCCBASE=/usr/local/opt/gcc
      LIBOMP=/usr/local/opt/libomp
      
      # brew gcc: start
      CC=$(LLVMBASE)/bin/clang
      CXX=$(LLVMBASE)/bin/clang++
      CXX11=$(LLVMBASE)/bin/clang++
      CXX14=$(LLVMBASE)/bin/clang++
      CXX17=$(LLVMBASE)/bin/clang++
      CXX1X=$(LLVMBASE)/bin/clang++
      # brew gcc: end
      
      CPPFLAGS=-isystem "$(LLVMBASE)/include" -isysroot "$(XCBASE)"
      LDFLAGS=-L"$(LLVMBASE)/lib" -L"$(GETTEXT)/lib" --sysroot="$(XCBASE)"
      
      FC=$(GCCBASE)/bin/gfortran
      F77=$(GCCBASE)/bin/gfortran
      
      FLIBS=-L$(GCCBASE)/lib/gcc/9/ -lm
      

      有了这个Makevars,我已经能够从源代码构建这些 R 包:data.tablesfdevtoolsRcppArmadillopsychtmvnsimgower 和许多其他人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-08
        • 2017-12-31
        • 2012-03-16
        • 1970-01-01
        • 2016-06-30
        • 2017-11-07
        • 2020-08-07
        • 1970-01-01
        相关资源
        最近更新 更多