Ошибка при установке пакета "RcppArmadillo" в R - PullRequest
0 голосов
/ 04 июня 2018

Я использую 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

И мойФайл Makevars в R выглядит так:

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++

Как я могу удалить эти два знака ПРЕДУПРЕЖДЕНИЕ?

1 Ответ

0 голосов
/ 04 июня 2018

Короче говоря, это предупреждения и , а не ошибки.Более того, эти предупреждения не не имеют значение.


Давайте поговорим о том, что означает каждое предупреждение ...

Первое предупреждение

configure: ПРЕДУПРЕЖДЕНИЕ: компилятор идентифицирует себя как совместимый с расширениями GNUCно не g ++.

Это означает, что компилятор, определенный в переменной CXX файла Makevars, равен , идентифицируя как gcc, но не компилятор gcc.По сути, каждый компилятор имеет свой собственный предопределенный заголовок, см. Раздел 3.7.2 Общие предопределенные макросы из Препроцессор C , и эта проверка направлена ​​на проверку того, что современный gcc компиляторвыбран.Тем не менее, трудно проверить наличие компилятора, если компилятор лжет о том, кто он.

Подробнее о происхождении см. Обсуждение в выпуске Добавление сообщения проверки успешности в конфигурации после g++ проверка версии # 183 и принятие сообщения по умолчанию в тесте g ++ ).

Второе предупреждение

configure: ПРЕДУПРЕЖДЕНИЕ: некоторые сложные-значные функции LAPACK могут быть недоступны

В этом предупреждении есть жалоба на то, что базовый пакет линейной алгебры является тем же, который поставляется с R .К сожалению, LAPACK, который поставляется с R , строго ограничен и немного устарел.Итак, проверка здесь надеется на наличие внешнего LAPACK через OpenBLAS, Intel MKL или ATLAS.Из-за того, как эта проверка структурирована, если вы не компилируете R из исходного кода - то есть вы решаете не использовать двоичный файл, предоставленный CRAN - нет способа избежать сбоя.

Проще говоря, двоичный файл CRAN ищет LAPACK в определенном месте.Переключение на другой LAPACK потребовало бы установления символической ссылки на существующее местоположение lRlapack, то есть то, что проверка ищет для .Хотя не рекомендуется делать такую ​​символическую ссылку.(Извините, любители vecLib!)

Если вы заинтересованы в компиляции из источника, рассмотрите просмотр Раздел A.3 Линейная алгебра из R Установка и администрирование , в котором описываетсяпроцедура использования внешних LAPACK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...