fealpy icon indicating copy to clipboard operation
fealpy copied to clipboard

Windows 下编译 MUMPS 的问题

Open weihuayi opened this issue 1 year ago • 0 comments

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成功,出现同样的错误为:

  1. 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版本

weihuayi avatar Oct 04 '23 03:10 weihuayi