Не вдається знайти -lgfortran


12

Я намагаюся встановити пакет в R (пакет "ks"). Не вдалося отримати повідомлення про помилку:

/usr/bin/ld: cannot find -lgfortran

Я вже встановив необхідний для складання пакет Ubuntu:

sudo apt-get install build-essential

Я також спробував додати символічні посилання:

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
sudo ln -s /usr/lib/libgfortran.so.3.0.0 /usr/lib/libgfortran.so
sudo ldconfig

Я регулярно використовую gcc та g ++, але ще не мав приводу використовувати gfortran.

Я бачив інших із цією проблемою на gcc-4.7 ( http://ubuntuforums.org/showthread.php?t=2123821 ), тому мені цікаво, чи це не вручну встановити gcc-4.7. Я дотримувався рецепту з прийнятої відповіді тут і тут .

Виконання lsb_release -aвідбитків

Ubuntu 12.04.2 LTS

і запущені uname -rпринти

3.2.0-39-generic-pae

Хто-небудь може запропонувати поради, чому ldце не працює?


1
Ви намагалися створити символічні посилання на бібліотеки часу виконання , а не на ті, які хоче линкер (* .a dev libs). Схоже, проблема шляху.
— Андрейс Кайніков

Відповіді:


5

Потрібно встановити gfortran. Помилка вказує на те, що у статичної вкладки для зв’язку між часом побудови відсутня не динамічна вкладка, яку ви намагалися налаштувати.


Коли я намагаюся sudo apt-get install gfortran, я отримую 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.... Будь-які думки?
— користувач

Що ж, у своїй системі я отримую dpkg -S /usr/lib/gcc/x86)64-linux-gnu/4.6/libgfortran.aвідповідь, що це з gfortran-4.6пакета. Gcc шукає файл .a. Якщо ви встановили іншу версію gcc, лінкер переглядає каталог, схожий на ім'я libgfortran.a.
— rfindeis

Виглядає як правдива відповідь.
— Андрейс Кайніков

Символічна зв'язок бібліотеки 4.6 для компілятора 4.7 може працювати. Також проходження правильного шляху з -L(що багато в чому однакове). Якщо цього не вдалося, вам потрібно встановити 4.7 версію gfortran з ppa, який ви використовували для gcc 4.7. Яка версія gfortran у вас зараз?
— rfindeis

Мені потрібно було використовувати той самий трюк, що і для встановлення gcc-4.7, щоб встановити gfortran-4.7.
— користувач

9

Ще трохи пояснення відповіді Хмари Олівера.

Дізнайтеся версію gcc, яка зараз використовується за допомогою цієї команди.

$sudo update-alternatives --config gcc

* 2            /usr/bin/gcc-4.7   60        manual mode

Запис *указує, яка версія GCC використовується. Просто натисніть клавішу Enter, щоб зберегти поточні налаштування.

Якщо він друкує "альтернативи для gcc", можливо, вам доведеться скористатися цією командою, щоб дізнатися версію:

apt-cache policy gcc
  1. cd в правий каталог gcc (замініть номер версії на ваш):

    cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
    
  2. Ви можете шукати за libgfortran.aдопомогою наступної команди (необов'язково). У моєму випадку це було в /usr/lib/gcc/x86_64-linux-gnu/4.8/каталозі.

    find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
    
  3. Створіть символьне посилання:

    sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
    

7

Що я зробив, я перевіряю на ubuntu, чи версії g ++, gcc та g однакові чи ні.

Я думаю, що краще, якщо у вас є всі три тієї ж версії.

# first check the versions:
gcc --version
g++ --version
gfortran --version

# If versions are different, then install:
sudo apt-get update
apt-get install gcc-4.9 g++-4.9 gfortran-4.9

Для мене це вирішило усі проблеми, з якими я стикався під час встановлення пакету "TTR" в R за допомогою RStudio на Ubuntu.


1
Це правильне рішення. Жодне з перерахованих вище рішень не працювало для мене
— Йонатан Сімсон

1
Я на gcc 6.5, але ті ж методи вирішили питання. Цікаво те саме джерело: незрозумілий пакет R.
— Ufos

Так, це було одне найкраще рішення, про яке я міг придумати.
— Маной Кумар

4

Рішення:

cd /usr/lib/gcc/x86_64-linux-gnu/4.6
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a

Не могли б ви зробити це трохи більш багатослівним? Може хоч окремий cdрядок?
— Волкер Зігель

2
Будь ласка, додайте пояснення. Люди ніколи не повинні сліпо виконувати команди, які вони знаходять в Інтернеті. Тому, будь ласка, також не пишіть їх.
— s3lph

Дякую, це вирішило це для мене! У моєму випадку це було cd /usr/lib/gcc/x86_64-linux-gnu/4.9.3і тоді sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
— Жубарб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.