我无法在Windows上从源代码编译包。这个问题似乎与编译步骤中的解决路径有关。根据Rtools4安装页面中的示例,我得到了如下错误:
> install.packages("jsonlite", type = "source")
trying URL 'https://cran.rstudio.com/src/contrib/jsonlite_1.7.3.tar.gz'
Content type 'application/x-gzip' length 1051573 bytes (1.0 MB)
downloaded 1.0 MB
* installing *source* package 'jsonlite' ...
** package 'jsonlite' successfully unpacked and MD5 sums checked
** using staged installation
** libs
*** arch - i386
C:Rtoolsmingw_64gcc -I"C:/Users/<username>/DOCUME~1/R/R-41~1.2/include" -DNDEBUG -Iyajl/api -D__USE_MINGW_ANSI_STDIO -O2 -Wall -std=gnu99 -mfpmath=sse -msse2 -mstackrealign -c base64.c -o base64.o
sh: line 1: C:Rtoolsmingw_64gcc: command not found
make: *** [C:/Users/<username>/DOCUME~1/R/R-41~1.2/etc/i386/Makeconf:238: base64.o] Error 127
ERROR: compilation failed for package 'jsonlite'
* removing 'C:/Users/<username>/Documents/R/R-4.1.2/library/jsonlite'
* restoring previous 'C:/Users/<username>/Documents/R/R-4.1.2/library/jsonlite'
Warning in install.packages :
installation of package ‘jsonlite’ had non-zero exit status
我觉得很奇怪,在以sh:
开头的行中没有文件分隔符。应该有路径分隔符,但对gcc
的调用似乎缺少它们。有什么地方我可以纠正这条路吗?我还将注意到,我已经确认gcc存在,但它在C:Rtoolsmingw_64bin
中,而不是C:Rtoolsmingw_64
中,因为这一行似乎表明它正在寻找它。我可以确认包含gcc.exe文件的文件夹在我的路径上。任何关于如何确保调用正确的gcc路径的建议都将受到赞赏。
这是在带有RTools 4的R 4.1.2的新安装上。
供参考,
> sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] devtools_2.4.3 usethis_2.1.5
loaded via a namespace (and not attached):
[1] magrittr_2.0.2 pkgload_1.2.4 R6_2.5.1 rlang_1.0.1 fastmap_1.1.0 tools_4.1.2
[7] pkgbuild_1.3.1 sessioninfo_1.2.2 cli_3.1.1 withr_2.4.3 ellipsis_0.3.2 remotes_2.4.2
[13] rprojroot_2.0.2 lifecycle_1.0.1 crayon_1.4.2 brio_1.1.3 processx_3.5.2 purrr_0.3.4
[19] callr_3.7.0 fs_1.5.2 ps_1.6.0 testthat_3.1.2 memoise_2.0.1 glue_1.6.1
[25] cachem_1.0.6 compiler_4.1.2 desc_1.4.0 prettyunits_1.1.1
我不确定这个问题的根本原因是什么,但我可以通过编辑C:Users<username>DocumentsRR-4.1.2etci386
和C:Users<username>DocumentsRR-4.1.2etcx64
上的Makeconf文件来解决这个问题。我在那里做的两个改变是设置
RTOOLS40_HOME ?= c:/rtools
和
BINPREF = "$(RTOOLS40_ROOT)/mingw32/bin/"
如果有人能解释为什么这能解决问题,我会很高兴听到的!