RcppArmadillo:在Mac上安装程序包时出错

RcppArmadillo:在Mac上安装程序包时出错,r,rcpp,R,Rcpp,我有一个R包,我正试图安装在MAC操作系统(约塞米蒂),我得到了一个链接器的问题。这就是我得到的错误 clang++ -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o File1.so F

我有一个R包,我正试图安装在MAC操作系统(约塞米蒂),我得到了一个链接器的问题。这就是我得到的错误

clang++ -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o File1.so File2.o File3.o File4.o RcppExports.o Utils.o -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2 -lgfortran -lquadmath -lm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation

ld: warning: directory not found for option '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'
ld: library not found for -lgfortran
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mypackage.so] Error 1
ERROR: compilation failed for package ‘mypackage’
我的
Makevars
文件包含:

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
说明中
,我有:

Depends:
    R (>= 3.2.0),
    Rcpp,
    RcppArmadillo
LinkingTo: Rcpp, RcppArmadillo
#' @importFrom Rcpp evalCpp
#' @import RcppArmadillo
#' @useDynLib mypackage
NULL
R/help.R
中,我有:

Depends:
    R (>= 3.2.0),
    Rcpp,
    RcppArmadillo
LinkingTo: Rcpp, RcppArmadillo
#' @importFrom Rcpp evalCpp
#' @import RcppArmadillo
#' @useDynLib mypackage
NULL
这与此问题不同,因为我已经将犰狳依赖项包含在头文件中,该头文件正由其他
.cpp
文件导入:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <Rmath.h>
#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]
#包括
#包括
#包括
#包括
#包括
//[[Rcpp::depends(RcppArmadillo)]]
我错过什么了吗?是否应修改makefile?

修复:

轻松修复

/Applications/Utilities/

终端中键入以下内容

curl -O http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2
sudo tar fvxz gfortran-4.8.2-darwin13.tar.bz2 -C /
更耗时:

使用
homebrew
macports
获取包含
gfortran
gcc
。更改
~/.R/Makevars
。(有关使用
自制
安装gfortran的更多详细信息,请参阅openmp帖子)

见:


  • @nrussel的可能副本我不这么认为,我已经包含了RcppArmadillo依赖项。IIRC当我遇到类似问题时,我通过安装research.att中的gfortran解决了它,请参阅Rcpp常见问题解答。我最近进行了更新和扩展。@Cauchy No我指的是-lgfortran的
    ld:library未找到错误。在常见问题解答中,“虽然gfortran是作为gcc的一部分分发的,因此默认情况下在大多数Linux发行版上可用,但它不是作为Apple的命令行工具分发的。因此,不幸的是,您需要自己安装gfortran及其相关库。”