首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从源安装RcppArmadillo时找不到'RcppArmadillo.h‘文件

从源安装RcppArmadillo时找不到'RcppArmadillo.h‘文件
EN

Stack Overflow用户
提问于 2018-05-24 09:22:04
回答 2查看 1.1K关注 0票数 0

RcppArmadillo 0.8.400.0.0在我的电脑上运行良好,来自sourceCpp和cxxfunction。现在我想升级到0.8.500.0,它需要从源代码编译。然后我得到了错误

代码语言:javascript
复制
ccache /usr/local/clang6/bin/clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.5/Resources/library/Rcpp/include" -I/usr/local/include  -I/Applications/CPLEX_Studio128/cplex/include -I/Applications/CPLEX_Studio128/concert/include -DIL_STD -fPIC  -Wall -g -O2 -c RcppArmadillo.cpp -o RcppArmadillo.o
RcppArmadillo.cpp:22:10: fatal error: 'RcppArmadillo.h' file not found
#include <RcppArmadillo.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.

无论我是在RStudio中运行install.packages("RcppArmadillo"),还是在RStudio外部的R控制台中运行,都会出现此错误。我的编译器是clang4,安装RcppParallel或使用RcppArmadillo和RcppParallel编译我自己的Rcpp代码都没有问题。R版本: 3.5.0,MacOS高山。

编辑:我看了https://github.com/RcppCore/RcppArmadillo/issues/143,这是非常相关的。我确实安装了clang6和gfortran6.1,它们都是从CRAN网站下载的。我还更改了.R/Makevars文件以反映对clang6的更改。我还按照建议安装了ccache,以加快编译速度。这是我的Makevars

代码语言:javascript
复制
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控制台的输出中,我可以看出clang6用于编译。我还找到了下载的RcppArmadillo压缩包,将其解压缩,然后从命令行运行./configure。这里似乎没有什么问题;没有生成config.log文件。这似乎不是一个配置问题。然后,我仍然得到完全相同的错误,当我尝试在R中安装包,配置后,在libs中。我也没有收到任何关于-fopenmp的消息。看起来我的问题和GitHub的问题有点不同。

EN

回答 2

Stack Overflow用户

发布于 2018-05-24 10:05:00

R 3.5.x需要clang6并将clang6添加到系统PATH变量中。

步骤:

X从CRAN下载并安装clang-6.0.0.pkg官方包。

X删除您的~/.R/Makevars,因为它可能设置为使用clang4。为此,请打开终端并键入:

代码语言:javascript
复制
sudo rm ~/.R/Makevars

X然后将以下内容添加到~/.bash_profile中:

代码语言:javascript
复制
if [ -d "/usr/local/clang6/bin" ] ; then
    export PATH="/usr/local/clang6/bin:$PATH"
fi

注意:如果您使用的是bash以外的shell,则需要将上述代码添加到相应的文件中,例如,对于zsh add to ~/.zshrc,这并未在官方安装程序中实现。

我应该有几个周期来完成一个新的非官方Rtools安装程序的编写。请参阅:https://github.com/coatless/r-macos-rtools/issues/7

注意:或者,您可以使用以下命令删除单独的路径

代码语言:javascript
复制
sudo vi ~/.R/Makevars

I进入插入模式,删除路径中带有clang4的行,然后按ESC + :wq将更改写入文件。

票数 1
EN

Stack Overflow用户

发布于 2018-07-31 06:23:45

不要紧,这个问题在0.8.600版本中消失了。后来,当我升级到RcppArmadillo 0.9.100.5.0时,这个问题再次出现。不知何故,我只有在从源代码构建时才得到这个错误;我从CRAN网站手动下载了二进制文件,并使用R CMD INSTALL安装了预构建的版本,它工作了;不知何故,R似乎不知道最新版本有可用的二进制文件。

我确实安装了clang6并修改了.R/Makevars以使用clang6,但同样的问题仍然存在;可能是其他原因导致了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50499585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档