C++ 安装时出错";RcppArmadillo”一词;用R包装

C++ 安装时出错";RcppArmadillo”一词;用R包装,c++,r,parallel-processing,g++,rcpp,C++,R,Parallel Processing,G++,Rcpp,我使用的是macOS High Sierra版本10.13.4。在安装“RcppArmadillo”软件包时,我收到以下两条警告消息: checking whether /usr/local/clang6/bin/clang++ -Wall accepts -g... (cached) yes checking whether g++ version is sufficient... almost configure: WARNING: Compiler self-identi

我使用的是macOS High Sierra版本10.13.4。在安装“RcppArmadillo”软件包时,我收到以下两条警告消息:

   checking whether /usr/local/clang6/bin/clang++ -Wall accepts -g... (cached) yes
   checking whether g++ version is sufficient... almost
   configure: WARNING: Compiler self-identifies as being compliant with GNUC extensions but is not g++.
   checking for macOS... found
   checking for macOS Apple compiler... not found
   checking for clang compiler... found
   checking for OpenMP compatible version of clang... found and suitable
   checking LAPACK_LIBS... R-supplied partial LAPACK found
   configure: WARNING: Some complex-valued LAPACK functions may not be available
当我在终端上键入“gcc--version”时,我得到

 Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
 Apple LLVM version 9.1.0 (clang-902.0.39.2)
 Target: x86_64-apple-darwin17.5.0
 Thread model: posix
 InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
我在R中的Makevars文件如下所示:

FLIBS=-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin16/6.3.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm
F77 = /usr/local/bin/gfortran
FC = $F77
CXX =  /usr/local/clang6/bin/clang++  -Wall
LDFLAGS=-L/usr/local/clang6/lib
CC=  /usr/local/clang6/bin/clang
SHLIB_CXXLD=ccache /usr/local/clang6/bin/clang++
CXX11 =  /usr/local/clang6/bin/clang++
CXX98 =  /usr/local/clang6/bin/clang++
CXX14 =  /usr/local/clang6/bin/clang++
如何删除这两个警告标志?

简而言之,这是警告,而不是错误。此外,这些警告并不重要


让我们来谈谈每个警告的含义

第一次警告 配置:警告:编译器自标识为符合GNUC扩展,但不是g++

这表明
Makevars
文件的
CXX
变量中定义的编译器标识为
gcc
,但不是
gcc
编译器。本质上,每个编译器都有自己的预定义头,请参见,此检查的重点是验证是否选择了现代
gcc
编译器。然而,如果编译器对其身份撒谎,则很难检查编译器是否存在

有关来源的详细信息,请参阅问题和提交中的讨论)

第二次警告 配置:警告:某些复值LAPACK函数可能不可用

在此警告中,有人抱怨底层与R附带的是同一个。不幸的是,R附带的LAPACK受到严重限制,有点过时。因此,这里的检查希望通过OpenBLAS、Intel MKL或ATLAS提供外部LAPACK。由于该检查的结构方式,除非您是从源代码处编译R——也就是说,您选择不使用CRAN提供的二进制文件——否则无法避免出现问题

简单地说,CRAN二进制文件在特定位置查找LAPACK。切换到另一个LAPACK需要建立一个到现有lRlapack位置的符号链接,这就是为什么。不过,做这样一个象征性的链接是不可取的。(对不起


如果你有兴趣编译源代码,请考虑查看使用外部LAPACK的程序。

(RCPP)ARMADILO在MACOS上使用更困难,因为MACOS是“特殊的”。这已经在这里和GitHub回购协议上讨论过很多次了,请参见eg以及其他内容。@DirkEddelbuettel在发布问题之前,我已经检查了所有这些链接。但我不知道问题出在哪里。这就是为什么需要一个误导性的问题标题。这些是警告,而不是错误。您尚未显示“cpp代码不工作”的方式或位置。导致“cpp代码不工作”的错误(而非警告)在哪里?如果没有错误,其他指标是什么(例如:错误结果)。警告可能会因为许多与根本问题无关的原因而发生。没有C++错误,我们将在桶中射击鱼。简而言之,我认为这是因为
~/.R/Makevars
中列出了
ccache
。为了简化生活,请做到以下几点:1。删除
~/.R/Makevars
和2。另外,当涉及到R时,复杂值LAPACK的用例并不多,所以这不太可能导致真正的问题。特别是因为所有的东西都应该仍然有效,只是效率不如拉帕克程序所使用的那样高。@coatless,非常感谢!!!!“我们将处理这些问题,并让您知道进展情况。”拉尔夫·塔布纳,谢谢。