計算数学演習第0回

C言語+gnuplotを使うには?

この授業ではC言語の基本的な使い方とgnuplotによるグラフの描画を行います。
特にC言語はこの授業で扱う常微分方程式の数値解法などの数値計算では非常に高速なため、昨今人気のPythonでも部分的にC言語を使用するなど、根強い人気があります。
また、数値計算結果をグラフで描画する際には、グラフ描画ソフトが必要です。そのため、この授業では描画ソフトとしてgnuplotを使います。
しかし、C言語を利用するにはC言語のコンパイラが必要ですし、gnuplotも通常インストールはされていません。
メディアセンターのPCにはどちらも標準で利用可能となっていますが、皆さんのPCには自分でインストールする必要があります。
そこで、自宅からオンラインで授業に出席したい人や、自宅で予習復習をしたい人は、以下の方法を参考にしてみてください。

Windowsの場合

Windowsの場合、LinuxやMacなどのUNIX系とは異なり、C言語とgnuplotを使うには一手間必要になります。
簡単な方法として、Linuxの仮想環境を構築する方法を紹介します。

仮想環境の構築

Linuxの仮想環境を構築するのにを使う簡単な方法は以下の方法があります。

  • Windows Subsystems for Linux (WSL)を使う(Windows10なら推奨。がインストールに手こずる場合が多い)
  • CygwinやMinGWなどのエミュレータを使う(一昔前の主流。最新版が古い)
  • VirtualBoxなどの仮想マシンを構築する(PCのスペック(特にメモリ)が低い場合はしんどい)
以前はVirtualBoxなどの仮想マシンやCygwinなどのエミュレータが主流でしたが、最近では簡単な処理であればWSL2で十分使える様になりました。
とはいえ、応用数学系の研究室では、Unix系でかつMicrosoft Officeも使えるMacを使うことが多い印象です(個人の感想です)。また、大規模な計算機などになると、Linuxを利用していることがほとんどで、Windowsを利用するメリットはほとんどありません。
(お役所向けの古い形式のWordファイルなどがズレないことくらい?)
研究室配属などのタイミングでノートパソコンなどの買い替えを検討しているのであれば、所属(予定)の研究室の教員や先輩に相談すると良いでしょう。失敗談からのアドバイスなども聞けると思います。

WSLのインストール

以下の手順でインストールが必要ですが、どれか1つでも飛ばすだけでうまくいかないので、よく確認しておこなってください。

  • 「Windows Update」からOSを最新の状態に保つ
  • 「設定」から「Windowsの機能の有効化または無効化」を開く
  • 「Hyper-V」「Linux用Windowsサブシステム」「仮想マシンプラットフォーム」にチェックを入れて「OK」(要再起動)
  •  WSLのバージョン2(WSL2)を利用するので、PowerShell上で
    wsl --set-default-version 2
    wsl --set-default-version 2と実行する。
  • マイクロソフトストアからLinuxのディストリビューションをダウンロード(特にこだわりがないのであればUbuntuがおすすめ(特に末尾にLTSがついている長期安定版がおすすめ))。
  • ダウンロードしたLinuxディストリビューションを起動するとインストールが始まる。
  • ユーザー名やパスワードを設定すれば利用可能になる。
  • ホームディレクトリの場所が少し使いにくいので、変更すると良いかも(方法は省略。ググって。)

インストールが終了したら、Linuxディストリビューションを起動して、

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get update
sudo apt-get upgrade
sudo apt-get update sudo apt-get upgrade
sudo apt-get update
sudo apt-get upgrade

を実行しておくこと。

インストール周りで起こりやすいエラーや確認事項

  • まれにネットワーク関連のエラーが起こり、
    sudo apt-get 〇〇
    sudo apt-get 〇〇ができないことがある。ソフトがインストールできないことがある。原因はケースバイケースだが、DNSによる名前解決ができていないことが多いとか
  • 「Linux用Windowsサブシステム」「仮想マシンプラットフォーム」をオンにし忘れてませんか?
  • 起こったエラーをメール等で教えてください。確認の上情報をアップデートします。

 

C言語のチェック

Linuxの場合と同様なので、そちらを参照のこと。

gnuplotのインストール

gnuplotによって描画したものを表示するアプリケーションとしてXサーバー(今回はVcXsrv)が必要です。ここからVcXsrvをダウンロードしてきてからインストールします。
インストールしたら、VcXsrvをダブルクリックして起動します。
設定画面での設定は特にいじる必要はありません。

次にwslでの設定をします。
wslを起動してから以下のコマンドを実行します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
echo "export DISPLAY=`hostname`.mshome.net:0.0">>~/.bashrc
echo "export DISPLAY=`hostname`.mshome.net:0.0">>~/.bashrc
echo "export DISPLAY=`hostname`.mshome.net:0.0">>~/.bashrc

gnuplot自体のインストールはLinuxの場合と同様なので、そちらを参照してください。

gnuplot起動後にエラーが出る場合

インストールしたのちにgnuplotを実行しても、以下のようなエラーが出てうまく表示されない場合がありました。これまで何年か行ってきて、よくあった対応を載せておきます。また追記します。

エラー1:libQt5Core.so.5関連

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gnuplot: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file of directory
gnuplot: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file of directory
gnuplot: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file of directory

のようなエラーが出る場合

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

を実行してみてください。

エラー2:DISPLAY設定関連

エラーの先頭近辺でDISPLAYが見つからない的な文言(Can’t open display的な)がある場合

1. VcXsrvが起動できているか確認

2. .bashrc または .bash_profile または.profileあたり(全て隠しファイルなので注意)を開き

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
export DISPLAY=`hostname`.mshome.net:0.0
export DISPLAY=`hostname`.mshome.net:0.0
export DISPLAY=`hostname`.mshome.net:0.0

となっている部分を

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

に変えてみる(ターミナル再起動 or ソース読み込み直し)。
そのうえで、ターミナル上で

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
echo $DISPLAY
echo $DISPLAY
echo $DISPLAY

と打ったら、aaa.bbb.cc.ddd:.0.0(a,b,c,dの部分は数字が入る)と返ってくればOK

3. WindowsのFireWallの設定から、VcXsrvの通信を許可してあげる。

上記3つくらいを直せばいけるかなぁ?という感じです。

Linux (Ubuntu)の場合

C言語のチェック

ターミナル上で

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
which gcc
which gcc
which gcc

とする。/usr/bin/gccなどの文字が帰ってくればOK。
もし返ってこない場合は

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install gcc
sudo apt-get install gcc
sudo apt-get install gcc

としてgccのインストールを行ってください。

gnuplotのインストール

ターミナル上で

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install gnuplot-qt
sudo apt-get install gnuplot-qt
sudo apt-get install gnuplot-qt

を実行(Ubuntuの場合)

CentOSなど、他のLinuxを使っている場合は、

apt-get
apt-getではなく
yum
yumなどのパッケージ管理システムを使うか、直接gnuplotのホームページからソースコードをダウンロードしてインストールをする(ここでは詳細な方法は省略。ネット上に参考になるページがたくさんあります。)

インストールが完了したら、ターミナル上で

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
gnuplot
gnuplot
gnuplot

とうち、

gnuplot>
gnuplot>と表示されたら

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
plot x
plot x
plot x

などとして実際にグラフが描かれるか確認してください。

Mac (macOS)の場合

Macの場合は、Homebrewというパッケージ管理システムをインストールする過程でC言語を使うのに必要なXcode Command Line Toolsをインストールしてくれます。Homebrewはgnuplotのインストールにも使えますし、他にも諸々便利なので、是非インストールしましょう。

Homebrewのインストール

Homebrewについての細かいことはWeb上に様々な記事があり、ここで書いても仕方ないので省略します。
インストール方法ですが、

  • Homebrewのページに行き、でかでかと「Install Homebrew」と書かれたところのすぐ下のコマンドをコピー(右のアイコンをコピーしても良い)
  • ターミナル(アプリケーション/ユーティリティ内)を開き、先ほどコピーしたコマンドをペーストしてreturnキー
  • 何か聞かれたら(Y/n?みたいに出る)適当に答える(yesかnoで)
  • 途中で
    ==> The Xcode Command Line Tools will be installed.<br> Press RETURN to continue or any other key to abort
    ==> The Xcode Command Line Tools will be installed.
    Press RETURN to continue or any other key to abort

    (Xcode Command Line ToolsをインストールするからRETURN押して)
    といわれたら素直にreturnキー

インストールが完了したら、一応ターミナル上で

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
which gcc
which gcc
which gcc

とする。

/usr/bin/gcc
/usr/bin/gccなどの文字が帰ってくればOK。何も表示されなければインストールできていない。
(多分インストールできていない場合はないと思うが、もしインストールされてなかったらXcodeをインストールする)

gnuplotのインストール(homebrew経由)

最新版のHomebrewであれば、ターミナルから

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
brew install gnuplot
brew install gnuplot
brew install gnuplot

とすればできるハズ。

Department of Mathematical and Life Sciences, Graduate School of Integrated Sciences for Life, Hiroshima University