ifort中与gfortran的-static-lbgcc、-static-libgfortran等效的参数是什么?
ifort编译适配gfortran静态链接参数等效方案
参数等效对应规则
-static-libgfortran:该参数是GFortran专用的静态链接自身运行时库的配置,ifort不依赖libgfortran,直接删除即可,无需等效替换。ifort编译时会自动调用Intel自家的Fortran运行时库(libifcore系列),不需要关联GNU的Fortran运行时。-static-libgcc:该参数是静态链接GCC的C运行时库的配置,在ifort下根据实际需求二选一即可:- 若需要全静态编译整个程序,直接使用
-static参数,会自动静态链接所有Intel运行时库+系统C运行时依赖,完全覆盖原参数的功能 - 若仅需要静态链接编译器自带的运行时、保留系统库的动态链接,使用
-static-intel参数,仅静态链接Intel提供的libifcore、libimf、libirc等运行时组件,满足大部分静态发布的需求
- 若需要全静态编译整个程序,直接使用
CMakeLists适配示例
你可以在原配置中增加编译器判断分支,自动适配不同的编译环境:
if (CMAKE_Fortran_COMPILER_ID MATCHES "Intel") # 全静态编译可选配置 set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -static") # 仅静态链接Intel运行时可选配置,和上面的全静态配置二选一即可 # set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -static-intel") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -static-libgcc -static-libgfortran") endif()
验证方法
编译完成后可在Linux环境下使用ldd 生成的可执行文件路径命令检查动态链接依赖,确认是否符合你的静态链接预期。
内容的提问来源于stack exchange,提问作者ghylander
相关产品推荐
相关产品推荐

