fealpy
fealpy copied to clipboard
Windows 下编译 MUMPS 的问题
1.对 Makefile.inc 针对 Windows 系统做的修改
# Makefile.inc
LPORDDIR = $(topdir)/PORD/lib/
IPORD = -I$(topdir)/PORD/include/
LPORD = -L$(LPORDDIR) -lpord
LMETISDIR = /C/msys64/mingw64/lib
IMETIS = -I/C/msys64/mingw64/include
LMETIS = -L$(LMETISDIR) -lmetis
ORDERINGSF = -Dmetis -Dpord
ORDERINGSC = $(ORDERINGSF)
PLAT =
LIBEXT = .a
OUTC = -o
OUTF = -o
RM = /bin/rm -f
CC = gcc
FC = gfortran
FL = gfortran
AR = ar vr
RANLIB = ranlib
INCSEQ = -I$(topdir)/libseq
LIBSEQ = $(LAPACK) -L$(topdir)/libseq -lmpiseq
LIBBLAS = -lopenblas
LIBOTHERS = -lpthread
CDEFS = -DAdd_
OPTF = -O -fPIC
OPTC = -O -fPIC
OPTL = -O -fPIC
INCS = $(INCSEQ)
LIBS = $(LIBSEQ)
LIBSEQNEEDED = libseqneeded
对于以上多种情况我尝试了多次,一直没有make成功,出现同样的错误为:
- Windows 下安装 Mumps Interface for Matlab
此处选择mex -setup FORTRAN显示“错误使用 mex,未检测到支持的编译器。”
把 Makefile 文件直接替换为下面的内容:
# MUMPS_5.1.2/MATLAB 下的 Makefile 文件
MATLABROOT = /C/MATLAB/R2016b
MUMPSROOT = /C/msys64/home/why/software/MUMPS_5.1.2
MINGWROOT = /C/msys64/mingw64
MUMPSLIBS = -L${MUMPSROOT}/lib -ldmumps -lmumps_common -lpord -L${MUMPSROOT}/libseq -lmpiseq
LIBS = -L${MINGWROOT}/usr/lib -lmetis -lopenblas -lgfortran # 注意
MEXLIBS = -L${MATLABROOT}/extern/lib/win64/microsoft -llibmex -llibeng -llibmat -llibmx -llibut # 这两行中引用软件包名字的区别
CC = gcc
CCFLAGS = -I${MATLABROOT}/extern/include -I${MUMPSROOT}/include -I${MUMPSROOT}/libseq
.PHONY: all
all: dmumpsmex.mexw64
dmumpsmex.mexw64: mumpsmex.c
@${CC} ${CCFLAGS} -shared -fPIC -DMUMPS_ARITH=MUMPS_ARITH_d -O2 -o $@ $< ${MUMPSLIBS} ${LIBS} ${MEXLIBS}
@strip $@
clean:
@-rm -f *.o *.mexw64
以及不太清楚以上makefile文件直接替换是否适用于5.6.0版本