从源码安装RcppArmadillo时提示'RcppArmadillo.h'文件未找到
解决RcppArmadillo 0.8.500.0编译时找不到头文件的问题
针对你在MacOS High Sierra + R 3.5.0环境下升级RcppArmadillo遇到的'RcppArmadillo.h' file not found错误,结合你的环境配置,给出以下几个可行的解决步骤:
1. 清理ccache编译缓存
你使用了ccache加速编译,旧版本的编译缓存可能保留了错误的头文件路径,导致新版本无法正确定位头文件。执行以下命令清理缓存:
ccache -C
清理完成后,关闭所有R/RStudio实例,重新打开后再尝试执行install.packages("RcppArmadillo")。
2. 修正.R/Makevars的配置格式
查看你提供的Makevars内容,发现变量赋值时等号后存在多余空格(比如CXX= ccache /usr/local/clang6/bin/clang++ -Wall),这会导致R的编译系统无法正确解析编译器路径。请修改所有变量的赋值格式,去掉等号后的空格:
F77 = /usr/local/gfortran/bin/gfortran FC = $F77 FLIBS=-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin16/6.3.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm CC=ccache /usr/local/clang6/bin/clang SHLIB_CXXLD=ccache /usr/local/clang6/bin/clang++ CXX=ccache /usr/local/clang6/bin/clang++ -Wall CXX1X=ccache /usr/local/clang6/bin/clang++ CXX98=ccache /usr/local/clang6/bin/clang++ CXX11=ccache /usr/local/clang6/bin/clang++ CXX14=ccache /usr/local/clang6/bin/clang++ CXX17=ccache /usr/local/clang6/bin/clang++ LDFLAGS=-L/usr/local/clang6/lib
保存修改后,重启R再尝试安装。
3. 先重装Rcpp再安装RcppArmadillo
RcppArmadillo依赖Rcpp提供的编译配置,可能旧版Rcpp的配置与新版本RcppArmadillo不兼容。先重装Rcpp:
install.packages("Rcpp")
完成后再执行RcppArmadillo的安装命令。
4. 手动验证头文件路径并安装
如果以上步骤都无效,可以手动确认头文件是否存在,并指定路径安装:
- 在R中执行
.libPaths()获取你的R库路径,比如/Library/Frameworks/R.framework/Versions/3.5/Resources/library - 下载RcppArmadillo的源码包,解压后进入目录,将
inst/include下的所有文件复制到上述库路径下的RcppArmadillo/include目录中 - 回到R中,尝试重新安装或编译你的代码
5. 检查权限问题
如果R没有写入系统库目录的权限,可能导致头文件无法正确安装。可以尝试安装到个人用户库:
install.packages("RcppArmadillo", lib = "~/R/library")
之后在R中执行.libPaths(c("~/R/library", .libPaths()))将个人库加入路径,再使用包。
内容的提问来源于stack exchange,提问作者Lambda Moses
相关产品推荐
相关产品推荐

