尝试安装R软件包时出现“ ld:警告:找不到目录”

时间:2018-09-12 17:51:22

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

我当前在运行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和代码的基本了解,因此感谢您的帮助。

让我知道是否有任何其他信息对您有帮助!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在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

我的macOS Catalina修复程序使用了以下Makevars配置:

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.tablesfdevtoolsRcppArmadillo,{{1} },psychtmvnsim等。