我正在尝试从 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>