Ошибка "/bin/sh: XX: команда не найдена" при попытке установить разрабатываемую версию R fst пакета из github
Я пытаюсь установить разрабатываемую версию fst
пакет из github. (Я хочу версию для разработки, потому что она поддерживает классы столбцов при сохранении фреймов данных, тогда как текущая выпущенная версия - нет.)
Первоначально установка не удалась из-за отсутствия поддержки OpenMP. Я решил это (я думаю), выполнив шаги здесь для R 3.4.0 на OSX.
Однако теперь я получаю следующую ошибку: /bin/sh: XX: command not found
, Я уже установил, какие должны быть соответствующие пути в ~/.R/Makevars
файл, поэтому я не уверен, что делать дальше, чтобы устранить ошибку.
Вот мой код и вывод:
Первая попытка установитьfst
перед добавлением поддержки OpenMP
devtools::install_github("fstPackage/fst", ref = "develop")
* установка * исходного * пакета 'fst'...
** libs
clang ++ -std = gnu ++ 11 -I / Library / Frameworks / R.framework / Resources / include -DNDEBUG -fopenmp -I. -Ifstcore -Ifstcore / LZ4 -Ifstcore / ZSTD -Ifstcore / ZSTD / common -Ifstcore / ZSTD / распаковка -Ifstcore/ZSTD/compress -I"/Library/Frameworks/R.framework/Versions/3.4/Rescc/library include "-I / usr / local / opt / gettext / include -I / usr / local / opt / llvm / include -fPIC -Wall -g -O2 -c FastStore.cpp -o FastStore.o
clang: ошибка: неподдерживаемая опция '-fopenmp'
make: *** [FastStore.o] Ошибка 1
ОШИБКА: ошибка компиляции для пакета 'fst'
Добавление поддержки OpenMP
Чтобы добавить поддержку OpenMP, я выполнил следующие действия для R 3.4.0, включая установку gfortran 6.1
отсюда и clang
используя предустановленный установщик OSX GUI, предоставленный здесь. Затем, в соответствии с инструкциями, я добавил следующее ~/.R/Makevars
файл:
CC=/usr/local/clang4/bin/clang
CXX=/usr/local/clang4/bin/clang++
CXX11=$CXX
CXX14=$CXX
CXX17=$CXX
CXX1X=$CXX
LDFLAGS=-L/usr/local/clang4/lib
Вторая попытка установитьfst
Затем я снова запустил код установки и получил следующую ошибку:
devtools::install_github("fstPackage/fst", ref = "develop")
* установка * исходного * пакета 'fst'...
** libs
XX -std = gnu ++ 11 -I / Library / Frameworks / R.framework / Resources / include -DNDEBUG -fopenmp -I. -Ifstcore -Ifstcore / LZ4 -Ifstcore / ZSTD -Ifstcore / ZSTD / common -Ifstcore / ZSTD / распаковка -Ifstcore/ZSTD/compress -I"/Library/Frameworks/R.framework/Versions/3.4/Rescc/library include "-I / usr / local / include -fPIC -Wall -g -O2 -c FastStore.cpp -o FastStore.o
/ bin / sh: XX: команда не найдена
make: *** [FastStore.o]
Ошибка 127 ОШИБКА: ошибка компиляции для пакета 'fst'
В дополнение к ошибкам, я вижу, что вывод установки начинается с clang++ -std=gnu++11 ...
в первой попытке и XX -std=gnu++11 ...
во второй попытке. Я предполагаю, что мне нужно рассказать R (или другой программе) о пути к clang
, но я не уверен, какой путь нужен или где его поставить (а не Makevars
файл должен позаботиться об этом?), или есть ли другие проблемы, которые также необходимо исправить.
Вот некоторые подробности о моей системе:
Macbook Pro, OSX Sierra (версия 10.12.5)
RStudio версия 1.0.153
R Информация о сеансе
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.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] httr_1.2.1 compiler_3.4.1 R6_2.2.2 tools_3.4.1 withr_1.0.2
[6] curl_2.8.1 memoise_1.1.0 git2r_0.19.0 digest_0.6.12 devtools_1.13.2
ОБНОВЛЕНИЕ: Основываясь на комментарии @MarkPlotnick, я изменил Makevars следующим образом:
CC=/usr/local/clang4/bin/clang
CXX=/usr/local/clang4/bin/clang++
CXX11=$(CXX)
CXX14=$(CXX)
CXX17=$(CXX)
CXX1X=$(CXX)
LDFLAGS=-L/usr/local/clang4/lib
Это привело к следующей ошибке:
* установка исходного пакета 'fst'...
** libs /Users/eipi10/.R/Makevars:7: *** Рекурсивная переменная `CXX'ссылается на себя (в конце концов). Стоп.
ОШИБКА: ошибка компиляции для пакета 'fst'
3 ответа
Я столкнулся с проблемой и выяснил решение на основе комментария @Dirk в ошибке "/bin/sh: XX: команда не найдена" при попытке установить версию разработки R fst-пакета из github.
Я явно установил библиотеки в.R/Makevars:
CXX11=/usr/local/clang4/bin/clang++
CXX14=/usr/local/clang4/bin/clang++
CXX17=/usr/local/clang4/bin/clang++
CXX1X=/usr/local/clang4/bin/clang++
Это сработало для меня, когда я столкнулся с этой проблемой, хотя на моем Mac путь к двоичному /Library/Developer/CommandLineTools/usr/bin/clang++
)
Сегодня столкнулся именно с этой проблемой. Благодаря совету, данному user2554472, я придумал рабочий файл без необходимости копировать/вставлять полный путь компилятора C++ во все остальныеCXX
переменные. СледующееMakevars
файл с использованием формата GNU Makefile отлично работает:
CC:=/usr/local/clang4/bin/clang
CXX:=/usr/local/clang4/bin/clang++
CXX11:=$(CXX)
CXX14:=$(CXX)
CXX17:=$(CXX)
CXX1X:=$(CXX)
LDFLAGS:=-L/usr/local/clang4/lib
Протестировано с использованиемdevtools::install_github
для установки пакетов, требующих компиляции в macOS.
Примечание: поскольку в моей системе Mac используется GNU GCC, установленный из Homebrew , фактические пути компиляторов C и C++ вместе с библиотекой в моей системе:
CC:=/usr/local/bin/gcc-12
CXX:=/usr/local/bin/g++-12
LDFLAGS:=-L/usr/local/Cellar/gcc/12.2.0/lib/gcc/12
/bin/bash: lz4c: command not found
sudo apt-get install liblz4c-tool