You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Intel Fortran中覆写-fvisibility=hidden设置以导出指定例程

Intel Fortran 指定共享对象对外可见实体的方法

Intel Fortran 提供了与C/C++类似的机制,当使用-fvisibility=hidden编译选项全局隐藏所有Fortran例程的对外可见性时,可通过**!DEC$ ATTRIBUTES VISIBILITY编译指令**显式指定哪些模块实体或例程允许外部调用,具体用法如下:

1. 标记独立例程

在独立子程序或函数的定义前添加编译指令,将其设为对外可见:

!DEC$ ATTRIBUTES VISIBILITY :: public_sub
subroutine public_sub()
    ! 例程实现代码
end subroutine public_sub

!DEC$ ATTRIBUTES VISIBILITY :: public_func
function public_func() result(ret_val)
    integer :: ret_val
    ! 函数实现代码
end function public_func

2. 标记模块内的实体

对于模块中的子程序、函数或全局变量,可在模块内直接为目标实体添加可见性标记:

module shared_mod
    implicit none
    ! 标记模块变量对外可见
    !DEC$ ATTRIBUTES VISIBILITY :: public_var
    integer :: public_var

contains
    ! 标记模块子程序对外可见
    !DEC$ ATTRIBUTES VISIBILITY :: exposed_sub
    subroutine exposed_sub()
        ! 子程序实现
    end subroutine exposed_sub

    ! 未添加标记的实体,在-fvisibility=hidden编译时默认对外不可见
    subroutine hidden_sub()
        ! 子程序实现
    end subroutine hidden_sub
end module shared_mod

3. 编译配合

编译共享对象时,先通过-fvisibility=hidden全局隐藏未显式标记的实体,再结合上述指令暴露需要对外调用的部分:

ifort -shared -fvisibility=hidden -o my_shared_lib.so source_file.f90

内容的提问来源于stack exchange,提问作者Mads M Pedersen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:13:26