R 3.6安装RSQLite包因boost头文件缺失编译失败问题求助
RSQLite包安装失败解决方案
报错详情
安装RSQLite包时返回如下编译错误:
install.packages('RSQLite', repos='http://cran.us.r-project.org') Installing package into ‘C:/Users/Ajmal/Documents/R/win-library/3.6’ (as ‘lib’ is unspecified) There is a binary version available but the source version is later: binary source needs_compilation RSQLite 2.2.7 2.2.8 TRUE installing the source package ‘RSQLite’ trying URL 'http://cran.us.r-project.org/src/contrib/RSQLite_2.2.8.tar.gz' Content type 'application/x-gzip' length 3628717 bytes (3.5 MB) downloaded 3.5 MB * installing *source* package 'RSQLite' ... ** package 'RSQLite' successfully unpacked and MD5 sums checked ** using staged installation ** libs *** arch - i386 C:/Rtools/mingw_32/bin/g++ -I"C:/Users/Ajmal/DOCUME~1/R/R-36~1.0/include" -DNDEBUG -I. -Ivendor -DRSQLITE_USE_BUNDLED_SQLITE -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_SOUNDEX -DRCPP_DEFAULT_INCLUDE_CALL=false -DRCPP_USING_UTF8_ERROR_STRING -DBOOST_NO_AUTO_PTR -DSQLITE_MAX_LENGTH=2147483647 -DHAVE_USLEEP=1 -I"C:/Users/Ajmal/Documents/R/R-3.6.0/library/plogr/include" -I"C:/Users/Ajmal/Documents/R/win-library/3.6/Rcpp/include" -O2 -Wall -mtune=generic -c DbColumn.cpp -o DbColumn.o C:/Rtools/mingw_32/bin/g++ -I"C:/Users/Ajmal/DOCUME~1/R/R-36~1.0/include" -DNDEBUG -I. -Ivendor -DRSQLITE_USE_BUNDLED_SQLITE -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_SOUNDEX -DRCPP_DEFAULT_INCLUDE_CALL=false -DRCPP_USING_UTF8_ERROR_STRING -DBOOST_NO_AUTO_PTR -DSQLITE_MAX_LENGTH=2147483647 -DHAVE_USLEEP=1 -I"C:/Users/Ajmal/Documents/R/R-3.6.0/library/plogr/include" -I"C:/Users/Ajmal/Documents/R/win-library/3.6/Rcpp/include" -O2 -Wall -mtune=generic -c DbColumnDataSource.cpp -o DbColumnDataSource.o C:/Rtools/mingw_32/bin/g++ -I"C:/Users/Ajmal/DOCUME~1/R/R-36~1.0/include" -DNDEBUG -I. -Ivendor -DRSQLITE_USE_BUNDLED_SQLITE -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_SOUNDEX -DRCPP_DEFAULT_INCLUDE_CALL=false -DRCPP_USING_UTF8_ERROR_STRING -DBOOST_NO_AUTO_PTR -DSQLITE_MAX_LENGTH=2147483647 -DHAVE_USLEEP=1 -I"C:/Users/Ajmal/Documents/R/R-3.6.0/library/plogr/include" -I"C:/Users/Ajmal/Documents/R/win-library/3.6/Rcpp/include" -O2 -Wall -mtune=generic -c DbColumnDataSourceFactory.cpp -o DbColumnDataSourceFactory.o C:/Rtools/mingw_32/bin/g++ -I"C:/Users/Ajmal/DOCUME~1/R/R-36~1.0/include" -DNDEBUG -I. -Ivendor -DRSQLITE_USE_BUNDLED_SQLITE -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_SOUNDEX -DRCPP_DEFAULT_INCLUDE_CALL=false -DRCPP_USING_UTF8_ERROR_STRING -DBOOST_NO_AUTO_PTR -DSQLITE_MAX_LENGTH=2147483647 -DHAVE_USLEEP=1 -I"C:/Users/Ajmal/Documents/R/R-3.6.0/library/plogr/include" -I"C:/Users/Ajmal/Documents/R/win-library/3.6/Rcpp/include" -O2 -Wall -mtune=generic -c DbColumnStorage.cpp -o DbColumnStorage.o C:/Rtools/mingw_32/bin/g++ -I"C:/Users/Ajmal/DOCUME~1/R/R-36~1.0/include" -DNDEBUG -I. -Ivendor -DRSQLITE_USE_BUNDLED_SQLITE -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_SOUNDEX -DRCPP_DEFAULT_INCLUDE_CALL=false -DRCPP_USING_UTF8_ERROR_STRING -DBOOST_NO_AUTO_PTR -DSQLITE_MAX_LENGTH=2147483647 -DHAVE_USLEEP=1 -I"C:/Users/Ajmal/Documents/R/R-3.6.0/library/plogr/include" -I"C:/Users/Ajmal/Documents/R/win-library/3.6/Rcpp/include" -O2 -Wall -mtune=generic -c DbConnection.cpp -o DbConnection.o C:/Rtools/mingw_32/bin/g++ -I"C:/Users/Ajmal/DOCUME~1/R/R-36~1.0/include" -DNDEBUG -I. -Ivendor -DRSQLITE_USE_BUNDLED_SQLITE -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_SOUNDEX -DRCPP_DEFAULT_INCLUDE_CALL=false -DRCPP_USING_UTF8_ERROR_STRING -DBOOST_NO_AUTO_PTR -DSQLITE_MAX_LENGTH=2147483647 -DHAVE_USLEEP=1 -I"C:/Users/Ajmal/Documents/R/R-3.6.0/library/plogr/include" -I"C:/Users/Ajmal/Documents/R/win-library/3.6/Rcpp/include" -O2 -Wall -mtune=generic -c DbDataFrame.cpp -o DbDataFrame.o In file included from vendor/boost/bind.hpp:29:0, from DbDataFrame.cpp:7: vendor/boost/bind/bind.hpp:1428:40: fatal error: boost/bind/bind_template.hpp: No such file or directory #include <boost/bind/bind_template.hpp> ^ compilation terminated. make: *** [C:/Users/Ajmal/DOCUME~1/R/R-36~1.0/etc/i386/Makeconf:215: DbDataFrame.o] Error 1
最终运行报错提示:
错误:RSQLite包编译失败,正在移除'C:/Users/Ajmal/Documents/R/win-library/3.6/RSQLite'。install.packages警告:安装‘RSQLite’包的进程返回非零退出状态。
解决方法
本次报错的核心原因是RSQLite最新版本源码编译时缺失Boost依赖头文件,可通过以下方式解决:
- 优先选择安装预编译二进制包:不需要编译即可直接使用,执行命令
install.packages('RSQLite', repos='http://cran.us.r-project.org', type = 'binary'),当前环境可用的2.2.7版本功能完整,完全满足常规使用需求。 - 若必须使用2.2.8最新版本,先安装Boost头文件依赖包BH:先运行
install.packages("BH"),等待安装完成后再重新执行RSQLite的安装命令即可。 - 若以上方案都无法生效,可升级R版本至4.0及以上,高版本R对应的CRAN预编译包更新更及时,也能避免旧版本R与Rtools匹配异常导致的编译问题。
内容的提问来源于stack exchange,提问作者AJMAL MUHAMMAD A
相关产品推荐
相关产品推荐

