在 Fortran Make 文件中添加 LAPACK 库
Adding LAPACK libraries in Fortran Make file
我正在用 Fortran90 编写代码。我需要使用 LAPACK 库中的 dgesv 函数。我有几个子例程,我正在使用 make file
使用 gfortran 编译它们。我可以 link 使用 gfortran 的 Lapack 库
gfortran test.f -L/path/to/libs -llapack -lblas
谁能帮助我将这些库添加到我的 make 文件中?我的 make 文件如下:
.SUFFIXES:
.SUFFIXES: .f .o .f90
#
LIBDIR = lib
UNAME := $(shell uname)
DEFINE =
FCOMP = gfortran
FOPTS = -fdefault-real-8 -g -fbounds-check -fbacktrace -O2 -Wline-truncation
F90OPTS = -ffree-form -ffree-line-length-none
#FOPTS = -fPIC -g
OBJS = read_model_2d_elasto.o output_2d_elasto.o 2d_elastostatics_FEM.o stiffness_2d_elasto.o stress_strain_2d_elasto.o \
XLIBS = -L/usr/X11R6/lib64 -lX11 -lpthread
GLIBS = -L/usr/X11R6/lib64 -lGLU -lGL -lX11 -lXext -lpthread
#default: 2d_elastostatics_FEM techop
all: 2d_elastostatics_FEM
ifeq ($(UNAME),Darwin)
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g $(OBJS) -o 2d_elastostatics_FEM
else
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g -static $(OBJS) -o 2d_elastostatics_FEM
endif
.f.o:; $(FCOMP) -c -o $@ $(FOPTS) $*.f
.f90.o:; $(FCOMP) -c -o $@ $(FOPTS) $(F90OPTS) $*.f90
clean:
-rm -f 2d_elastostatics_FEM $(OBJS) *.mod *.x *.exe
在 Makefile 中使用您用于 XLIBS 和 GLIBS 的 sme 方式
BLIBS = -L/path/to/libs -llapack -lblas
...
ifeq ($(UNAME),Darwin)
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g $(OBJS) -o 2d_elastostatics_FEM $(BLIBS)
else
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g -static $(OBJS) -o 2d_elastostatics_FEM $(BLIBS)
endif
我正在用 Fortran90 编写代码。我需要使用 LAPACK 库中的 dgesv 函数。我有几个子例程,我正在使用 make file
使用 gfortran 编译它们。我可以 link 使用 gfortran 的 Lapack 库
gfortran test.f -L/path/to/libs -llapack -lblas
谁能帮助我将这些库添加到我的 make 文件中?我的 make 文件如下:
.SUFFIXES:
.SUFFIXES: .f .o .f90
#
LIBDIR = lib
UNAME := $(shell uname)
DEFINE =
FCOMP = gfortran
FOPTS = -fdefault-real-8 -g -fbounds-check -fbacktrace -O2 -Wline-truncation
F90OPTS = -ffree-form -ffree-line-length-none
#FOPTS = -fPIC -g
OBJS = read_model_2d_elasto.o output_2d_elasto.o 2d_elastostatics_FEM.o stiffness_2d_elasto.o stress_strain_2d_elasto.o \
XLIBS = -L/usr/X11R6/lib64 -lX11 -lpthread
GLIBS = -L/usr/X11R6/lib64 -lGLU -lGL -lX11 -lXext -lpthread
#default: 2d_elastostatics_FEM techop
all: 2d_elastostatics_FEM
ifeq ($(UNAME),Darwin)
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g $(OBJS) -o 2d_elastostatics_FEM
else
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g -static $(OBJS) -o 2d_elastostatics_FEM
endif
.f.o:; $(FCOMP) -c -o $@ $(FOPTS) $*.f
.f90.o:; $(FCOMP) -c -o $@ $(FOPTS) $(F90OPTS) $*.f90
clean:
-rm -f 2d_elastostatics_FEM $(OBJS) *.mod *.x *.exe
在 Makefile 中使用您用于 XLIBS 和 GLIBS 的 sme 方式
BLIBS = -L/path/to/libs -llapack -lblas
...
ifeq ($(UNAME),Darwin)
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g $(OBJS) -o 2d_elastostatics_FEM $(BLIBS)
else
2d_elastostatics_FEM:$(OBJS)
$(FCOMP) -g -static $(OBJS) -o 2d_elastostatics_FEM $(BLIBS)
endif