【问题标题】:Unable to run C++ code (mainly include files (.h) missing)无法运行 C++ 代码(主要是缺少包含文件 (.h))
【发布时间】:2020-05-02 20:10:37
【问题描述】:

我在 R 3.6.3 和最近在 R 4.0 中尝试了以下内容。 运行 Mac OSX Catalina。我有 Xcode 11.4.1 版本并且做了 xcode-select --install 确保我有命令行工具。

当必须在 Rstudio 中从源代码编译 R 包时,我收到 config.h 的错误 没有找到。尝试 Rcpp 时出现类似错误(未找到某些 .h。例如 math.h)。

如果有人有解决方法,请告诉我。谢谢。我在这个问题上搜索了很多 但一直无法解决。

* installing *source* package ‘pkgbuild’ ...
** package ‘pkgbuild’ successfully unpacked and MD5 sums checked
** using staged installation
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (pkgbuild)
* installing *source* package ‘rlang’ ...
** package ‘rlang’ successfully unpacked and MD5 sums checked
** using staged installation
** libs
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I./lib/  -I/usr/local/include   -fPIC  -Wall -g -O2  -c capture.c -o capture.o
In file included from capture.c:1:
In file included from /Library/Frameworks/R.framework/Resources/include/Rinternals.h:44:
In file included from /Library/Frameworks/R.framework/Resources/include/R_ext/Arith.h:41:
In file included from /usr/local/include/math.h:8:
In file included from /usr/local/include/features.h:10:
/usr/local/include/forwards.h:10:10: fatal error: 'config.h' file not found
#include "config.h"
         ^~~~~~~~~~
1 error generated.
make: *** [capture.o] Error 1
ERROR: compilation failed for package ‘rlang’
* removing ‘/Library/Frameworks/R.framework/Versions/4.0/Resources/library/rlang’
Warning in install.packages :
  installation of package ‘rlang’ had non-zero exit status

【问题讨论】:

    标签: c++ r


    【解决方案1】:

    我在专门针对 R 开发人员的邮件列表上发布了类似的内容。经过一番讨论,很明显在 /usr/local/include 和 /usr/local/library 中存在冲突的头文件。选择的是这些 *.h 文件,而不是与 R 关联的文件。

    一个解决方案(有效)是创建一个名为 ~/.R 的目录,然后在该目录中,有一个 Makevars 文件,其中包含以下一行:

    CPPFLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

    第二种解决方案是重命名 /usr/local/library 和 /usr/local/include 以使其在尝试从 C++ 源代码编译或使用包 Rcpp 时对 R 不可用。

    希望这些解决方案能够帮助遇到类似问题的其他人。

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 1970-01-01
      • 2019-10-24
      • 2014-08-14
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多