Сборка пакета R и ошибка «ld: не удается найти -lgfortran»

r ubuntu gfortran

23896 просмотра

10 ответа

Я пытаюсь установить пакет LARS. Ubuntu 11.04 Natty 64-битная. Из здания я получаю:

* installing *source* package âlarsâ ...
** libs
gfortran   -fpic  -O3 -pipe  -g -c delcol.f -o delcol.o
gcc -shared -o lars.so delcol.o -lgfortran -lm -L/usr/lib64/R/lib -lR
/usr/bin/ld: cannot find -lgfortran
collect2: ld returned 1 exit status
make: *** [lars.so] Error 1
ERROR: compilation failed for package âlarsâ

Gfortran установлен, и когда я бегу, gfortran --versionя получаю

gfortran - версия GNU Fortran (Ubuntu / Linaro 4.5.2-8ubuntu4) 4.5.2

sudo ldconfig -v выдает ошибку

/sbin/ldconfig.real: Невозможно stat /usr/lib/libgfortran.so: Нет такого файла или каталога

Я уже удалил и переустановил gfortran. Что мне нужно, чтобы это исправить?

Автор: Andrew Redd Источник Размещён: 04.10.2019 11:26

Ответы (10)


27 плюса

Решение

Для семейства Debian / Ubuntu мы обычно рекомендуем

 $ sudo apt-get install r-base-dev

поскольку это тянет во всех пакетах, обычно необходимых для компиляции. И этот подход все время тестируется, так как на это полагаются автоматизированные сборщики пакетов (а также дополнительные сборки для каждого пакета). gfortranПакет перечислен здесь; возможно у вас битая ссылка с предыдущей установки, поэтому я бы тоже попробовал dpkg --purge gfortran; apt-get install gfortran. Тем не менее, десятки пакетов R (и самого R) используют Fortran, поэтому здесь не должно быть никакой магии.

Автор: Dirk Eddelbuettel Размещён: 10.06.2011 12:54

57 плюса

У меня была такая же проблема при попытке установить пакет CRAN VGAM на Ubuntu 12.10 64bit. У меня уже был установлен r-base-dev, но второй комментарий Эндрю Редда на ответ Дирка Эддельбюттеля сработал для меня.

В частности, я получил две ошибки:

/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lquadmath

Которые были исправлены линиями:

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libquadmath.so.0 /usr/lib/libquadmath.so

Обратите внимание, что только первая строка будет необходима для решения проблемы из исходного сообщения. Во второй строке исправлена ​​моя дополнительная ошибка с lquadmath.

Автор: kevin Размещён: 21.03.2013 06:32

11 плюса

Похоже, что другие предложения уже исправили вашу проблему, но ваш вопрос также относился ко мне, но решение было другим в моем случае. Моя проблема заключалась в том, что мои версии gcc и g ++ отличались от моей версии gfortran. Я использовал следующее, чтобы переключить их так, чтобы они были одинаковыми.

  1. Проверьте, какая у вас версия gcc, g ++ и gfortran:

    g++ --version
    gcc --version
    gfortran --version
    
  2. Сопоставьте их так, чтобы они все были одинаковыми:

    sudo update-alternatives --config g++
    sudo update-alternatives --config gcc
    sudo update-alternatives --config gfortran
    

В моем случае у меня была только одна версия gfortran, поэтому я просто изменил версии g ++ и gcc, чтобы они соответствовали версии gfortran.

Автор: dlpolanco Размещён: 26.09.2014 04:40

8 плюса

Та же проблема при установке пакета R minqa на Ubuntu 12.04, R3.1.0., 32-битный x86 (на самом деле это было частью установки пакета caret).

Решено

sudo ln -s /usr/lib/i386-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so

Переустановка r-base-dev не сработала, и я не пытался переустановить gfortran из-за всех зависимостей.

В зависимости от системы / версии,

ls -l /usr/lib/libgfortran.so

проверяет, что ссылка существует / является правильной.

Автор: jeanM Размещён: 09.06.2014 06:01

3 плюса

Я использую Centos и не могу получить r-base-dev. Я также установил gfortran, и его версия совпадает с версией gcc и g ++; это все еще не сработало. Однако я решил эту проблему, создав ~/.R/Makevars, используя

cd ~
mkdir .R
touch Makevars

Я нашел каталог, где я установил gfortran (очевидно, проблема в том, что R не может его найти)

which gfortran

Он сказал, что я установил Gfortran usr/bin/gfortran. Затем я добавил флаги, .R/Makevarsчтобы указать R использовать:

F77 = /usr/bin/gfortran
FC = $F77
FLIBS = -L/usr/bin/gfortran

Вы можете редактировать файл Makevars следующим образом:

vi .R/Makevars

Теперь вы вошли в viпрограмму, которая может редактировать текстовые файлы. Тип iдля редактирования; Вы увидите INSERTвнизу окна терминала. Затем вы можете ввести то, что я положил выше. Чтобы сохранить изменения и выйти vi, нажмите клавишу esc и введите :wq.

Я не совсем уверен, правильно ли я поставил строку FLIBS, так как она сильно отличается для MacOS. В MacOS есть каталог под gfortran, в котором есть библиотеки для ссылок, но, очевидно, gfortranэто не каталог в linux. По крайней мере, это сработало для меня, а также решило проблему /usr/bin/ld: cannot find -lquadmath, поэтому я установил пакеты R, требующие gfortran.

Автор: Lambda Moses Размещён: 29.03.2018 04:41

1 плюс

Просто оставив это здесь для дальнейшего использования, как в моем случае (Amazon Linux EC2 AMI), проблема заключалась просто в наименовании символической ссылки, а не в ее расположении.

sudo ln -s /usr/lib64/libgfortran.so.3 /usr/lib64/libgfortran.so
sudo ln -s /usr/lib64/libquadmath.so.0 /usr/lib64/libquadmath.so
Автор: João Nogueira Размещён: 07.01.2019 04:58

0 плюса

Если вы используете gcc44, вам понадобится:

yum install gcc44-gfortran
Автор: user4020650 Размещён: 08.09.2014 08:25

0 плюса

Для будущих потерянных душ это также помогает проверить соответствие версий компилятора (согласно https://askubuntu.com/questions/276892/cannot-find-lgfortran ). В моем случае gcc и gfortran были оба 4.8.4, но g ++ был 4.6.

Автор: Neil Размещён: 30.11.2016 02:44

0 плюса

Для тех, кто попадает на эту страницу с той же ошибкой на Mac , попробуйте следующее:

Установите Homebrew и запустите:

brew install gcc

Затем создайте файл ~/.R/Makevarsс содержимым (помните, что это соответствует gcc версии 9.1.0):

VER=-9
CC=gcc$(VER)
CXX=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/usr/local/Cellar/gcc/9.1.0/lib/gcc/9

  • R v3.6.0
  • gcc v9.1.0
  • Доморощенный v2.1.6
  • macOS v10.14.5
Автор: Megatron Размещён: 20.06.2019 02:24

0 плюса

Мне не нужно было устанавливать какие-либо библиотеки. Выкладывая то, что у меня сработало, может, кому-то будет полезно.

У меня было ~/.R/Makevarsопределение, чтобы использовать CC=gcc-8. На моей машине gcc по умолчанию - 7.4.0, но я установил gcc-8. В то же время у меня не было gfortran 8, а только 7.4.0. Комментирование строки в Makevars приводит к тому, что компиляция возвращается к использованию gcc-7 по умолчанию, и тогда он успешно использовал gfortran-7 lib.

Автор: jangorecki Размещён: 03.09.2019 10:15
Вопросы из категории :
32x32