gfortranのオフラインインストール方法
(オンラインインストールに失敗した場合)
2018.06.13 T. Johzaki, Hiroshima University
0. オンラインインストールできない・・・
sourceforgeのHPからmingw64のインストーラをダウンロードし、それを実行すると、オンラインで必要なファイルがダウンロードされ、mingw64がインストールされます。ただし、場合によっては、インストール中に"The file has been downloaded incorrectly"というエラーが出て、インストールできない場合があります。この場合は、インストーラ(mingw-w64-install.exe)を用いたオンラインインストールはあきらめ、gfortranコンパイラを含む”圧縮ファイル”をダウンロードしてそれを解凍する、オフラインインストール法をを行ってください。以下にはその方法をまとめています。
1. gfortranコンパイラを含む圧縮ファイルをダウンロードして解凍する
sourceforgeのHPからgfortranコンパイラを含む”圧縮ファイル”をダウンロードし、それを解凍することでオフラインインストールする方法を紹介します。
”圧縮ファイル”はsourceforge.net
HP(https://sourceforge.net/projects/mingw-w64/files/?source=navbar)を下に進んでいくと、以下のような表示箇所がある。
この中の”x86_64-posix-sjlj”をクリックしてダウンロードする。(その下の” x86_64-posix-she”との違いは私には判りません)
※ ”x86_64-posix-sjlj”をクリックすると別画面に移動し、しばらく待っているとファイル保存するフォルダを問い合わせてくる。適当なフォルダ(ここでは”ダウンロード”フォルダを選択した)を選択し、ファイルをダウンロードする。
ダウンロードできると、ダウンロードフォルダにx86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7zが加わる(下記画像はエクスプローラでダウンロードフォルダを開いた状態)
このファイルがgfortranコンパイラを含む圧縮ファイルである。拡張子を見ると、”.7z”となっている。拡張子が表示されない場合は、表示させる。à fortranプログラム作成時なども拡張子が重要となるので、拡張子は常に表示させておいた方がよい(と私は思います)。
このファイルは複数のファイルやフォルダをひとまとめにして圧縮したもので、拡張子.7zは”7z”というデータ圧縮形式で圧縮されたファイルであること示している。このファイルを解凍する必要があるが、ファイル解凍用のソフト(アプリ)が必要である。wikiで.7zを検索すると、解凍用ソフトがいくつか挙げてあるが、ここでは先頭にある7-Zipを用いる。7-Zipはhttps://sevenzip.osdn.jp/から入手できる。このリンクを開き、64ビット版をダウンロードする。
ファイル保存するディレクトリを問い合わせてくるので、”ダウンロード”フォルダを選択し、そこに保存する。ダウンロードが終了すると、”ダウンロード”フォルダに”
7z1805-x64.exe”が追加されるので、このファイルをダブルクリックしてインストールする。
1.7z1805-x64.exeをダブルクリック
2.”この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?”の問い合わせには”はい“を選択
3.”7-Zip
**.** (×64) Setup”ウィンドウが開くので(**.**はバージョンNo.)、”Install”ボタンを押す。
4.インストールが終了すると、”Install”ボタンが”Close”ボタンに変わるので、Closeボタンを押してウィンドウを閉じる。
7-Zipをインストールできたら、エクスプローラでダウンロードフォルダを開き、先ほどダウンロードしたMingw-64の圧縮ファイルを右クリックà 開いたメニューの中の“7-Zip”にカーソルを合わせるà更に開いたメニューから”展開…”を選択し、圧縮ファイルの解凍を行う。
7-Zip windowが開き、展開先を問い合わせてくるので、PCàWindows(C:)(もしくは ローカルディスク(C:)と表示されている場合もある)àProgram Filesフォルダ を展開先として選択する。
上記選択を行うと、7-Zipのウィンドウは下記のようになる。展開先としてC:\Program Filesが選択され、その中にx86_64-***というフォルダが作成され、そのフォルダ内に解凍されたファイルやフォルダが展開(保存)される。OKボタンを押して解凍を開始する。
※
Program
Filesに展開する場合は管理者権限で行う必要がある。上記ボタンを押した場合に、下記の様にアクセス拒否画面が表示された場合は、Program Filesフォルダを変更する権限がないため、ファイルの展開ができない。
この場合は、OKを押して一度展開をやめ、7-Zip File Manegerを管理者として起動する。
管理者としての起動法:@スタートメニューàA 7-Zipを展開し、7-Zip
File Manegerを右クリックしてメニューを展開し、その他à 管理者として実行
を選択する。
”この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?”の問い合わせには”はい“を選択すると、7-Zipウィンドウが立ち上がる。
上記ウィンドウで、C:をダブルクリックするとC:\が展開され、その中のUsersをダブルクリックすると、次はUsersフォルダが展開される。この中の自分のフォルダを開く(ここではtuluというのが私のuserフォルダ名,
これは各個人によって異なります。)。そうするとその中にDownloadフォルダがありますので、それをダブルクリックして開きます。そうすると、やっと、目的のファイル
“x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z”が出てきます。
ここで、先にエクスプローラで行ったのと同じように、”x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z”を右クリックして7-Zipでの展開作業を行う(展開先はやはり、C:\Program Filesとする)。
今回は7-Zip Managerを管理者権限で起動しているので、Program Filesへの書き込みができるので、ファイルの展開が開始するはずです。
7-Zipによる展開中(解凍中)のwindowが開かれるのので、解凍が終わるまでしばし待つ。
解凍後、エクスプローラでProgram Filesフォルダを展開してみると、下記の通り、x86_64-***フォルダが作成され、その中にmingw64フォルダがあるはずです。更にmingw64フォルダを展開し、その中にあるbinフォルダも展開してください。
binフォルダ内を見るとgfortran.exeというファイルがあります。これがgfortranコンパイル用の実行ファイルです。
実行(コンパイル)テスト
エクスローラのアドレスバーにカーソルを合わせて右クリックするとメニューが展開されるので、アドレスのコピーを選択する。
次にコマンドプロンプトを起動させる。
(a) スタートメニューからの起動:「スタート」à「windowsシステムツール」à「コマンドプロンプト」で起動
(b) ショートカットによる起動:「ウィンドウズキー」+「R」でファイル名を指定して実行ダイアログを表示し、”cmd”と入力してOKボタンを押す。
起動した段階でコマンドプロンプトウィンドウが最前面に出てくる(他のウィンドウをクリックしたりして後ろに下がった場合は、コマンドプロンプトウィンドウにカーソルをもっていって左クリックし最前面にもってくる=アクティブにする)。ここで、”cd␣”と打った後に(␣はスペースの意味)「cntl」+「v」で先ほどcopyしたアドレスをペーストし、⏎キーを押す。(「cntl」+「c」を打っても何も変わらない場合は、コマンドプロンプトウィンドウの上部の縁にカーソルを持っていき右クリックして、展開したメニューから「編集」à「貼り付け」を選択すると、先にコピーしたアドレスが、貼り付けられるはず。)
これにより、カレントフォルダ(コマンドプロンプトが開いているフォルダ)が“C:\Program
Files\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin”になる。
ここで「gfortran」と入力して⏎キーを押すと下記エラーメッセージが表示される。
もしくは、「gfortran -v」を入力し⏎キーを押すと、下記バージョン情報が表示される。
⇒ これは、gfortranがきちんと作動していることの証です。
次に”path”を通し、どこのフォルダからもgfortranコンパイラが使用できるようにします。
2. gfortranによるコンパイルをコマンドプロンプトで行うためにpathを通す
上記のmingw64をダウンロードして展開しただけでは、gfortran.exeがどこあるか、コンピュータにはわかりません。このため、コマンドプロンプトを立ち上げて、「gfortran⏎」と打っても、下図のようにgfortranをコマンドとして認識してくれません。
そこでコンピュータにgfortran.exeの在り処を教えるために、「path」を通します。つまり、「pathを通す」とは、コンピューターに実行ファイルの在り処を教えることです。
windows10の場合、スタートボタンを右クリックし、「システム」を選択し、コントロールパネル\システムとセキュリティ\システムを開く。
開いたウィンドウの左側にある、「システムの詳細」を選択(左クリック)し、「システムのプロパティ」ウィンドウを開く。
開いた「システムのプロパティ」ウィンドウの「環境変数」を選択し、「環境変数」ウィンドウを開く。
開いた「環境変数」ウィンドウ中の「ユーザー環境変数」の「path」を選択し、「編集」ボタンを押す。
開いた「環境変数名の編集」ウィンドウの新規ボタンを押す。
新規ボタンを押すと、新たな行(上図の場合は2行目迄が埋まっているので3行目)が入力できる状態となる。ここに、gfortran.exeが格納されているフォルダの場所を絶対パスで入力する。エクスプローラでgfortran.exeが格納しているフォルダを開き、アドレスバーにカーソルを合わせて右クリックし、展開されたメニュー中の「アドレスのコピー」を選択することで、gfortran.exeが格納されているフォルダの絶対パスがコピーされる。
上記アドレスcopyを行った後、再度「環境変数名の編集」ウィンドウを選択し、「新規」ボタンを押し、新たな行に入力できるよう状態にして、「cntl」+「v」でアドレスをペーストする。アドレスをペースト出来たら、「OK」ボタンを押して、ウィンドウを閉じる。
「環境変数」ウィンドウの「OK」ボタンを押して閉じ、「システムのプロパティ」ウィンドウも同様に「OK」ボタンを押して閉じる。「コントロールパネル¥システムとセキュリティ¥システム」ウィンドウを閉じる。
この状態で、既に開いていたコマンドプロンプトで「gfortran⏎」とうっても、下記エラーが表示されるだけで、「path」を通す前と状況は変わらない。
一旦、「コマンドプロンプト」ウィンドウを閉じて、再度コマンドプロンプトを起動し、新たに立ち上がった「コマンドプロンプト」ウィンドウにて「gfortran⏎」とすると、先ほどとは異なる鰓メッセージが表示される。
上記エラーは、”no
input files” つまり、gfortranによるコンパイラは起動しているが、コンパイルするプログラムを指定していないので、「コンパイルするファイルがないです」というメッセージであるà きちんと「path」が設定され、コンピュータにgfortran.exeの在り処を教えることができている。これで、コマンドプロンプトを立ち上げればgfortranによるコンパイルが可能となった。
もし、コマンドプロンプトを再起動して「gfortran⏎」と打っても、前のエラーと変わらず「'gfortran’は、内部コマンド、または外部コマンド・・・認識されません。」と表示された場合は、「path」の設定を失敗している。再度、「path」の設定手順を見直して、どこかでミスっていないか確認すること。
3. 任意のフォルダでコマンドプロンプトを起動する方法
コマンドプロンプトの起動方法として、2つの方法
(a) スタートメニューからの起動:「スタート」à「windowsシステムツール」à「コマンドプロンプト」で起動
(b) ショートカットによる起動:「ウィンドウズキー」+「R」でファイル名を指定して実行ダイアログを表示し、”cmd”と入力してOKボタンを押す。
を紹介していた。この2つの起動方法では、起動時のフォルダが常に同じフォルダ(特に設定していなければC:\Users\ユーザー名フォルダ)となる。一方、プログラムを作成し保存しているフォルダは、別のフォルダにあることが多く、コマンドプロンプトを起動後、cdコマンドで、そのフォルダまで移動する必要がある。これが意外に面倒くさい。そこで、プログラムを格納しているフォルダでコマンドプロンプトを起動できると便利である。その方法は、
@
エクスプローラでプログラムが格納されているフォルダを開く
A
アドレスバーにカーソルを持っていって、クリックし、そこに「cmd」と入力し⏎キーを押す。
これにより、エクスプローラで開いているフォルダでコマンドプロンプトが起動される。
下図は、デスクトップ上に作成したfortフォルダからコマンドプロンプトを起動している。
起動したコマンドプロンプトの画面を見ると、c:\Users\ユーザー名\Desktop\fort>となっており、デスクトップ上のfortフォルダからコマンドプロンプトが起動されていることが分かる。この方法を用いれば、cdコマンドによる移動を行わずとも、プログラムファイルが格納しているフォルダから直接コマンドプロンプトを起動でき、便利ですね。
ちなみに、下図はエクスプローラ画面上の各名称(間違ってなければいいけども・・・)