个人网站:xzajyjs.cn
由于一些项目的缘故,需要有fortran的需求,但由于是M1 mac的缘故,不能像windows那样直接使用vs+ivf
这种经典配置。搜了一下网上主流的跨平台方案,主要是gfortran,最近用Coderunner
(主要比vscode配置方便得多,并且字体也比vscode默认的要好看的多)比较多,但是其本身并不支持fortran的一键编译运行,研究了一下用最简单的方式进行快速配置。
配置gfortran环境
点我下载对应版本的dmg,我这里由于是M1,因此使用ARM版本
按照提示一步步安装即可。安装成功后在终端输出如下信息即可(我这里是使用homebrew装的,可能会有些许不同):
配置CodeRunner
由于CodeRunner本身并不支持fortran的编译和运行,仅支持代码高亮,因此我们需要自行添加
点击最下方的Edit Languages
,在弹出窗口中点击左下角的添加,命名为Fortran
然后在Run Command
中键入如下命令:
gfortran $filename -o haha38299 && chmod +x haha38299 && ./haha38299 && rm haha38299
其中
haha38299
为临时命名,运行完毕后会自动删除,可自行修改,不与其他文件名冲突即可
测试
接着我们在Code Runner
中创建一个f90文件,这里可以使用自带的fortran语法高亮
键入如下测试代码:
program hello
print *, "Hello World"
end program hello
Command+S
保存,输入文件名,注意这里后缀写.f90
最后Command+R
运行
CodeRunner报错说明
使用CodeRunner
运行一些需要编译的语言 如 C
、Java
、Go
等,有可能会报如下错误:
/Users/xxx/Library/Application Support/CodeRunner/Languages/C++.crLanguage/Scripts/compile.sh:read:45: bad option: -a
Apple clang version 14.0.0 (clang-1400.0.29.102)
Target: arm64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
"/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 12.0.0 12.3 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -o /var/folders/rh/mty2h0sn5bdc7hzj05hjbxz00000gn/T/CodeRunner/Untitled -L/usr/local/lib -lc++ -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/14.0.0/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture arm64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
在询问过官方客服后,客服的解答是:
根据官方的说法,使用macOS中shell默认的zsh,可能会造成不可预知的问题。建议我们将CodeRunner
中Shell设置修改为/bin/bash
。
修改之后果然没有问题,可以正常编译源文件了。