stringi install error: configure: error: C compiler cannot create executables

stringi install error: configure: error: C compiler cannot create executables

我正在尝试在最近将 R 更新到最新版本后安装 stringi 包。但是,我遇到了这个错误:

* installing *source* package ‘stringi’ ...
** package ‘stringi’ successfully unpacked and MD5 sums checked
checking for local ICUDT_DIR... icu55/data
checking for R_HOME... /usr/local/Cellar/r/3.4.3/lib/R
checking for R... /usr/local/Cellar/r/3.4.3/lib/R/bin/R
checking for R >= 3.1.0 for C++11 use... yes
checking for R < 3.4.0 for CXX1X flag use... no
checking for cat... /bin/cat
checking for gcc... /usr/local/opt/llvm/bin/clang -fopenmp
checking whether the C compiler works... no
configure: error: in `/private/var/folders/y5/m7pd62wn3939vyqxygrd_ff80000gn/T/RtmpNBCRW2/R.INSTALL8ec750ee123/stringi':
configure: error: C compiler cannot create executables
See `config.log' for more details
ERROR: configuration failed for package ‘stringi’
* removing ‘/usr/local/lib/R/3.4/site-library/stringi’
Warning in install.packages :
  installation of package ‘stringi’ had non-zero exit status

根据一些帖子,我尝试了:

install.packages('stringi', configure.args='--disable-cxx11')

或:

install.packages('stringi', type='mac.binary')

我怎样才能正确安装 stringi,我是不是漏掉了什么?

附加信息:我用 Homebrew 更新了 R。我在尝试安装 stringi 之前成功安装了 data.table,因此这似乎是由特定于软件包的问题引起的。

这是我的会话信息:

R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin17.2.0 (64-bit)
Running under: macOS High Sierra 10.13.2

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.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] compiler_3.4.3 tools_3.4.3 

我不知道是什么导致了这个错误。但最终我能够通过以下步骤安装 stringi

  • 删除自制软件安装的所有 R 版本:brew uninstall --force r

  • 从 CRAN 下载 gfortran(不确定是否有必要,只需按照手册中的安装指南进行操作)和 R 3.4.3 for Mac OS X(我选择.pkg,而 .dmg 文件也可用)并安装它们。

  • 打开studio,运行install.packages('stringi'),二进制包安装成功

升级你的编译器,这里是一个在 openSUSE 上运行的例子:

安装更新版本的编译器:

zypper in gcc7 gcc7-c++ gcc7-c++ gcc7-fortran

编辑您的编译器配置文件,打开 /usr/lib64/R/etc/Makeconf,并添加以下内容:

CC = gcc-7
CXX = g++-7
CXX98 = g++-7
CXX11 = g++-7
CXX14 = g++-7
CXX17 = g++-7
FC = gfortran-7
F77 = gfortran-7

理论上不需要重启你的R,直接安装你需要的包即可。

编码愉快 ;)

如果您使用的是 MacOS,您的 xcode 许可证可能已过期。尝试 运行:

sudo xcodebuild -license

从命令行并同意许可。

我在更新 stringi 包时遇到了同样的问题。如此处所述 https://github.com/gagolews/stringi/issues/291,问题不在于 stringi,而是在于 ~/.R/Makevars。在命令行中使用 rm ~/.R/Makevars 删除此文件后安装成功。