RcppArmadillo 0.8.400.0.0在我的电脑上运行良好,来自sourceCpp和cxxfunction。现在我想升级到0.8.500.0,它需要从源代码编译。然后我得到了错误
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
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的问题有点不同。
发布于 2018-05-24 10:05:00
R 3.5.x需要clang6并将clang6添加到系统PATH变量中。
步骤:
X从CRAN下载并安装clang-6.0.0.pkg官方包。
X删除您的~/.R/Makevars,因为它可能设置为使用clang4。为此,请打开终端并键入:
sudo rm ~/.R/MakevarsX然后将以下内容添加到~/.bash_profile中:
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
注意:或者,您可以使用以下命令删除单独的路径
sudo vi ~/.R/Makevars按I进入插入模式,删除路径中带有clang4的行,然后按ESC + :wq将更改写入文件。
发布于 2018-07-31 06:23:45
不要紧,这个问题在0.8.600版本中消失了。后来,当我升级到RcppArmadillo 0.9.100.5.0时,这个问题再次出现。不知何故,我只有在从源代码构建时才得到这个错误;我从CRAN网站手动下载了二进制文件,并使用R CMD INSTALL安装了预构建的版本,它工作了;不知何故,R似乎不知道最新版本有可用的二进制文件。
我确实安装了clang6并修改了.R/Makevars以使用clang6,但同样的问题仍然存在;可能是其他原因导致了问题。
https://stackoverflow.com/questions/50499585
复制相似问题