R v4.3.2安装RcppArrayFire包失败求助:configure脚本配置问题
在R v4.3.2中安装RcppArrayFire包的问题
RcppArrayFire是一款用于导入ArrayFire库的R包,ArrayFire是支持CPU/Cuda/OpenCL后端的C/C++并行计算封装库。由于R没有原生或同类第三方库替代,我需要在较新版本的R v4.3.2中安装这款2019年开发的包。
软件配置
- 已安装R v4.3.2及Rtools 43,devtools、Rcpp、drat包可正常使用
- 已安装ArrayFire v3.6.1并配置好系统环境变量,可正常运行
- 操作系统:Windows 7 SP1(因软件依赖无法升级)
尝试的安装步骤及错误
按照RcppArrayFire的仓库提供的方法,加载devtools、Rcpp、drat库后执行以下命令:
drat::addRepo("daqana") install.packages("RcppArrayFire")
执行后出现如下错误:
Warning: unable to access index for repository https://daqana.github.io/drat/bin/windows/contrib/4.3: cannot open URL 'https://daqana.github.io/drat/bin/windows/contrib/4.3/PACKAGES' Package which is only available in source form, and may need compilation of C/C++/Fortran: ‘RcppArrayFire’ installing the source package ‘RcppArrayFire’ trying URL 'https://daqana.github.io/drat/src/contrib/RcppArrayFire_0.1.0.tar.gz' Content type 'application/gzip' length 62912 bytes (61 KB) downloaded 61 KB * installing *source* package 'RcppArrayFire' ... ** using staged installation ********************************************** WARNING: this package has a configure script It probably needs manual configuration ********************************************** ** libs using C++ compiler: 'G__~1.EXE (GCC) 12.3.0' using C++11 g++ -std=gnu++11 -I"C:/R/R-43~1.2/include" -DNDEBUG -I'C:/R/R-4.3.2/library/Rcpp/include' -I"C:/Rtools43/x86_64-w64-mingw32.static.posix/include" -O2 -Wall -mfpmath=sse -msse2 -mstackrealign -c RcppArrayFire.cpp -o RcppArrayFire.o RcppArrayFire.cpp:23:10: fatal error: RcppArrayFire.h: No such file or directory 23 | #include <RcppArrayFire.h> | ^~~~~~~~~~~~~~~~~ compilation terminated. make: *** [C:/R/R-43~1.2/etc/x64/Makeconf:272: RcppArrayFire.o] Error 1 ERROR: compilation failed for package 'RcppArrayFire' * removing 'C:/R/R-4.3.2/library/RcppArrayFire' The downloaded source packages are in ‘C:\Users\User\AppData\Local\Temp\RtmpUtJFAZ\downloaded_packages’ Warning message: In install.packages("RcppArrayFire") : installation of package ‘RcppArrayFire’ had non-zero exit status
核心错误是g++编译器无法找到RcppArrayFire.h头文件,已确认源码压缩包中CPP文件位于src文件夹,头文件位于include文件夹。
已尝试的解决方法
- 手动修改头文件路径:修改CPP文件中的
#include行,添加头文件绝对路径,但需要修改RcppArrayFire及ArrayFire相关的数十处引用,后续编译仍出现大量类型导出错误。 - 指定ArrayFire路径:按照仓库说明执行命令:
无效后换成Windows下的路径install.packages("RcppArrayFire", configure.args = "--with-arrayfire=/opt/arrayfire")--with-arrayfire=C:/Program Files/ArrayFire/v3/,问题依旧。 - 本地源码安装:将源码解压到
C:\R\R local repository src\RcppArrayFire,执行以下命令:
仍未成功。install("C:/R/R local repository src/RcppArrayFire") # 或指定ArrayFire路径 install("C:/R/R local repository src/RcppArrayFire", configure.args = "--with-arrayfire=C:/Program Files/ArrayFire/v3/")
求助需求
请指出我操作中的错误或遗漏的解决步骤,尤其是如何正确配置包中的configure脚本,避免手动修改源码。
内容的提问来源于stack exchange,提问作者Constant P
相关产品推荐
相关产品推荐

