12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FortranAdvent Calendar 2022

Day 4

WindowsにFortranコンパイラをインストールするならQuickstart Fortran on Windowsを使おう

Posted at

概要

Quickstart Fortran on Windowsを使うと,

  • gfortran
  • Fortran Package Manager
  • Git for Windows
  • OpenBLAS (BLAS, LAPACK)

をまとめてインストールできます.また,付属のバッチファイルを使うことで,Fortran Standard Libraryをインストールできます.

環境

  • Windows 11
  • Quickstart Fortran on Windows v1.8

背景

Fortranには,多種のコンパイラが存在しています.その中でも,フリーのコンパイラとして,gfortranがよく利用されています.Linuxを利用している場合,OSが提供するパッケージマネージャを使えばgfortranを簡単にインストールできます.それ以外の方法は,ソースからビルドする以外は特に言及されません.一方で,Windowsの場合は,様々なインストール方法が存在します.

  • Windows向けにビルドされたバイナリを使う方法.equation.comTDM GCCMinGW-w64等でインストーラが配布されています.
  • Unix-Likeな環境をインストールして,その環境で提供されるパッケージマネージャを利用する方法.Cygwin, MSYS2, WSL等が存在します.
  • Windows向けのパッケージマネージャを使う方法.選択肢は多くありませんが,例えばScoopがあります.

選択肢が多いことは(一般的には)良い事ですが,これからFortranを勉強するぞ!と考えている人に,この選択肢を突きつけて選択を迫るのは酷でしょう.Windowsユーザにとってなじみのあるインストーラを使う方法でインストールしようにも,上で例示しているだけでインストーラが3通りもあります.

また,近年Fortranの利便性を高めるOSSの開発が盛んになっており,そのインストール方法なども調べるとなるとかなり大変です.

この状況に対して,Laurence Kedward氏はWindowsへのFortranインストールを簡略化するQuickstart Fortran on Windowsを作成しました.Laurence Kedward氏はFortran-langコミュニティの中心人物であり,論文The State of Fortran1の筆頭著者でもあります.

Quickstart Fortran on Windows

インストーラのダウンロード

Quickstart Fortranのインストーラは,[githubリポジトリ](https://github.com/LKedward/quickstart-fortran)からダウンロードします.

右カラムのReleasesからReleaseページに移動し,LatestのAssetsからquickstart-fortran-installer.exeをダウンロードします.現在の最新バージョンは,タグの記述によるとv1.8です.一部のブラウザでは,exeが検証されていない等の警告が出される場合があります.


インストール

ダウンロードしたインストーラをダブルクリックしてインストールします.このとき,WindowsによってPCが保護されましたというメッセージが表示され,インストーラの実行が妨げられる場合があります.作成者の身元は明らかですし,著者は1年以上使っていますが,危険にされされたことはありません.

インストールを続行する場合は,メッセージ下の詳細情報をクリックすると現れる実行ボタンを押します.


インストールを続行すると,インストールするコンポーネントの選択画面が出てきます.ここでは,インストール済みのGitのチェックを外し,gfortranとfpmのインストールをするようにしました.

[Next>]ボタンをクリックすると,インストールディレクトリの選択画面が出てきます.Quickstart Fortranは管理者権限を要求しないので,標準ではユーザディレクトリ以下の,AppData\Local\にインストールされます.この標準のディレクトリ(%USERPROFILE%\AppData\Local\quickstart_fortran)を,以降ではインストールディレクトリと呼びます.

[Install]ボタンをクリックするとインストールが開始されます.

インストールが完了したら,[close]ボタンをクリックしてインストーラを終了します.

設定次第では,環境変数が追加されたり,デスクトップにターミナルへのショートカットが作成されたりします.

試しに,デスクトップに作成されたショートカットQuickStart Fortran Command Lineを実行してみると,コマンドプロンプト(あるいはWindows Terminal)が起動します.

例えば

> gfortran --version

を実行してみると,コンパイラがインストールされていることを確認できます.

インストール時の設定でパスを通すようにしておけば,QuickStart Fortran Command Line以外の方法でコマンドプロンプトを開いても,gfortranを実行できるようになっているはずです.同様に,Fortran Package Manager (fpm)をインストールするようにしていれば,fpmも実行できるようになっています.

その他インストールされる便利機能

gfortranやfpm以外に,役に立つバッチファイルがインストールディレクトリ以下のutilsディレクトリにインストールされます.

  • intel-setvars.batは,gfortranとは関係ありません.Intel Fortran (Intel oneAPI Base Toolkit + HPC Toolkit)をインストールしている際に,コマンドプロンプトからifortやifxを呼ぶための環境変数を設定します.Intel Fortranを使うときは,統合されたVisual StudioからGUI経由で呼び出すか,Intel Fortranをインストールした際に作られるショートカットIntel oneAPI command prompt for Intel 64 for Visual Studio 20xxを実行して環境変数が設定されたコマンドプロンプトを立ち上げる必要がありました.複数のコンパイラを一つのコマンドプロンプトで利用する場合は結構面倒なことをしていたのですが,このバッチファイルが用意されたおかげで,Intel Fortranの呼出しが簡単になりました2
  • make.batは,インストールされるGNU Make 4.3のエイリアスを提供します.インストールされるGNU Makeのファイル名がmingw32-make.exeとなってしまっているため,コマンドプロンプトからmakeで呼び出すために用意されています.シンボリックリンクを張ればよいのですが,Windowsでシンボリックリンクを張るには管理者権限が必要であるため,管理者権限を要求しないQuickstart Fortran on Windowsではインストール時にシンボリックリンクを張ることはできません.
  • setup-stdlib.batは,Fortran Standard Library (stdlib)のソースをgithubから取得し,ビルドした後ローカルにstdlibをインストールします.

fpmのアップデート

fpmの最新バージョンは0.7.0ですが,Quickstart Fortran on Windowsでインストールされるfpmのバージョンは,一つ前の0.6.0です.これを最新バージョンに置き換えるには,githubのReleaseページから最新版のバイナリfpm-0.7.0-windows-x86_64.exeをダウンロードして名前をfpm.exeに変更し,インストールディレクトリ配下のfpmディレクトリにあるfpm.exeを上書きするだけです.

stdlibのインストールと参照

setup-stdlib.batを利用した,stdlibのインストールと参照について説明をしておきます.

stdlibのインストールは,setup-stdlib.batを実行するだけです.実行すると,githubからソースが取得され,ビルドされたモジュールファイルとライブラリがコピーされます.モジュールファイルは,gfortranの標準のincludeディレクトリ(インストールディレクトリ以下\mingw64\lib\gcc\x86_64-w64-mingw32\バージョン\finclude)にコピーされます.そのため,ビルドする際に,-I等でインクルードディレクトリを指定する必要はありません.ライブラリは標準のlibディレクトリ(インストールディレクトリ以下\mingw64\lib)にlibstdlib.aという名前でコピーされます.リンクする際は,コンパイラに-lstdlibを渡すことでリンクできます.

参照の例として,fpmのプロジェクトの設定を示します.

fpmプロジェクトを作成するには,fpm newコマンドを用います.

> fpm new qsf --app

--appオプションを指定すると,fpmで作成したプロジェクトディレクトリの下に,appディレクトリとメインルーチンとなるmain.f90を作成します.

qsf
├─app
│  └─main.f90
├─fpm.toml
└─README.md

stdlibのバージョン番号を参照するコードを書いてビルドしてみると,stdlib_versionが参照できないというエラーが現れます.

app\main.f90
program main
    use :: stdlib_version
    implicit none
    character(:), allocatable :: version

    call get_stdlib_version(string=version)
    print *, version
end program main
qsf> fpm run
<ERROR>*cmd_run*:targets error:Unable to find source for module dependency: "stdlib_version" used by "app\main.f90"
STOP 1

このエラーを回避するには,プロジェクトルートにあるfpm.toml[build]の項目に設定を追記します.

[build]
auto-executables = true
auto-tests = true
auto-examples = true
+ 
+ external-modules = ["stdlib_version"]
+ link = ["stdlib"]

この2行を追加することで,外部(Fortranコンパイラ付属のintrinsicなモジュールではない)モジュールstdlib_versionを参照すること,ライブラリlibstdlib.aをリンクすることをコンパイラに指示します.fpmの設定については,fpm (Fortran Package Manager)の設定ファイルの解説で詳しく説明しています.

設定を追加して実行すると,stdlibのバージョンを参照できている(=外部モジュールを参照し,ライブラリをリンクできている)ことを確認できます.

qsf>fpm run
qsf.exe                                done.
[100%] Project compiled successfully.
 0.2.1

まとめ

インストールするgfortranにこだわりがなければ,Quickstart Fortran on Windowsを検討してみてください.

  1. L. J. Kedward et al., "The State of Fortran," in Computing in Science & Engineering, vol. 24, no. 2, pp. 63-72, 1 March-April 2022, doi: 10.1109/MCSE.2022.3159862.

  2. Quickstart Fortran on Windowsで提供される機能のうち,これが一番有用だったかもしれません.

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?