我试图用OpenMP编译和链接一些Fortran文件,以便在Matlab中使用mex编译器。目前我在Makefile中有编译和链接:
MEX=/usr/local/matlab/bin/mex
FORTRAN = gfortran
FFLAGS = -c -fpic -O3 -fopenmp
MEXLIB = -fopenmp
OBJS=\
file.o\
file2.o\
all: file1 file2 mex
mex: a.out $(OBJS)
$(MEX) -O a.out $(OBJS) $(MEXLIB)
file1: file1.f
$(FORTRAN) $(FFLAGS) file1.f
file2: file2.f
$(FORTRAN) $(FFLAGS) file2.f
编译器标志位于FFLAGS
,链接标志位于MEXLIB
。当我使用make all
运行时,我收到错误:
Unknown MEX argument '-fopenmp'.
这是一个链接问题,因为如果我从-fopenmp
删除MEXLIB
,则makefile不会出现任何错误(但代码似乎并不是并行运行)。我已经被告知here -fopenmp
是要使用的正确链接标记。有没有人对确切的问题有任何想法?
按照以下评论中的说明,我尝试了Matlab控制台
mex -v file1.f file2.f FFLAGS="\$FFLAGS -fopenmp" LDFLAGS="\$LDFLAGS -fopenmp"
(注意FFLAGS
而不是CFLAGS
)。这有效。有没有办法将它合并到我的Makefile中?