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

M1 Mac(arm64架构)gfortran编译Fortran程序链接失败求助

解决M1 Mac(arm64)上gfortran编译Fortran模块的链接错误

你遇到的Undefined symbols for architecture arm64错误,本质是链接器找不到模块myModule中定义的myFunc和mySub的符号。因为Fortran模块需要先编译生成对应的.mod模块信息文件和.o目标文件,主程序编译时依赖.mod文件,链接时需要.o文件参与。如果只单独编译主程序文件,链接阶段会缺失模块的目标代码,导致符号找不到。

方法1:一步编译所有源文件

直接将主程序和模块文件一起传给gfortran,编译器会自动处理编译顺序和链接:

gfortran -std=f2008 example.f08 module.f08 -o myprogram

执行后会生成可执行文件myprogram,运行./myprogram即可得到预期输出。

方法2:分步编译(适合大型项目)

如果是多文件的复杂项目,分步编译更便于管理:

  1. 先编译模块文件,生成模块信息文件mymodule.mod和目标文件module.o:
gfortran -std=f2008 -c module.f08
  1. 再编译主程序并链接模块的目标文件:
gfortran -std=f2008 example.f08 module.o -o myprogram

关键注意点

  • 编译顺序必须是先编译模块文件,再编译依赖该模块的主程序,否则主程序编译时会找不到.mod文件。
  • -std=f2008参数确保编译器以Fortran 2008标准编译代码,匹配你的代码版本。

内容的提问来源于stack exchange,提问作者sphericalcylinder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:15:33