Linux下Intel Fortran编译:仅主程序启用OpenMP的方案咨询
解决Fortran OpenMP与Pure子程序兼容的编译问题
分步编译链接的正确步骤
无需修改Pure子程序代码,按以下终端命令分步操作即可解决链接错误:
- 编译模块文件(禁用OpenMP,避免与Pure子程序冲突):
ifort -c modules1.f90 ifort -c modules2.f90
执行后会生成modules1.o、modules2.o以及对应的模块定义文件(.mod)。
- 编译主程序(启用OpenMP):
ifort -c -qopenmp mainprog.f90
生成mainprog.o目标文件。
- 链接所有目标文件(必须带上OpenMP选项,确保链接OpenMP运行时库):
ifort -qopenmp modules1.o modules2.o mainprog.o -o name.out
错误原因说明
之前链接时出现undefined reference to omp_get_thread_num,是因为链接阶段未添加-qopenmp选项。ifort的-qopenmp不仅控制编译时的OpenMP语法处理,还会在链接阶段自动引入OpenMP运行时库,缺少该选项就会找不到OpenMP相关函数的实现。
关于IDE的说明
不需要安装Eclipse IDE,通过上述终端命令即可完成编译,完全无需修改现有代码。
内容的提问来源于stack exchange,提问作者1skel1
相关产品推荐
相关产品推荐

