使用Makefile从Fortran源创建DLL文件

时间:2016-12-19 15:06:25

标签: dll makefile fortran

如何从Makefile中创建DLL文件,其中文件是用Fortran编写的? 我正在使用Windows,但在Linux系统下编译它并不是一个问题。

我有两个模块和一个使用这些模块的文件。 通常情况下,我会写下以下内容来制作我想要的内容:

gfortran module1.f90 module2.f90 main.f90 -o main.dll

1 个答案:

答案 0 :(得分:0)

如果module1.f90module2.f90只是模块而你想创建一个dll,你可以使用以下命令:

gfortran -o main.dll module1.f90 module2.f90 -shared -fPIC -lgfortran

它将生成一个可以在以后由主程序加载的dll。

此处生成lib的主要标志是-shared-fPIC

如果main.f90是主程序,则输出应为exe,编译命令可能为:

gfortran -o main.exe module1.f90 module2.f90 main.f90

它将使用模块生成主文件exe

编辑:

这里是一个构建DLL的示例Makefile(针对问题):

FC=gfortran
FFLAGS=-g -shared -fPIC
LDFLAGS=-lgfortran

main.dll: main.f90 module1.o module2.o
    $(FC) $(LDFLAGS) -o $@ $?

module1.o: module1.f90
    $(FC) $(FFLAGS) -o $@ $? 

module2.o: module2.f90
    $(FC) $(FFLAGS) -o $@ $?

clean:
    rm -f *.o *.exe *.dll

执行后:

gfortran -g -shared -fPIC -o module1.o module1.f90
gfortran -g -shared -fPIC -o module2.o module2.f90
gfortran  -o main.dll main.f90 module1.o module2.o

它生成DLL:

20/12/2016  16:23            59.091 main.dll

也许,可以使用宏来改进这个Makefile。

HTH

使用gfortran版本6.2.0(x86_64-posix-seh-rev0,由MinGW-W64项目构建)测试