&引用/bin/sh:XX:找不到命令";尝试从github安装R fst包的开发版本时出错

&引用/bin/sh:XX:找不到命令";尝试从github安装R fst包的开发版本时出错,r,linux,macos,clang,fst,R,Linux,Macos,Clang,Fst,我正在尝试从github安装的开发版本。(我想要开发版本,因为它在保存数据帧时维护列类,而当前发布的版本则没有。) 最初,由于缺少OpenMP支持,安装失败。我(我认为)通过遵循OSX上R3.4.0的步骤解决了这个问题 但是,现在我得到了以下错误:/bin/sh:XX:command-not-found。我已经在~/.R/Makevars文件中设置了适当的路径,因此我不确定下一步如何解决错误 以下是我的代码和输出: 在添加OpenMP支持之前,首次尝试安装fst devtools::instal

我正在尝试从github安装的开发版本。(我想要开发版本,因为它在保存数据帧时维护列类,而当前发布的版本则没有。)

最初,由于缺少OpenMP支持,安装失败。我(我认为)通过遵循OSX上R3.4.0的步骤解决了这个问题

但是,现在我得到了以下错误:
/bin/sh:XX:command-not-found
。我已经在
~/.R/Makevars
文件中设置了适当的路径,因此我不确定下一步如何解决错误

以下是我的代码和输出:

在添加OpenMP支持之前,首次尝试安装
fst

devtools::install_github("fstPackage/fst", ref = "develop")
*正在安装*source*包“fst”…
**libs
clang++-std=gnu++11-I/Library/Frameworks/R.framework/Resources/include-DNDEBUG-fopenmp-I-Ifstcore-Ifstcore/LZ4-Ifstcore/ZSTD-Ifstcore/ZSTD/common-Ifstcore/ZSTD/decompress-Ifstcore/zstcore/R.framework/Versions/3.4/Resources/Library/Rcpp/include” -I/usr/local/opt/gettext/include-I/usr/local/opt/llvm/include-fPIC-Wall-g-O2-c FastStore.cpp-o FastStore.o
叮当声:错误:不支持的选项'-fopenmp'
make:**[FastStore.o]错误1
错误:包“fst”的编译失败

添加OpenMP支持

devtools::install_github("fstPackage/fst", ref = "develop")
为了添加OpenMP支持,我遵循了R3.4.0的步骤,包括从和使用提供的预构建OSX GUI安装程序安装
gfortran 6.1
。然后,按照指示,我将以下内容添加到我的
~/.R/Makevars
文件中:

CC=/usr/local/clang4/bin/clang
CXX=/usr/local/clang4/bin/clang++
CXX11=$CXX
CXX14=$CXX
CXX17=$CXX
CXX1X=$CXX
LDFLAGS=-L/usr/local/clang4/lib
第二次尝试安装
fst

然后,我再次运行安装代码,并得到以下错误:

devtools::install_github("fstPackage/fst", ref = "develop")
*正在安装*source*包“fst”…
**libs
XX-std=gnu++11-I/Library/Frameworks/R.framework/Resources/include -DNDEBUG-fopenmp-I.-Ifstcore-Ifstcore/LZ4-Ifstcore/ZSTD-Ifstcore/ZSTD/common-Ifstcore/ZSTD/decompress-Ifstcore/ZSTD/compress-I”/Library/Frameworks/R.framework/Versions/3.4/Resources/Library/Rcpp/include“ -I/usr/local/include-fPIC-Wall-g-O2-c FastStore.cpp-o FastStore.o
/bin/sh:XX:未找到命令
品牌:**[FastStore.o]
错误127错误:包“fst”的编译失败

除了错误之外,我可以看到安装输出在第一次尝试中以
clang++-std=gnu++11…
开头,在第二次尝试中以
XX-std=gnu++11…
开头。我猜我需要告诉R(或其他程序)关于
clangg
的路径,但我不确定需要什么路径,或者把它放在哪里(而且
Makevars
文件不应该处理这个问题吗?),或者是否还有其他问题需要解决

以下是有关我的系统的一些详细信息:

Macbook Pro,OSX Sierra(版本10.12.5)

RStudio版本1.0.153

R会话信息

R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] httr_1.2.1      compiler_3.4.1  R6_2.2.2        tools_3.4.1     withr_1.0.2    
 [6] curl_2.8.1      memoise_1.1.0   git2r_0.19.0    digest_0.6.12   devtools_1.13.2
更新:根据@MarkPlotnick的评论,我将Makevars更改为以下内容:

CC=/usr/local/clang4/bin/clang
CXX=/usr/local/clang4/bin/clang++
CXX11=$(CXX)
CXX14=$(CXX)
CXX17=$(CXX)
CXX1X=$(CXX)
LDFLAGS=-L/usr/local/clang4/lib
这导致了以下错误:

devtools::install_github("fstPackage/fst", ref = "develop")
*正在安装源程序包“fst”…
**libs/Users/eipi10/.R/Makevars:7:**递归变量“CXX”引用自身(最终)。停下来。
错误:包“fst”的编译失败


我遇到了这个问题,并根据@Dirk在中的评论找到了解决方案

我在.R/Makevars中显式设置了库:

CXX11=/usr/local/clang4/bin/clang++
CXX14=/usr/local/clang4/bin/clang++
CXX17=/usr/local/clang4/bin/clang++
CXX1X=/usr/local/clang4/bin/clang++

当我遇到这个问题时,这对我来说是有效的,尽管在我的Mac上,二进制文件的路径是
/Library/Developer/CommandLineTools/usr/bin/clang++

我遇到了这个问题,并根据@Dirk in的评论找到了解决方案

我在.R/Makevars中显式设置了库:

CXX11=/usr/local/clang4/bin/clang++
CXX14=/usr/local/clang4/bin/clang++
CXX17=/usr/local/clang4/bin/clang++
CXX1X=/usr/local/clang4/bin/clang++

当我遇到这个问题时,这对我来说是有效的,尽管在我的Mac上,二进制文件的路径是
/Library/Developer/CommandLineTools/usr/bin/clang++

我认为
Makevars
更像是一个make文件。所以语法应该是
cx11=$(CXX)
等等。在你写(和更新)问题的时间里,你可以把
CXX=/usr/local/clang4/bin/clang++
行复制下来四次,然后再做四次其他的作业,这样你就有时间煮一杯好咖啡了。无论如何,我用
VER=
(即当前为空),
CCACHE=CCACHE
然后是
CXX=$(CCACHE)g++$(VER)
cx11=$(CCACHE)g++$(VER)
这很好。首先@DirkEddelbuettel,我喝茶,而且我喜欢喝浓茶,所以也许我有时间复制
CXX=/usr/local/clang4/bin/clang++
只有一两次。其次,我只是模糊地了解Linux的运行情况,从源代码构建包并找出错误所在It’我的意思是,所以我只是按照我链接到的帖子中的说明去做。我将尝试你的建议,然后我会报告——在我煮了一杯浓茶之后,也就是说。或者像我在《我认为
Makevars
更像一个make文件》中所说的那样明确定义CXX11、CXX17、CXX1X。因此语法应该是
CXX11=$(CXX)
等。在你写(和更新)问题的时间里,你本可以将
CXX=/usr/local/clang4/bin/clang++
行四次抄写其他四个作业,并且本可以有时间煮一杯好咖啡。值得一提的是,我使用
VER=
(即当前为空),
CCACHE=CCACHE
,然后是
CXX=$(CCACHE)g++$(VER)
cx11=$(CCACHE)g++$(VER)
,效果很好。首先@DirkEddelbuettel,我喝茶,而且我很喜欢茶,所以也许我有时间只抄一两遍