繁体   English   中英

从源代码安装 R package 时,如何更改使用哪个 C++ 版本编译器?

[英]How to change which C++ version compiler is used when installing an R package from source?

我正在尝试使用 remotes::install_github("pkgname") 从源安装 R package。 我收到以下错误:

/bin/sh: /usr/local/Cellar/gcc/9.2.0/bin/g++-7: No such file or directory

我检查了一下,我有g++-9代替。 我一直在寻找一种方法来更改设置以指向正确的路径,但到目前为止还没有运气。 我什至不确定要查看哪个 package 或是否接近 R 配置文件。 任何帮助将不胜感激。

我在 Mac OSX 10.15.5 (Catalina) 上使用 R 版本 3.6.3。 我安装了 XCode 开发人员工具,但每当我运行检查时,RStudio 建议我安装它们,就好像找不到它一样。

非常感谢

正如您所建议的,看起来 R 看不到您的 g++ 编译器。

1 检查 g++ 是否在 PATH您是否使用自制软件安装了 R? 由于错误路径指向 /usr/local/Cellar,因此似乎是这样。

您可以通过在 Mac OS 上打开终端程序并键入以下内容来查看 g++ 编译器是否在路径上:

echo $CXX

如果它返回 null(或什么都没有),那么路径上什么都没有。

2 在 brew 中安装 g++ 让我们在 brew中安装 g++。 打开终端并运行以下命令,在每一行后按回车键:

brew update
brew install gcc48
brew doctor

在此之后,请重新启动您的计算机。

3 检查 g++ 现在是否在 PATH 上

在终端上再次运行echo $CXX 如果这仍然不起作用,请参阅当前问题:

https://github.com/r-lib/rlang/issues/754

我建议如果这不起作用,请尝试再次安装 XCode 开发人员工具。 你可以这样做:

xcode-select --install

除了@bats_n_stats(很棒的句柄)写道:以下内容:

每个 Rcpp 使用由R 本身驱动

R 可以通过R CMD config调用告诉我们它使用了什么。 在我的系统上

edd@rob:~$ R CMD config CXX
ccache g++
edd@rob:~$ 

意思是g++ (无合格版本)的(标准)值与ccache提供的加速缓存一起使用(不同的主题,我过去写过)

您也可以通过grep在实际的配置文件中查看(我直接在下面查找)

edd@rob:~$ grep ^CXX $(R RHOME)/etc/Makeconf
CXX = g++ -std=gnu++11
CXXCPP = $(CXX) -E
CXXFLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-Do_dS_/r-base-4.0.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXXPICFLAGS = -fpic
CXX11 = g++
CXX11FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-Do_dS_/r-base-4.0.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX11PICFLAGS = -fpic
CXX11STD = -std=gnu++11
CXX14 = g++
CXX14FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-Do_dS_/r-base-4.0.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX14PICFLAGS = -fpic
CXX14STD = -std=gnu++14
CXX17 = g++
CXX17FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-Do_dS_/r-base-4.0.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX17PICFLAGS = -fpic
CXX17STD = -std=gnu++17
CXX20 = g++
CXX20FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-Do_dS_/r-base-4.0.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX20PICFLAGS = -fpic
CXX20STD = -std=gnu++2a
CXX_VISIBILITY = -fvisibility=hidden
edd@rob:~$ 

这些值来自 R 本身构建时。 因此,如果这对您的 Catalina 系统有影响,您需要查看 R 的来源以及那里可能出现的问题。 使用Cellar暗示了 macOS 特定的内容,可能不是https://mac.r-project.org/页面中建议的 R。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM