6

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

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

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

这是我的代码和输出:

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

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/解压缩 -Ifstcore/ZSTD/compress -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/包括” -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
​​错误: 包 'fst' 编译失败</p>

添加 OpenMP 支持

为了添加 OpenMP 支持,我按照此处为 R 3.4.0 执行的步骤,包括gfortran 6.1此处安装和使用此处clang提供的预构建 OSX GUI 安装程序。然后,按照指示,我将以下内容添加到我的文件中:~/.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/解压缩 -Ifstcore/ZSTD/compress -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/包括” -I/usr/local/include -fPIC -Wall -g -O2 -c FastStore.cpp -o FastStore.o
/bin/sh: XX: command not found
make: *** [FastStore.o]
错误 127错误:包“fst”编译失败</p>

除了错误之外,我还可以看到安装输出从clang++ -std=gnu++11 ...第一次尝试和XX -std=gnu++11 ...第二次尝试开始。我猜我需要告诉 R(或其他程序)关于路径的信息clang,但我不确定需要什么路径或将它放在哪里(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

这导致了以下错误:

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

4

2 回答 2

2

我遇到了这个问题,并在尝试从 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++

于 2018-08-09T00:49:28.653 回答
-1
/bin/bash: lz4c: command not found

sudo apt-get install liblz4c-tool
于 2018-11-15T01:20:51.317 回答