2015-08-14 4 views
0

Я пытаюсь связать библиотеку Lapack с моим кодом Makefile и Fortran 90 (gfortran), но каждый раз, когда я набираю: make pkr_test (pkr_test - это имя кода) я получаю следующее сообщение об ошибке:`make: * No rule to make target ошибка времени компиляции

make[1]: * No rule to make target '/usr/ben/models/common/src/fitting.o'. Stop. make[1]: Leaving directory '/usr/ben/models/common/src' Makefile:20: recipe for target '/usr/ben/models/common/src/fitting.o' failed make: * [/usr/ben/models/common/src/fitting.o] Error 2

Я могу приложить Makefile и Makefile. В случае, если это поможет вам дать мне быстрое решение. Я действительно пытался прикрепить его, но я не справился.

Вот Makefile:

# 
# Makefile for pqr_test 
# 
include ../../Makefile.in 
# 
MODS= $(DIR_test)wrt_two.o \ 
    $(DIR_test)ppt_one.o \ 
    $(DIR_test)cat_one.o \ 
    $(DIR_test)uti_test.o \ 
    $(DIR_test)ncdf_test.o \ 
    $(DIR_test)quick_test.o \ 
    $(DIR_test)ovr_one.o \ 
    $(DIR_test)row_to.o \ 
    $(DIR_test)fitting.o 
# 
OBJS=pqr_test.o 
# 
$(MODS) : 
    cd $(DIR_test) && make $(MODS) 
# 
pqr_test : $(MODS) $(OBJS) 
    cd $(DIR_test) && make $(MODS) 
    $(FC) $(FFLAGS) -L$(XML_LIB) -L$(NC_LIB_LOC) -L$(NC_LIB_LAPACK_LOC) -I$(NC_INCLUDE) -I$(NC_LAPACK_INCLUDE) \ 
     -Wl,-rpath,$(NC_LIB_LOC) $(NC_LIB_LAPACK_LOC) $(MODS) $(OBJS) $(NC_LIB) $(NC_LIB_LAPACK) \ 
     -lflib -o ../bin/pqr_test 
# 
pqr_test.o : pqr_test.f90 
    cd $(DIR_test) && make $(MODS) 
    $(FC) $(FFLAGS) -I$(DIR_test) -I$(XML_INCLUDE) -I$(NC_INCLUDE) -I$(NC_LAPACK_INCLUDE) -c pqr_test.f90 
# 
cleanup: 
    mv $(DIR_test)*.o $(DIR_test)../obj/ 
    mv $(DIR_test)*.mod $(DIR_test)../mod/ 
    mv *.o ../obj/ 
# 
clean: 
    rm -f $(DIR_test)*.o 
    rm -f $(DIR_test)../obj/*.o 
    rm -f $(DIR_test)*.mod 
    rm -f $(DIR_test)../obj/*.o 
    rm -f *.o 
    rm -f ../obj/*.o 
# 
+0

Как я могу прикрепить файл? –

ответ

0

Я пытаюсь связать библиотеку LaPack с моим Makefile и Fortran 90 кода (gfortran), но каждый раз, когда я типа: make pkr_test (pkr_test это имя из код) я получаю следующее сообщение об ошибке:

make[1]: * No rule to make target '/usr/ben/models/common/src/fitting.o'. Stop. 
make[1]: Leaving directory '/usr/ben/models/common/src' 
Makefile:20: recipe for target '/usr/ben/models/common/src/fitting.o' failed 
make: * [/usr/ben/models/common/src/fitting.o] Error 2 

Makefile, пытается построить объект) модули (указанные в MODS переменная, включая последнюю, $(DIR_test)fitting.o.

Он делает это, выполняя эквивалент вызова самого себя, make $(DIR_test)fitting.o. Проблема заключается в том, что ваш Makefile и включенный Makefile (../../Makefile.in) не содержат инструкций о том, как сгенерировать этот файл, а также implicit make rules.

Поскольку зависимость ($(DIR_test)fitting.o) не может быть построена, make не может построить вашу указанную цель (pkr_test).

+0

Привет, Mctylr, я новичок, поэтому я пытаюсь понять, но я не уверен, что получил его, можете ли вы мне прямо сказать, что мне нужно сделать именно для решения этой проблемы? –

+0

Я заметил что-то еще, я обнаружил, что библиотека lapack находится не в том же каталоге, что и главная директория DIR_test, любая идея связать ее с целью решить эту проблему, возможно, это проблема. более конкретно, библиотека lapack существует в этом каталоге: /usr/lib64/liblapack.a Как вы думаете, это может быть проблема? если да, можете ли вы предложить решение при использовании make-файла? –

+0

Я также забыл сказать, что fit.o - это код, который вызывает библиотеку lapack –

Смежные вопросы