在 Cygwin 下 Windows 构建 R 包
Build R package in Windows under Cygwin
当尝试在 Cygwin 下的 Win10 上将 R 包 dplyr 更新为 0.7.0 时(windows dplyr 0.7.0 的二进制文件不可用。我的 R 安装也不在 Cygwin 下,我的 R 安装来自二进制)。然而当我 运行
R CMD INSTALL dplyr_0.7.0.tar.gz
看到以下错误:
* installing to library 'C:/Program Files/R/R-3.4.0/library'
* installing *source* package 'dplyr' ...
** package 'dplyr' successfully unpacked and MD5 sums checked
** libs
c:/Rtools/mingw_64/bin/g++ -I"C:/PROGRA~1/R/R-34~1.0/include" -DNDEBUG -I../inst/include -DCOMPILING_DPLYR -DRCPP_USING_UTF8_ERROR_STRING -I"C:/Program Files/R/R-3.4.0/library/Rcpp/include" -I"C:/Program Files/R/R-3.4.0/library/BH/include" -I"C:/Program Files/R/R-3.4.0/library/bindrcpp/include" -I"C:/Program Files/R/R-3.4.0/library/plogr/include" -I"d:/Compiler/gcc-4.9.3/local330/include" -O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o
/bin/sh: c:/Rtools/mingw_64/bin/g++: No such file or directory
make: *** [C:/PROGRA~1/R/R-34~1.0/etc/x64/Makeconf:215: RcppExports.o] Error 127
Warning: running command 'make -f "Makevars.win" -f "C:/PROGRA~1/R/R -34~1.0/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-34~1.0/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="dplyr.dll" WIN=64 TCLBIN=64 OBJECTS="RcppExports.o address.o api.o arrange.o between.o bind.o combine_variables.o distinct.o filter.o group_by.o group_indices.o hybrid.o hybrid_count.o hybrid_debug.o hybrid_in.o hybrid_minmax.o hybrid_nth.o hybrid_offset.o hybrid_simple.o hybrid_window.o init.o init_register.o join.o join_exports.o mutate.o rlang-export.o select.o set.o slice.o summarise.o test.o utils.o window.o"' had status 2
ERROR: compilation failed for package 'dplyr'
* removing 'C:/Program Files/R/R-3.4.0/library/dplyr'
* restoring previous 'C:/Program Files/R/R-3.4.0/library/dplyr'
错误的原因是 R(使用 Rtools 库)在 c:/Rtools/mingw_64/bin/ 而不是在 Cygwin /usr/bin/
下寻找 g++/gcc 编译器
有没有办法改变 R CMD INSTALL 的这种默认行为,这将允许在 Windows 中从源构建 R 包而不使用 Rtoools?
谢谢
PS。我认为这 post
是相关的,但 R 似乎安装在 Cygwin 下,我的情况不是这样。
PPS。看来我需要更改
下定义的变量
R CMD config
有什么想法吗?
我不确定最好的解决方案是什么。但是您当然可以通过修改 $(R_HOME)/etc/x64/Makeconf
中的 BINPREF 来解决这个问题。 c:/Rtools/mingw_64/bin/
是默认值。
PS:您几乎可以肯定可以使用cygwin编译器构建R包,只要只涉及C链接。我在 Visual Studio 下建造了一些我的。
当尝试在 Cygwin 下的 Win10 上将 R 包 dplyr 更新为 0.7.0 时(windows dplyr 0.7.0 的二进制文件不可用。我的 R 安装也不在 Cygwin 下,我的 R 安装来自二进制)。然而当我 运行
R CMD INSTALL dplyr_0.7.0.tar.gz
看到以下错误:
* installing to library 'C:/Program Files/R/R-3.4.0/library'
* installing *source* package 'dplyr' ...
** package 'dplyr' successfully unpacked and MD5 sums checked
** libs
c:/Rtools/mingw_64/bin/g++ -I"C:/PROGRA~1/R/R-34~1.0/include" -DNDEBUG -I../inst/include -DCOMPILING_DPLYR -DRCPP_USING_UTF8_ERROR_STRING -I"C:/Program Files/R/R-3.4.0/library/Rcpp/include" -I"C:/Program Files/R/R-3.4.0/library/BH/include" -I"C:/Program Files/R/R-3.4.0/library/bindrcpp/include" -I"C:/Program Files/R/R-3.4.0/library/plogr/include" -I"d:/Compiler/gcc-4.9.3/local330/include" -O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o
/bin/sh: c:/Rtools/mingw_64/bin/g++: No such file or directory
make: *** [C:/PROGRA~1/R/R-34~1.0/etc/x64/Makeconf:215: RcppExports.o] Error 127
Warning: running command 'make -f "Makevars.win" -f "C:/PROGRA~1/R/R -34~1.0/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-34~1.0/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="dplyr.dll" WIN=64 TCLBIN=64 OBJECTS="RcppExports.o address.o api.o arrange.o between.o bind.o combine_variables.o distinct.o filter.o group_by.o group_indices.o hybrid.o hybrid_count.o hybrid_debug.o hybrid_in.o hybrid_minmax.o hybrid_nth.o hybrid_offset.o hybrid_simple.o hybrid_window.o init.o init_register.o join.o join_exports.o mutate.o rlang-export.o select.o set.o slice.o summarise.o test.o utils.o window.o"' had status 2
ERROR: compilation failed for package 'dplyr'
* removing 'C:/Program Files/R/R-3.4.0/library/dplyr'
* restoring previous 'C:/Program Files/R/R-3.4.0/library/dplyr'
错误的原因是 R(使用 Rtools 库)在 c:/Rtools/mingw_64/bin/ 而不是在 Cygwin /usr/bin/
下寻找 g++/gcc 编译器有没有办法改变 R CMD INSTALL 的这种默认行为,这将允许在 Windows 中从源构建 R 包而不使用 Rtoools?
谢谢
PS。我认为这 post
PPS。看来我需要更改
下定义的变量R CMD config
有什么想法吗?
我不确定最好的解决方案是什么。但是您当然可以通过修改 $(R_HOME)/etc/x64/Makeconf
中的 BINPREF 来解决这个问题。 c:/Rtools/mingw_64/bin/
是默认值。
PS:您几乎可以肯定可以使用cygwin编译器构建R包,只要只涉及C链接。我在 Visual Studio 下建造了一些我的。