stringi ошибка установки: настроить: ошибка: компилятор C не может создавать исполняемые файлы

Я пытаюсь установить пакет stringi после недавнего обновления R до последней версии. Однако я встретил эту ошибку:

* installing *source* package ‘stringi’ ...
** package ‘stringi’ successfully unpacked and MD5 sums checked
checking for local ICUDT_DIR... icu55/data
checking for R_HOME... /usr/local/Cellar/r/3.4.3/lib/R
checking for R... /usr/local/Cellar/r/3.4.3/lib/R/bin/R
checking for R >= 3.1.0 for C++11 use... yes
checking for R < 3.4.0 for CXX1X flag use... no
checking for cat... /bin/cat
checking for gcc... /usr/local/opt/llvm/bin/clang -fopenmp
checking whether the C compiler works... no
configure: error: in `/private/var/folders/y5/m7pd62wn3939vyqxygrd_ff80000gn/T/RtmpNBCRW2/R.INSTALL8ec750ee123/stringi':
configure: error: C compiler cannot create executables
See `config.log' for more details
ERROR: configuration failed for package ‘stringi’
* removing ‘/usr/local/lib/R/3.4/site-library/stringi’
Warning in install.packages :
  installation of package ‘stringi’ had non-zero exit status

После некоторых сообщений я попытался:

install.packages('stringi', configure.args='--disable-cxx11')

or:

install.packages('stringi', type='mac.binary')

Как мне правильно установить stringi, я что-то пропустил?

Дополнительная информация: я обновил R с помощью Homebrew. Я успешно установил data.table перед попыткой установить stringi, поэтому, похоже, это вызвано проблемой, связанной с пакетом.

Вот моя информация о сеансе:

R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin17.2.0 (64-bit)
Running under: macOS High Sierra 10.13.2

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.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] compiler_3.4.3 tools_3.4.3 

person mt1022    schedule 28.12.2017    source источник
comment
См. эту запись SO и эта проблема с github   -  person Ben    schedule 04.05.2018
comment
@Бен, спасибо за ссылку. Не следил за этим после того, как каким-то образом установил его.   -  person mt1022    schedule 04.05.2018


Ответы (4)


У меня возникла такая же проблема при обновлении пакета stringi. Как было указано здесь https://github.com/gagolews/stringi/issues/291 проблема была не в stringi, а в ~/.R/Makevars. Установка прошла успешно после удаления этого файла с помощью rm ~/.R/Makevars в командной строке.

person Fan Cheng    schedule 13.01.2020

Я понятия не имею, что вызвало ошибку. Но, наконец, мне удалось установить stringi, выполнив следующие действия:

  • удалите все версии R, установленные доморощенным, с помощью: brew uninstall --force r

  • загрузите gfortran (не уверен, что это необходимо, просто следуйте инструкциям по установке в руководстве) и R 3.4.3 для Mac OS X из CRAN (я выбрал .pkg, хотя файлы .dmg также доступны) и установите их.

  • откройте студию и запустите install.packages('stringi'), который успешно установил бинарный пакет.

person mt1022    schedule 30.12.2017

Обновите свой компилятор, вот пример работы на openSUSE:

установить более новую версию компилятора:

zypper in gcc7 gcc7-c++ gcc7-c++ gcc7-fortran

Отредактируйте файлы конфигурации компилятора, откройте /usr/lib64/R/etc/Makeconf и добавьте следующее содержимое:

CC = gcc-7
CXX = g++-7
CXX98 = g++-7
CXX11 = g++-7
CXX14 = g++-7
CXX17 = g++-7
FC = gfortran-7
F77 = gfortran-7

Теоретически вам не нужно перезапускать свой R, просто установите нужный пакет напрямую.

Удачного кодирования ;)

person Losses Don    schedule 19.03.2018

Если вы используете MacOS, срок действия вашей xcode лицензии может быть истёк. Попробуйте запустить:

sudo xcodebuild -license

из командной строки и согласившись с лицензией.

person Karolis Koncevičius    schedule 10.10.2019