我正在使用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++
如何删除这两个警告标志?
答案 0 :(得分:2)
简而言之,这些是警告和不错误。此外,这些警告 不很重要。
让我们谈谈每个警告的含义......
configure:警告:编译器自我识别为符合GNUC扩展但不是g ++。
这表明Makevars
文件的CXX
变量中定义的编译器将标识为gcc
但是不是< / em> gcc
编译器。实质上,每个编译器都有自己的预定义标头,请参阅Section 3.7.2 Common Predefined Macros的The C Preprocessor,此检查的重点是验证是否选择了现代gcc
编译器。但是,如果编译器在说谎是谁,那么很难检查编译器是否存在。
有关原点的详细信息,请参阅问题Add a check message success in config after g++version check #183和提交the default message on the g++ test)中的讨论。
configure:警告:某些复值LAPACK函数可能不可用
在此警告中,有人抱怨基础Linear Algebra PACKage与 R 附带的the check searches for相同。不幸的是, R 附带的LAPACK 严重受限制且有点过时。因此,这里的检查是希望通过OpenBLAS,Intel MKL或ATLAS存在外部 LAPACK。由于此检查的结构方式,除非您从源代码编译 R - 即您选择不使用CRAN提供的二进制文件 - 否则无法避免打嗝。
简单地说,CRAN二进制文件在特定位置查找LAPACK。切换到另一个LAPACK需要建立到现有lRlapack位置的符号链接,这是Section A.3 Linear algebra。但是,做这样的符号链接并不可取。 (对不起vecLib爱好者!)
如果您对从源代码编译感兴趣,请考虑查看R Installation and Administration {{3}},其中介绍了使用外部LAPACK的过程。