Лгфортран не найден

Я использую Ubuntu 10.04 и пытаюсь скомпилировать код, который использует gfortran. В какой-то момент Makefiles делает:

-L. -lgfortran 

и я получаю ошибку

/usr/bin/ld: cannot find -lgfortran

хотя установлено:

ldconfig -p  |  grep   fortran
    libgfortran.so.3 (libc6,x86-64) => /usr/lib/libgfortran.so.3

Как я могу это исправить?

P.S. Makefile:

## FLAGS

CC:= gcc
C++:= g++
CFLAGS:= -c -O -Dintel -g 
FC:= gfortran
FFLAGS:= -c -O -cpp -g
LD:= g++
LDFLAGS:= -O


WETTER_CGAL_FLAGS:=  -g


#WETTER-Data
WETTER_cgal: weather.cpp surface_alg.h $(WETTER_CGAL_OBJECTS) WATT_interface.h data.cpp
    $(C++) $(WETTER_CGAL_FLAGS) -c weather.cpp -frounding-math
    $(C++) -c data.cpp -frounding-math 
    $(LD) $(WETTER_CGAL_OBJECTS) weather.o data.o -o WETTER_cgal -L. -lgfortran -lgmp -lCGAL -frounding-math -fp-model
 Open the way04 июн. 2012 г., 16:37
сделано, вопросы были обновлены с этой информацией
 Luca Geretti04 июн. 2012 г., 14:14
Не могли бы вы предоставить минимальный Makefile, который выдает ошибку? Это обязательно должно быть его ошибкой, так как ваша оболочка выглядит нормально.

Ответы на вопрос(4)

Просто убедитесь, что вы:

gcc --version

А также

gfortan --version

Та же.

/usr/bin/ 

Содержит разные версии.

Например: еслиgcc--version returns 4.7.3 а такжеgfortran --version 4.8Простой взлом мог бы сделать следующее.

sudo cp /usr/bin/gcc-4.8 /usr/bin/gcc

Он должен работать.

 02 мар. 2018 г., 13:20
В моей системе это указывало на / etc / alternatives / gcc, я использовалalternatives --config gcc Команда для выбора соответствующей версии GCC

и я смог исправить ее, используя символическую ссылкуlibgfortran.so.3 вlibgfortran.so.

 06 дек. 2016 г., 10:55
Хорошо, это сработало для меня, но почему это сработало? Кроме того, было бы возможно просто создать ссылку вld.so.conf.d/?
Решение Вопроса

gfortran версия отличается от версии вашегоg++? Или, может быть, он установлен в другом месте?

-lname вариант (в этом случаеname являетсяgfortran) поручает компоновщику выполнить поиск файла библиотеки с именемlibname.a в пути поиска библиотеки. Если найдено и статическое связывание не выполняется-[B]static Опция компоновщик будет искать еще разlibname.so и вместо этого ссылку на него (если найден). Еслиlibname.a не найдена ошибка будет выдана несмотря на наличиеlibname.so.

Там должно бытьlibgfortran.a где-то в вашемgfortran монтаж. Ищите его сfind и предоставить путь кg++ с-L/path/to/compiler/libs, Еслиg++ та же версия, что и вашаgfortran путь кlibgfortran.a будет уже присутствовать в пути поиска библиотеки (поскольку статические библиотеки C / C ++ и Fortran находятся в одном месте). Это не будет присутствовать, если оба компилятора отличаются по своей версии.

Например, в 64-битной системе на базе RedHatlibgfortran.a находится в/usr/lib/gcc/x86_64-redhat-linux/<GCC version>/ в то время как общийlibgfortran.so.* расположены в/usr/lib64.

Альтернативным решением является замена-lgfortran с/usr/lib/libgfortran.so.3.

-L. вариант скорее связан с-lCGAL чем-lgfortran.

и я попробовал следующую команду. Проблема была решена с помощью этого:

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

 09 февр. 2017 г., 08:31
И это решило проблему или что случилось, когда вы попробовали это?

Ваш ответ на вопрос