安装GitHub上的R包ExclusiveLasso时遇R.h缺失错误的求助
问题
尝试通过以下命令从GitHub安装R包ExclusiveLasso:
install_github("DataSlingers/ExclusiveLasso")
出现编译错误,具体报错信息如下:
* installing *source* package 'ExclusiveLasso' ... ** using staged installation ** libs g++ -std=gnu++11 -I"/include" -DNDEBUG -I'D:/R-4.2.2/library/Rcpp/include' -I'D:/R-4.2.2/library/RcppArmadillo/include' -I"D:/rtools42/x86_64-w64-mingw32.static.posix/include" -O2 -Wall -mfpmath=sse -msse2 -mstackrealign -c ExclusiveLasso.cpp -o ExclusiveLasso.o In file included from D:/R-4.2.2/library/Rcpp/include/RcppCommon.h:30, from D:/R-4.2.2/library/RcppArmadillo/include/RcppArmadillo/interface/RcppArmadilloForward.h:25, from D:/R-4.2.2/library/RcppArmadillo/include/RcppArmadillo.h:29, from ExclusiveLasso.cpp:23: D:/R-4.2.2/library/Rcpp/include/Rcpp/r/headers.h:66:10: fatal error: R.h: No such file or directory 66 | #include <R.h> | ^~~~~ compilation terminated. make: *** [D:/R-4.2.2/etc/x64/Makeconf:260:ExclusiveLasso.o] 错误 1 ERROR: compilation failed for package 'ExclusiveLasso' * removing 'D:/R-4.2.2/library/ExclusiveLasso'
已知R.h位于D:/R-4.2.2/include,尝试手动修改代码中的头文件引用为绝对路径,但涉及文件过多无法彻底解决。希望通过给g++添加头文件搜索路径的方式解决问题,或寻求其他可行方案。
环境信息:
- R version 4.2.2 (2022-10-31 ucrt)
- Platform: x86_64-w64-mingw32/x64 (64-bit)
- 使用VSCode
解决方案
方法一:临时设置编译参数
安装前临时设置环境变量,把R的include目录加入g++的搜索路径,无需修改源码:
Sys.setenv(PKG_CXXFLAGS = "-ID:/R-4.2.2/include") install_github("DataSlingers/ExclusiveLasso")
方法二:检查并修复Rtools配置
- 确认Rtools42已正确添加到系统PATH:在R中运行
Sys.which("g++"),应返回类似D:/rtools42/x86_64-w64-mingw32.static.posix/bin/g++.exe的路径。 - 检查R的
Makeconf文件(路径D:/R-4.2.2/etc/x64/Makeconf),确保其中包含R自身的include路径。正常情况下应有INCPATH = -I$(R_INCLUDE)的配置,若缺失,找到CXXFLAGS相关行,手动添加-ID:/R-4.2.2/include。
方法三:本地手动编译安装
- 从GitHub下载
ExclusiveLasso源码压缩包并解压。 - 在解压目录的
src文件夹下创建/编辑Makevars.win文件,添加:PKG_CXXFLAGS += -ID:/R-4.2.2/include - 在R中切换到解压目录,运行本地安装命令:
install.packages(".", repos = NULL, type = "source")
内容的提问来源于stack exchange,提问作者x5786992
相关产品推荐
相关产品推荐

