MST
星途 面试题库

面试题:Fortran动态链接库创建的基础步骤

请简述在Fortran中创建动态链接库的基本步骤,包括如何定义导出函数、编译选项等方面。
32.3万 热度难度
编程语言Fortran

知识考点

AI 面试

面试题答案

一键面试

1. 定义导出函数

在Fortran源文件中,使用MODULE定义模块,将要导出的函数放在模块内,并使用PUBLIC关键字声明这些函数是可被外部调用的。例如:

MODULE my_lib_module
    IMPLICIT NONE
    PUBLIC :: my_exported_function

CONTAINS
    FUNCTION my_exported_function(a, b) RESULT(res)
        REAL, INTENT(IN) :: a, b
        REAL :: res
        res = a + b
    END FUNCTION my_exported_function
END MODULE my_lib_module

2. 编译选项

不同的编译器编译选项略有不同,以gfortran为例:

  • 生成位置无关代码:使用-fPIC选项,它使生成的代码可以在内存的任何位置执行,这是动态链接库所需要的。
  • 生成共享库:使用-shared选项来生成动态链接库。

完整的编译命令示例:

gfortran -fPIC -shared -o my_lib.so my_lib.f90

其中,my_lib.so是生成的动态链接库文件名,my_lib.f90是包含导出函数定义的Fortran源文件名。

3. 链接使用

在其他程序中使用该动态链接库时,需要在链接阶段指定动态链接库的路径和名称。例如,在C语言程序中调用上述Fortran动态链接库,编译时可以使用:

gcc -o main main.c -L/path/to/ -lmy_lib

这里-L/path/to/指定动态链接库所在路径,-lmy_lib指定链接名为my_lib的库。在Fortran程序中调用动态链接库也需要类似的链接步骤,不同编译器可能有细微差别。