【问题标题】:How to install RcppArmadillo on Apple Silicon (M1) Macs如何在 Apple Silicon (M1) Mac 上安装 RcppArmadillo
【发布时间】:2021-03-26 12:49:14
【问题描述】:

我一直在尝试许多不同的方法来安装 RcppArmadillo,但我没有得到它的工作

install.packages(c('Rcpp'))
Sys.setenv("PKG_CXXFLAGS"="-std=c++11")
install.packages(c('RcppArmadillo'),type = "source")

它给了我这个错误:

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

显然,我没有x86_64-apple-darwin18/8.2.0,因为我安装了gfortran for the apple silicon architecture

Mac 版本:

macOS Big Sur 
11.2.3
Apple M1

R 版本:

version
               _                           
platform       x86_64-apple-darwin17.0     
arch           x86_64                      
os             darwin17.0                  
system         x86_64, darwin17.0          
status                                     
major          4                           
minor          0.4                         
year           2021                        
month          02                          
day            15                          
svn rev        80002                       
language       R                           
version.string R version 4.0.4 (2021-02-15)
nickname       Lost Library Book           

【问题讨论】:

  • 我无法为您解答,但一直听说 R 的 M1 设置在使用 Fortran 时仍然存在问题——这就是我所知道的。我建议检查 r-sig-mac 邮件列表。
  • 好的,我发现修改 Makeconf 可能是一个解决方案。 stackoverflow.com/questions/23916219/…
  • 将 FLIBS 更改为 FLIBS = -L/usr/local/gfortran/lib/gcc/aarch64-apple-darwin20.2.0/11.0.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm 时没有警告,但我仍然收到库 -lquadmath 未找到的错误
  • 我在原生 M1 上安装 RcppArmadillo 没有问题。我使用了这些安装说明:r-bloggers.com/2021/02/fully-native-m1-apple-silicon-r-setup。从头开始重新安装可能会更快,而不是进行故障排除。 gfortran/opt/R/arm64/bin 中,我只需按照说明将其添加到路径中。

标签: r macos rcpp apple-m1 rcpparmadillo


【解决方案1】:

我想我发现了一个问题。首先,我遵循本教程:R COMPILER TOOLS FOR RCPP ON MACOS
完成后,它给了我几乎与您在帖子中提到的相同的错误:

ld: warning: directory not found for option '-L/opt/R/arm64/gfortran/.....'
ld: library not found for -lgfortran clang: error: linker command failed
with exit code 1 (use -v to see invocation)

看来,R 正在/opt/R/arm64 文件夹中寻找 gfortran。
在教程中,它表明 gfortran 安装在 /usr/local/gfortran 文件夹中。
我在/opt/R/arm64 中创建了一个符号链接,它使用命令
ln -s /usr/local/gfortran /opt/R/arm64

引用/usr/local/gfortran

【讨论】:

    【解决方案2】:

    可以将~/.R/Makevars 中的FLIBS 设置为以下选项之一

    # homebrew gfortran
    FLIBS=-L/opt/homebrew/opt/gfortran/lib
    
    # gfortran included in R
    FLIBS=-L/opt/R/arm64/gfortran/lib
    

    此外,可能还想将F77FC 定义为

    F77     = /opt/R/arm64/gfortran/bin/gfortran
    FC      = /opt/R/arm64/gfortran/bin/gfortran
    

    要验证,请尝试安装 glmnet 包,现在应该会成功。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2021-03-11
      • 2022-01-06
      • 2021-04-21
      • 2021-04-03
      • 2021-03-02
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多