为什么 Rstudio 编译器在错误的包含目录中查找 R 头文件?

问题描述 投票:0回答:1

编译器想要包含 R.h 头文件。这些头文件随 R 一起安装,因此显然,包含文件位于 R 安装目录中。

但是在尝试安装包时,编译器正在查看错误的路径(尽管我在环境变量中添加了路径):

g++ -std=gnu++17  -I"/include" -DNDEBUG  -I'~/R/win-library/3.6/sp/include'   -I"C:/rtools43/x86_64-w64-mingw32.static.posix/include" -O2 -Wall  -mfpmath=sse -msse2 -mstackrealign  -c dummy.cc -o dummy.o
gcc  -I"/include" -DNDEBUG  -I'~/R/win-library/3.6/sp/include' -I"C:/rtools43/x86_64-w64-mingw32.static.posix/include" -O2 -Wall  -mfpmath=sse -msse2 -mstackrealign  -c init.c -o init.o
init.c:1:10: fatal error: R.h: No such file or directory
    1 | #include <R.h>
      |          ^~~~~
compilation terminated.

有什么方法可以让编译器查看我的环境变量中指定的包含路径吗?


/s/ 是 rgeos 包的依赖项:

install.packages("~/R/win-library/3.6/rgeos_0.6-4.tar.gz", repos = NULL, type = "source")

我必须将 R 标头从 R 安装目录传输到 /sp/,以便编译器可以找到它们。我不应该这样做...

c++ r gcc header
1个回答
0
投票

原来确实是环境变量和安装系统混乱。 这是我所做的,希望对某人有帮助:

  1. 卸载旧的Rtools(保留Rtools43
  2. 修改了环境变量中过去的引用(重置 R_HOME 和 R_LIBS_USER):
R_HOME        C:\Program Files\R\R-4.3.1  (it was pointing to old 3.6.2 version
R_LIBS_USER   C:\Users\Your-USERNAME\Documents\R\win-library\4.3 (was pointing to 3.6

注意: 以上条目不在路径下,这可能会跳过您。 即使您的路径指向正确,这也会影响 RStudio。 不幸的是,您的程序编译器不会报告此问题。它可能会向您显示正确的路径,但这并不意味着它没有被引用重定向到另一个路径。>

  1. 修改路径:

C: tools43\usr 位于(而不仅仅是 C: 工具43

  1. 修改.Renviron (~/.Renviron): 上面的路径是以下输出:
Sys.getenv("HOME")

添加:

PATH="${RTOOLS43_HOME}\usr\bin;${PATH}"

并保存。

重新启动系统。如果 RTOOLS43_HOME 条目未显示在环境变量路径上,只需显式添加它:

RTOOLS43_HOME  C:\rtools43

在 Rstudio 上,在工具/安装包/安装到库下:

应将上面的 R_LIBS_USER 值作为条目。

© www.soinside.com 2019 - 2024. All rights reserved.