Intel Fortran编译OpenMP代码时/STACK等链接选项不被识别求助
解决Intel Fortran(ifort)命令行添加/STACK链接选项被忽略的问题
问题根源
/STACK 和 /LARGEADDRESSAWARE 是微软链接器(link.exe)的专属选项,并非Intel Fortran编译器(ifort)本身的参数。直接在ifort命令后添加这些选项,编译器会因无法识别抛出#10006警告并忽略它们。
正确的命令行用法
1. 通过/Qlink传递链接器选项
使用ifort的/Qlink:前缀,将链接器参数传递给底层的link.exe,格式如下:
ifort /Qopenmp /Qlink:STACK:10000000 your_openmp_code.f90
/Qopenmp:启用OpenMP支持(编译OpenMP代码必须添加)/Qlink:STACK:10000000:将栈大小设置为10MB(10000000字节),注意此处无需加开头的/
若需同时指定多个链接器选项,用逗号分隔即可:
ifort /Qopenmp /Qlink:STACK:10000000,LARGEADDRESSAWARE your_openmp_code.f90
2. 分开编译与链接步骤(更灵活)
先编译生成目标文件,再手动调用link.exe指定链接选项:
# 编译生成目标文件 ifort /c /Qopenmp your_openmp_code.f90 # 手动执行链接,指定栈大小和OpenMP运行时库 link your_openmp_code.obj /STACK:10000000 libiomp5md.lib
- 若链接时提示找不到
libiomp5md.lib,需添加Intel oneAPI的库路径(路径根据实际安装目录调整):
link your_openmp_code.obj /STACK:10000000 /LIBPATH:"C:\Program Files (x86)\Intel\oneAPI\compiler\2021.6.0\windows\lib\intel64" libiomp5md.lib
关于/LARGEADDRESSAWARE的说明
64位Intel Fortran编译器生成的程序默认已启用/LARGEADDRESSAWARE,无需额外添加该选项。若需强制确认,可通过/Qlink:LARGEADDRESSAWARE传递,但实际无必要。
内容的提问来源于stack exchange,提问作者Echo
相关产品推荐
相关产品推荐

