ошибка gcc при установке пакета Statnet

Установка statnet на Mac 10.10.3 с R 3.2.x (RStudio 0.99.441).

ld: warning: directory not found for option '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'
ld: library not found for -lgfortran
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [latentnet.so] Error 1
ERROR: compilation failed for package ‘latentnet’
* removing ‘/Library/Frameworks/R.framework/Versions/3.2/Resources/library/latentnet’
Warning in install.packages :
installation of package ‘latentnet’ had non-zero exit status
ERROR: dependency ‘latentnet’ is not available for package ‘statnet’
* removing ‘/Library/Frameworks/R.framework/Versions/3.2/Resources/library/statnet’
Warning in install.packages :
installation of package ‘statnet’ had non-zero exit status

Я попытался обновить XCode/Инструменты командной строки. Также пробовал не устанавливать зависимости. Я смог установить другие пакеты, такие как ergm и sna.

Похоже, что установка ищет папку GCC и не находит ее.

whereis gcc

показывает, что мой gcc находится в /usr/bin/gcc

Похоже, что установка ищет его в /usr/local/lib/gcc/

Есть ли способ исправить это?


person Chris J. Vargo    schedule 02.06.2015    source источник


Ответы (2)


Это ошибка компиляции, которую вы получаете, только если пытаетесь установить пакеты из исходного кода или когда для пакета требуется, чтобы библиотека была скомпилирована из исходного кода. Обычно, если вы не используете последнюю версию R, вы можете установить statnet из двоичного файла, и, таким образом, R не нужно будет компилировать исходный пакет.

Версия, которую вы упоминаете в начале своего сообщения (0.99.441), — это версия вашей R-Studio, а не R. Версия вашего R — 3.2.x (отсюда ее адрес в папке Библиотеки: /Library/Frameworks/R.framework/Versions/3.2/Resources…). Прежде чем пытаться исправить ошибку компиляции, вы можете попытаться откатить свой R до версии, например 3.1.2 или 3.1.3, на которую вы, вероятно, сможете загрузить и установить statnet в двоичном формате.

Что касается компилятора, я предполагаю, что даже если вы зафиксируете адрес вашего gcc символической ссылкой, вы все равно получите ошибку о gfortran или версии gcc. Когда-то я решил эту проблему, установив R и нужную версию gcc через Homebrew, но сейчас у меня нет возможности попробовать решение и рассказать, как именно.

Мой опыт (на Yosemite) таков, что если вы используете 3.1.2 или 3.1.3, даже если есть необходимость в компиляции, ошибка с gcc не возникнет.

person retrography    schedule 03.06.2015
comment
У меня проблемы с поиском 2.1.2 или 2.1.3, у вас есть ссылка? Его нет в старом репо на cran. - person Chris J. Vargo; 04.06.2015
comment
Это 3.1.3, а не 2.1.3, это сделано намеренно? - person Chris J. Vargo; 04.06.2015
comment
Виноват. Правильная версия была 3.1.2/3.1.3. Двоичные файлы пакета R совместимы с небольшими изменениями версии, например. с 3.1.2 по 3.1.3. То, с чем вы боретесь (надеюсь), это то, что вы переместили одну основную версию на 3.2, что требует перекомпиляции некоторых пакетов, и кажется, что make-файл ищет не в тех папках. Проверьте 3.1.3 и дайте мне знать, если это работает. Надеюсь, так и будет. Когда вы запускаете R после установки старой версии, убедитесь, что запущена та версия R, которую вы только что установили. R запрашивает версию при запуске. Просто введите R в командной строке с учетом регистра. - person retrography; 04.06.2015

sudo mkdir /usr/bin/lib && sudo ln -s /usr/bin/gcc /usr/bin/lib/gcc

Создает новый каталог в /usr/bin с именем `lib' и создает символическую ссылку на gcc в этом новом каталоге.

Если это не устранит ошибку, вы можете отменить ее с помощью:

sudo rm -i /usr/bin/lib/gcc && sudo rm -id /usr/bin/lib

person hgiesel    schedule 02.06.2015
comment
Спасибо за попытку, эта ссылка работает, но она все еще ищет подпапку, которой нет в моей установке gcc, и библиотеку lgfortran, которой там тоже нет - person Chris J. Vargo; 03.06.2015