Ошибка при включении библиотеки в make-файл - PullRequest
1 голос
/ 26 марта 2012

У меня проблемы с включением библиотеки в make-файл.

Библиотека nlopt установлена ​​в /usr/lib, и моя программа работает правильно, когда я компилирую ее из командной строки:

gfortran -I/usr/include main.f90 -L/usr/lib -lnlopt -lm -o exec

Однако мне нужно использовать make-файл. Внизу, кажется, все в порядке, но это не работает, я получаю:

main.f90:19: Error: Can't open included file 'nlopt.f'

Не могли бы вы помочь найти ошибку, пожалуйста?


INCLUDES = -I/usr/include  

LFLAGS = -L/usr/lib  

LIBS = -lnlopt -lm

objects =  main.o

f90comp = gfortran

exec: $(objects)  
    $(f90comp) $(INCLUDES) -o exec $(objects) $(LFLAGS) $(LIBS)

main.o: main.f90
    $(f90comp) -c main.f90

clean:
    rm *.o *.mod exec
    rm $(objects)

# End of the makefile

(до $ (f90comp) и rm есть Tab)

1 Ответ

4 голосов
/ 26 марта 2012

В вашем сообщении об ошибке сообщается, что nlopt.f, который вы включили в main.f90, недоступен во время компиляции.Путь к этому файлу должен быть предоставлен компилятору.Вы делаете это правильно в одном лайнере, потому что вы компилируете и связываете за один раз, предоставляя путь:

gfortran -I/usr/include main.f90 -L/usr/lib -lnlopt -lm -o exec

Поскольку это работает, а make - нет, nlopt.f, очевидно, не находится втот же каталог, что и main.f90, но скорее в /usr/include.Вам нужно изменить строку компиляции в вашем Makefile:

main.o: main.f90
    $(f90comp) -I/usr/include -c main.f90
...