繁体   English   中英

"/bin/sh: XX: command not found" 尝试从 github 安装开发版 R fst package 时出错

[英]"/bin/sh: XX: command not found" error when trying to install development version of R fst package from github

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

最初,由于缺少 OpenMP 支持,安装失败。 我按照此处针对 OSX 上的 R 3.4.0 的步骤解决了这个问题(我认为)。

但是,现在我收到以下错误: /bin/sh: XX: command not found 我已经在~/.R/Makevars文件中设置了应该是适当路径的内容,所以我不确定接下来要做什么来解决错误。

这是我的代码和 output:

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

devtools::install_github("fstPackage/fst", ref = "develop")

* 安装 *source* package 'fst'...
** 库
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/ZSTD/compress -I"/Library/Frameworks/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
clang:错误:不支持的选项“-fopenmp”
make: *** [FastStore.o] 错误 1
错误:编译失败 package 'fst'

添加 OpenMP 支持

为了添加 OpenMP 支持,我按照此处针对 R 3.4.0 的步骤进行操作,包括从此处安装gfortran 6.1和使用此处提供的预构建 OSX GUI 安装程序安装clang 然后,按照指示,我将以下内容添加到我的~/.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* package 'fst'...
** 库
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 ERROR:编译失败 package 'fst'

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

以下是有关我的系统的一些细节:

Macbook Pro、OSX Sierra(版本 10.12.5)

RStudio 版本 1.0.153

R Session 信息

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

这导致了以下错误:

* 安装源代码package 'fst'...
** libs /Users/eipi10/.R/Makevars:7: *** 递归变量“CXX”引用自身(最终)。 停止。
错误:编译失败 package 'fst'

当我尝试从github安装R fst软件包的开发版本时,我遇到了问题并根据@Dirk在“/ bin / sh:XX:command not found”错误中的注释找出了解决方案

我在.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++

今天,我偶然发现了这个确切的问题。 感谢@Mark Plotnick给出的建议,我想出了一个有效的Makevars文件,而无需将 C++ 编译器的完整路径复制/粘贴到所有其他CXX变量。 以下使用GNU Makefile格式的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安装需要在 macOS 上编译的包。

注意:因为我的 Mac 系统使用从Homebrew安装的GNU GCC ,所以 C 和 C++ 编译器以及我系统中的库的实际路径是:

CC:=/usr/local/bin/gcc-12
CXX:=/usr/local/bin/g++-12
LDFLAGS:=-L/usr/local/Cellar/gcc/12.2.0/lib/gcc/12
/bin/bash: lz4c: command not found

sudo apt-get install liblz4c-tool

暂无
暂无

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

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