Compiler FishPack90 sous Linux
Bonjour
je souhaite compiler la librairie FishPack90 permettant de résoudre une équation de Poisson (Helmoltz) 2D.
Cependant, a la fin de la compilation, je reçoit ceci comme erreur :
Code:
make: *** Pas de règle pour fabriquer la cible « testfish », nécessaire pour « all ». Arrêt.
Je précise que j'ai un peu modifié le makefile d'origine pour coller à ma configuration. Je vous donne donc le makefile d'origine, et celui modifié :
Makefile d'origine :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| include make.inc
all: libfish testfish
libfish:
mkdir -p ./lib
mkdir -p ./objs
( cd ./src; $(MAKE) clean; $(MAKE) )
testfish:
( cd ./test; $(MAKE) clean; $(MAKE) )
clean:
( cd ./src; $(MAKE) clean; cd ../test; $(MAKE) clean ) |
make.inc
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
LIB=../lib/libfish90.a
UNAMES := $(shell uname -s)
ifeq ($(UNAMES),Linux)
PGI := $(shell pgf90 2>&1)
ifeq ($(PGI),pgf90-Warning-No files to process)
F90 := pgf90 -module ../lib -I../lib
CPP := pgf90 -E
else
F90 := g95 -DG95 -g -fmod=../lib -I../lib
CPP := g95 -E -DG95
endif
MAKE := gmake
AR := /usr/bin/ar
endif
ifeq ($(UNAMES),AIX)
F90 := xlf -qmoddir=../lib -I../lib
CPP := xlf -d -qnoobject
MAKE := gmake
AR := /usr/bin/ar
endif
ifeq ($(UNAMES),SunOS)
AR := /usr/ccs/bin/ar
F90 := /opt/SUNWspro/bin/f90 -moddir=../lib -I../lib
CPP := /opt/SUNWspro/bin/f90 -F
MAKE := /fs/local/bin/make
endif
ifeq ($(UNAMES),IRIX64)
AR := /usr/bin/ar
F90 := f90 -I../lib
CPP := f90 -E
MAKE := /usr/local/bin/gmake
endif |
Dans src :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
include ../make.inc
SRC=fish.f blktri.f cblktri.f cmgnbn.f comf.f fftpack.f \
genbun.f gnbnaux.f hstcrt.f hstcsp.f hstcyl.f hstplr.f \
hstssp.f hw3crt.f hwscrt.f hwscsp.f hwscyl.f hwsplr.f \
hwsssp.f pois3d.f poistg.f sepaux.f sepeli.f sepx4.f
OBJ=$(subst .f,.o,$(SRC))
OBJS=$(addprefix ../objs/,$(OBJ))
$(LIB) : $(OBJS)
$(AR) -rv $@ $?
ifeq ($(UNAMES),AIX)
fish.f : fish.F
$(CPP) $< ; mv F$@ $@
endif
ifeq ($(UNAMES),SunOS)
fish.f : fish.F
$(CPP) $<
endif
ifeq ($(UNAMES),Linux)
fish.f : fish.F
$(CPP) $< > $@
endif
ifeq ($(UNAMES),IRIX64)
fish.f : fish.F
$(CPP) $< > $@
../objs/fish.o : fish.f
$(F90) -c $< -o $@; mv FISH.mod ../lib
../objs/%.o : %.f
$(F90) -c $< -o $@
endif
ifneq ($(UNAMES),IRIX64)
../objs/%.o : %.f
$(F90) -c $< -o $@
endif
clean:
rm -f $(LIB) $(OBJS) ../lib/fish.mod ../lib/FISH.mod fish.f |
Et dans test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
include ../make.inc
SRC=tblktri.f tcblktri.f tcmgnbn.f tgenbun.f \
thstcrt.f thstcsp.f thstcyl.f thstplr.f thstssp.f \
thw3crt.f thwscrt.f thwscsp.f thwscyl.f thwsplr.f \
thwsssp.f tpois3d.f tpoistg.f tsepeli.f tsepx4.f
EXES=$(subst .f,.exe, $(SRC))
all : $(EXES)
$(EXES) : $(SRC)
%.exe : %.f
rm -f $@
$(F90) -I../lib $< -o $@ -L../lib -l fish90
./$@
clean :
rm -f $(EXES) |
Et ma version un peu modifiée : :D
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
include make.inc
all: libfish testfish
libfish:
mkdir -p ./lib
mkdir -p ./objs
( cd ./src; $(MAKE) clean; $(MAKE) )
#testfish:
# ( cd ./test; $(MAKE) clean; $(MAKE) )
clean:
( cd ./src; $(MAKE) clean; cd ../test; $(MAKE) clean ) |
make.inc
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
LIB=../lib/libfish90.a
UNAMES := $(shell uname -s)
ifeq ($(UNAMES),Linux)
# PGI := $(shell pgf90 2>&1)
# ifeq ($(PGI),pgf90-Warning-No files to process)
# F90 := pgf90 -module ../lib -I../lib
# CPP := pgf90 -E
# else
# F90 := g95 -DG95 -g -fmod=../lib -I../lib
# CPP := g95 -E -DG95
# endif
F90 := gfortran -fdefault-real-8 -g -O3 -o ../lib -I../lib
CPP := gfortran -E
MAKE := make
AR := /usr/bin/ar
endif
ifeq ($(UNAMES),AIX)
F90 := xlf -qmoddir=../lib -I../lib
CPP := xlf -d -qnoobject
MAKE := gmake
AR := /usr/bin/ar
endif
ifeq ($(UNAMES),SunOS)
AR := /usr/ccs/bin/ar
F90 := /opt/SUNWspro/bin/f90 -moddir=../lib -I../lib
CPP := /opt/SUNWspro/bin/f90 -F
MAKE := /fs/local/bin/make
endif
ifeq ($(UNAMES),IRIX64)
AR := /usr/bin/ar
F90 := f90 -I../lib
CPP := f90 -E
MAKE := /usr/local/bin/gmake
endif |
Désolé pour la quantité de données. :oops:
Auriez vous une idée de l'origine de cette erreur ?
Merci d'avance ;)