改訂1 2020.05.28 T. Johzaki
初版 2017.05.20 T. Johzaki,
Hiroshima Univ.
本ドキュメントは、講義にて使用するgfortranを学生個人のPCにインストールする際の手引きとして作成したものであります。講義ではWindowsPCのみで行う予定でおりましたが、Mac利用者が多いということで、対応したものです。boot campでwindows OSをmac上で動かして‥とも考えましたが、そのマニュアル作る中で、boot camp導入、windowsインストール、各種設定、更にはmacOS ⇔ WindowsOSでのコマンド等対応・・・という一連の作業が大変であろうなぁ・・と思い、macOS nativeにgfortranを導入する方向に方針変換。WindowsOS
terminal(コマンドプロンプト)とlinuxベースのmacOS terminal(ターミナル)ではコマンドなども違うため、講義において混乱を招く恐れもありますが・・・個人的にはlinuxに慣れてた方がよかろうという思いもあり、本ドキュメント作成と相成りました。
改訂1: 2020年度講義用の改訂 Mac OS 10.15.4でのインストールです。2017年からは若干手順が変わったようです。
1.
Xcodeのインストール
XcodeはmacOS上でgfortranを実行するために必要なアプリであり、最初にインストールする。
Mac apple
storeを開いて、Xcodeを検索する。
検索結果からXcodeを探し、“入手”を選択
これでダウンロードが始まると思います。
※
結構時間かかります。
※
途中、追加コンポーネントをインストールするかを聞かれた場合は、Xcodeの実行とデバッグをサポートするための追加コンポーネントが必要なので、installボタンを押す。
Xcodeを開く(起動する)と次の画面が表示されます。
version 11.5です。
このXcodeは”アプリケーションフォルダ”に保存されている。
以上でXcodeのインストール終了。
引き続き、command line toolsのインストールを行う。Xcodeを起動する(インストールした段階で起動されているが、起動されていない場合はアプリケーションフォルダ内のXcodeアイコンをダブルクリックして起動する。起動すると、Xcodeインストール終了時に表示されたWelcome to Xcode ウィンドウが開く。
画面右上のXcodeメニューを開き、Open Developer Toolを選択し、More Developer Toolesを開く
自分のMac OSのバージョン*と、インストールしたXcodeのバージョン(Xcode起動時に出てくるWindow内に記載されている)にマッチしたcommand line toolsを選択する。ここでは、OS version
10.15.4 / Xcode version11.5より、それに対応した#command line toolsを選択した。
*
macOSの確認:左上のアップルマークをクリックし、”このMacについて”を選択するとmacOSのバージョンを示すwindowが開かれ、そこを見れば自分のmacOSのバージョンはわかる。
#
選択肢の中で、比較的新しいXcodeのバージョンではMac
OSは記載されないので、Xcodeのバージョンのみ考えればよいようです。
赤四角内のcommand line toolsをクリックすると下記メニューが開く。右端の***.dmgをダブルクリックし、ダウンロードする。(ここから下は11.4.1になってます…ちょっと前に作ったものなので)
ダウンロードされたファイルは、右下のごみ箱横のダウンロードアイコンをクリックするとこれまでにダウンロードしたファイルが表示されるので、今ダウンロードした***.dmgファイルをダブルクリックすると***.pkgファイルが生成される。これをダブルクリックすると、command line toolsのインストールが開始される。後は指示に従ってインストールする。
⇓
インストール終了すると、下記画面となる。
インストール用ファイルは不要なので、ごみ箱に捨てるを選択する。
gfortran開発元のGNUのホームページのGFortranサイト” http://gcc.gnu.org/wiki/GFortran”からDownload “Binaries for Windows, Linux, MacOS and much more”を選択して開く
開いたページのMacOSを選択する。
次に開いたページで自分のMac用のリンクを開く。
Latest releaseを選択
その下に出てくるインストールファイルを選択し、ダウンロードする。
これによりgfortranのdmgファイルがダウンロードされる。
次に、画面右下のダウンロードアイコンをクリックし展開すると、gfortran**.dmgファイルがあるので、それをクリックする。
↑これ、古いバージョンですが、手順は一緒です。
※
以下、2017年度作成内容ですが、ほぼ一緒なので、これ以降は改訂1では手を加えてません。
※
別ウィンドウが立ち上がり、gfortran.pkgアイコンが表示されるので、それをダブルクリックする。
インストールウィンドウが開くので、“続ける”を押す。
インストール先の選択画面が表示される。そのままインストールボタンをクリックして先に進む。
さらに必要なディスクサイズが示されるが、インストールボタンをクリックして先に進む。
インストールの許可をするために、mac login用のパスワードを入力してインストールボタンをクリックする。
インストールがスタートする。終了すると下記画面が表示される。閉じるボタンを押してインストールウィンドウを閉じる。
インストール用ファイルを削除するか問い合わせてくる。不要なので削除する。
以上で、インストール終了です。お疲れさまでした。
と、安心する前に、ちゃんとインストールできているかを確認する。
アプリケーションフォルダ内のユーティリティーフォルダ内にある”ターミナル”をダブルクリックして開く。
u ターミナルはgfortran使用時には必ず使用するので、dockに追加しておくとよい。
dockから出したいときは
さて、元に戻って、開いたターミナルウィンドウに移って、”which gfortran”と入力し⏎キーをおすと、gfortranコンパイル用実行ファイルがどこにあるか示してくれる。
更に”gfortran -v”と入力し、⏎キーを押すとインストールしたgfortranのバージョンが表示される。
以上で、gfortranのインストールが完了していることが確認できた。
以下では、よく使うlinuxコマンドを紹介するとともに、実際にgfortranによるプログラムのコンポパイルと実行法を紹介します。
macOSのターミナル上では、linuxコマンドにより作業を行う。
上の説明では、フォルダと呼んでいたファイル格納場所のことをlinuxではディレクトリと呼ぶ。このディレクトリ間移動や、ディレクトリ作成、削除、ディレクトリ内のファイル・ディレクトリの表示等、よく使うコマンドは覚えておく必要がある。ただし、以下の説明では、ここまでの説明の流れ上ディレクトリを、フォルダとして記述している(ディレクトリ=フォルダとしてあつかっている)。
※
linuxコマンドについてはwebにて”linux コマンド 一覧“で検索すると、いろいろ出てきますので以下で説明する内容以外については、そちらを参照ください。
ターミナルを開いた際は、ホームフォルダ上にいる。ターミナルを開いた際に表示される
“kinosakitomoyoshinoMacbook-pro:~
tulu$”
により、今の場合は、ホームフォルダが”tulu”である。この$の後にコマンドを入力して作業を行う。以下の説明の文章部では、上記部を”tulu$”と簡略表記して、説明を行う。
”pwd”と入力して⏎キーを押すと、ターミナルが開いているフォルダを表示してくれる。(Windows terminalではcdコマンドに対応)
この/Users/tuluがホームフォルダである
u “ls”:現在いるフォルダ直下にあるフォルダやファイルを表示する。
”ls”と入力して⏎キーを押すと、今いるフォルダ(ターミナルが開いているフォルダ)にあるディレクトリやファイルが表示される。(Windows terminalではdirコマンドに対応)
“ls -l”は名前だけでなく、属性等詳細情報を表示する。
例えば、いまいるフォルダが”/Users/tulu/”で、その下層にあるDocumentsフォルダに移動するには“cd Documents”と入力して⏎キーを押す。(Windows
terminalでも同じ)
次の例は
@
pwdコマンドにより今いるフォルダを確認
A
lsコマンドで今いるフォルダ直下にあるファイルやフォルダを確認
B
cd
Documentsにより、下層にあるDocumentsフォルダに移動
C
lsコマンドによりDocumentsフォルダにあるファイルやディレクトリを確認
D
cd
testにより、更に下層にあるtestフォルダに移動
E
pwdで今いるフォルダを確認
F
cd .. で一層上のディレクトリDocumentsに移動(一層上に移動する場合はフォルダ名ではなく”cd”+”スペース”+”..”(ピリオド2つを続けて打つ)
G
再びlsコマンドによりDocumentsフォルダにあるファイルやディレクトリを確認
H
cd ..で一層上のディレクトリ tuluに移動。
次の例は
@
pwdコマンドにより今いるフォルダを確認
A
cd
Documents/testにより、下層にあるDocumentsフォルダのその下のtestフォルダに一度に移動(2階層分下に移動)
B
pwdコマンドにより今いるフォルダを確認
C
cdコマンドによりホームフォルダに移動(cdのみ入力して⏎キーを押した場合はホームフォルダに戻る)
今いるフォルダの下に test1というフォルダを作りたい場合は”mkdir test1”と入力して⏎キーを押す。
今いるフォルダの下にある test1というデフォルダを削除したい場合は”rmdir test1”と入力して⏎キーを押す。
次の例は
@
cd
Documents/testにより、下層にあるDocumentsフォルダのその下のtestフォルダに一度に移動(2階層分下に移動)
A
pwdコマンドにより今いるフォルダを確認
B
lsコマンドによりDocuments/test/下には何もないことが分かる。
C
mkdir test1によりtest1フォルダを作成
D
lsコマンドによりtest1が作成されたことが確認できる。
E
rmdir test1コマンドにより作成したtest1フォルダを削除
F
lsコマンドによりtest1が削除されたことが確認できる。
G
cdコマンドによりホームフォルダに移動
u “more ” テキストファイルの中身をページ単位で表示するコマンド
上記例は、hello.f90というファイルが存在し、その中身を確認するために”more hello.f90⏎”により、ファイル内容を表示させた例。hello.f90 (END)と表示されているが、この後⏎キーもしくはspaceキーを押すと、通常画面に戻る。
u “cat” テキストファイルの中身をすべて表示するコマンド
“more”がページ単位で出力するコマンドであるのに対し、”cat”は一度にすべて表示する。
more, catはファイル冒頭からの表示であるが、”tail”は末尾の10行のみを表示する。
“tail -100”とすると、末尾100行を表示
ターミナル上に表示された内容を消して、最初に立ち上げた状態と同様、何も打ち込んでない状態にする。
5.
プログラム作成とgfortranによるプログラムコンパイル・実行例
ここでは、プログラム実行により画面上に”Hello, world!”を表示するだけの簡単なものである。
プログラム名 hello.f90
内容
上記プログラムの”!”の右側はプログラム内容を説明するためのコメント文である。
プログラム本体は”!”よりも左側の部分
(a) プログラムの作成
上記プログラムをテキストエディットを用いて作成する。
ターミナルを立ち上げ、プログラムファイルを作成したいフォルダに移動(もしくは作成&移動)し、そこで、linuxベースのエディタ(vi やemacs)を用いてプログラミングするのが自然な流れではあるが、vi, emacsともに使ったことがない場合、使い方を覚えるまでに少々時間を要する。ここでは、macOSアプリケーションとして最初からあるテキストエディットを使った方法を紹介する。
※
viやemacsを使う場合は、プログラムファイルを作成するフォルダに移動したうえで”vi hello.f90⏎”や”emacs hello.f90⏎”と打てば、viもしくはemacsエディタが立ち上がり、空の”hello.f90”ファイルの編集が可能となる。詳しくはwebにて”viエディタ” “emacsエディタ”等検索し、使用方法を調べてください。
テキストエディットによるプログラミング手順:
@ アプリケーションフォルダ内のテキストエディットをダブルクリックして開く
A 開いたテキストエディット
ウィンドウ左下の新規書類ボタンを押す。
B 新しく開かれたファイルにプログラム内容を書く。(!マーク以降のコメントはなくてよい)
この際、注意すべき点は、
半角英数字と記号のみを用いること
fortranプログラム本体部(!マークも含む。)には半角文字しか使えない。全角文字が(スペースや!マークも)が入っているとコンパイラが読めずにエラーとなる。
※
! マークより右側はコメント部なので全角文字を使ってもOK
C ファイルの形式を標準テキストに変換する。
画面上部のフォーマットタグを開いて“標準テキストにする”を選択。
OKをおして変換する。
D ファイルの保存
画面上部のファイルタグを開いて”保存”を選択する。
ファイル名を”hello.f90”とし、場所は“デスクトップ”を選択し、保存ボタンを押す。
これにより、デスクトップ上にhello.f90が作成された。
開いていたファイル”hello.f90”の左上の赤ボタンを押して閉じる。
デスクトップに”hello.f90”があることを確認する。
E ファイルの移動
このままデスクトップでコンパイル実行も可能だが、デスクトップ上にファイルが増えると見づらいので、ファイルを移動する。
Finderを開いて、書類を開き、そこにhelloフォルダを作成する。
新規フォルダ名を”hello”とする。
作成したhelloフォルダにデスクトップ上のプログラムファイルhello.f90をドラッグして移す。
移動後、デスクトップからはhello.f90ファイルはなくなり、helloフォルダ内に移ったことが分かる。(Finderの表示法を変更している点に注意)
(b) プログラムのコンパイルと実行
先ほど作成したhell.f90は人が読むことはできるが計算機は読めない。ひとが読める形式のプログラムを計算機が読める言葉に変換するのがコンパイルである。
@
ターミナルを開く
A
先ほど作成したフォルダ”hello”に移動し、hello.f90があること確認する。
Finderでの”書類“はターミナル上ではホームフォルダ下のDocumentsフォルダに相当する。したがってcdコマンドでDocumentsに移動し、さらにその下に作成したhelloフォルダに移動する(一度にcd
Documents/hello⏎)で移動してもよい。
移動後、”ls”コマンドによりファイルの存在を確認する。
“cd Documents⏎”の後に、”ls⏎”とすると、helloとtestと表示される。ただし、これがファイルなのかフォルダなのかは一見わからない。”ls –l⏎”で、詳細表示すると、各ファイルorフォルダが表示されている行の先頭が
drwxr-xr-xと”d”から始まっているàフォルダ(ディレクトリ)であることを示している。
次に”cd hello⏎”で、”hello”フォルダに移動し、再び”ls⏎”, ”ls -l⏎”でファイル表示させる。,確かにhello.f90がある。
”ls –l⏎”で、詳細表示すると、hello.f90が表示されている行の先頭が
-rw-r---r-- と”-”から始まっているàファイルであることを示している。
ここでmoreコマンドによりファイルの中身を確認する。
先ほど作成したhello.f90の内容が示されている。
B
gfortranによるコンパイル
hello.f90をコンパイルし、計算機が読める形のファイル(実行形式ファイル)を作成する。これは”gfortran hello.f90⏎”により行う。”gfotran”+space+”ファイル名”である。
この後”ls”コマンドを打つと、実行形式ファイルa.outが新たに作成されていることが分かる。上記コンパイルコマンド実行後に何らかのメッセージが出てきた場合はプログラムにエラーがある。(エラーが出た場合については後述)
C
実行
a.outが作成されていれば、後は実行するのみ。”./a.out⏎”により実行する。
※実行ファイル前の./はおまじないだと思ってください。(今いるフォルダにある‥という意味で、./a.out⏎は、今いるフォルダにあるa.outファイルを実行してくださいという命令)
これによりHello, world!が表示されれば成功です。お疲れさまでした。
意図的にプログラムにエラーを加えて、その際のコンパイル結果並びに修正方法についてしめす。
上記でコンパイル・実行が問題なく行えた”hello.f90”に対して意図的にエラーを追加する。
Finderで”書類”フォルダ(これはターミナル上ではDocumentsフォルダに相当)内のhelloフォルダ内のhello.f90をダブルクリックすると、Xcodeのエディターによってhellp.f90が立ち上がる。
ここで、2行目のprint文の最後に”a”を追加し、3行目のstop文の最後に全角スペースを加え(全角スペースは表示されていない)、保存(fileàsave or ⌘+s)。
エラーを加えたhello.f90をコンパイルすると下記表示となった。
上記例では2カ所エラーがある。
一つ目のエラーは”print文”においてsyntax error (文法上のエラー)があるといっている。
→
プログラム作成の冒頭で示した”内容”と比べると、・・・Hello, world!”の後に余分な”a”が入っている。これを消して再度コンパイルする。
※
この際は、Finderでファイルhello.f90を右クリックする(トラックパッドを2本指で触れながらクリックする)ことで開かれるメニューの”このアプリケーションで開く”を開くと、ファイル編集できるアプリが示される。現在はXcodeがデフォルトとなっている。これを使って編集する。(もしくはhello.f90をダブルクリックすれば、デフォルトとなっているXcodeでhello.f90が開かれる)。
・・world!”の後の余分な”a”を削除して保存する(メニューバーのfile→save, もしくは⌘+s).
再度コンパイルしてみると・・・
一つ目のエラーは消えた。à一つ目のバグ取り成功!
余談
バグ (bug) とは、英語で「虫」の意味で、転じてコンピュータプログラムの誤りや欠陥を表す。プログラムの誤りや欠陥を修正することを“バグ取り”、“デバッグ(debug)”という。
もう一つのエラーはSTOP文の近くにBlank requiredといっている・・・
これは、意図的に”stop”の後に全角スペースを埋め込んでいたことによるエラー。
再度、hello.f90を開いて”stop”の後に入れていた全角スペースを削除してファイル保存し、再度コンパイルすると、エラーは消えた。さらに作成された実行ファイルを実行させると”./a.out⏎”ちゃんと”Hello,
world!”と表示された。めでたしめでたし。