コンパイル for Linux (Ubuntu)

以下は、クリーンインストールされた Ubuntu 12.10 で Zindaiji 3 をコンパイルして、その後 13.04 にアップデートを行った際の手順です。グラフィックボードは nVidia の GeForce GT 640 を用いています。

1. nvidia の グラフィックドライバーをインストールする

システム設定 - ソフトウェアとアップデート - 追加のドライバー



から、nVidia のグラフィックドライバをインストールします。が、インストール手順にどうも不具合を抱えているらしく、状況によってはうまくインストールできません。インストールに失敗すると、ランチャーパネルなどが画面外に消えてしまい、にっちもさっちも行かなくなります。

インストールがうまくいかない場合は、CTRL + ALT + F1 で端末画面にして、そこでnVidiaのドライバを再インストールします。
参考にしたブログ

0. 文字化け対策に言語を英語表記にします。
$LANG=C

1. カーネルのバージョンを確認します。
$uname -r

2. linux-source と linux-headers をインストールします。バージョン番号は環境に合わせます。
$sudo apt-get -y install linux-source linux-headers-3.5.0-17-generic
どうもこの手順が自動インストールに入っていないのではという疑いが…

3. nVidia のドライバーをアンインストールします。
$sudo apt-get remove nvidia-current
(もしくは nvidia-current-updates、または nvidia-experimental-304などインストール済みのドライバー名)

4. nVidia ドライバーをインストールしなおします。
$sudo apt-get -y install nvidia-current

5. 再起動します
$sudo shutdown -r now

2. openGLが軽快に動くか確認

インストールが問題なく成功していれば必要ないのですが、念のためにOpenGLがきちんとグラフィックドライバを使って高速に表示されているか確認します。

$sudo apt-get install mesa-utils
で簡単なグラフィック表示用のツールを導入します。

$glxinfo

コマンドでエラーが出ないか、

$glxgears



で滑らかに動画が表示されるか

といったところで確認ができます。

3. wxWidgets 2.8.12 を導入する

http://www.wxwidgets.org/から2.8系列(安定版)の最新版のソースコードをダウンロードします。Source Archives の wxGTK を選びダウンロードします。

wxGTK-2.8.12.tar.gz を適当なところで解凍します。

./configure --with-gtk2 --with-opengl --enable-unicode

でコンパイル環境を確認します。おそらくエラーが出ます。
必要なライブラリを Synaptic などでインストールします。



libgtk2.0-dev
freeglut3-dev

などです。Synapticで上の2つを入れると、一緒にいろいろなライブラリも導入されるので、おそらく必要なものが全部はいることになるかと思います。もし足りない場合はエーメッセージから必要なライブラリは探せるかと思います。
注意点としては、ライブラリの利用ではなく、そのライブラリを利用するアプリケーションをコンパイルするのが目的なので、-dev付のライブラリの導入が必要です。

openGL用のライブラリ(freeglut3-dev)を導入したはずなのに、libGL.so が無い、といったエラーが出ます。これは、libGL.so などの位置が
/usr/lib/
ではなく
/usr/lib/i386-linux-gnu/ (32bitの場合)
もしくは
/usr/lib/x86_64-linux-gnu/ (64bitの場合)
になっているためです。

$sudo ln -s /usr/lib/x86_x64-linux-gnu/libGL.so /usr/lib/libGL.so
$sudo ln -s /usr/lib/x86_x64-linux-gnu/libGLU.so /usr/lib/libGLU.so
のように、シンボリックリンクを貼るといった手段で回避ができます。

./configure が成功したら

$make -j 4 (数値はコア数)
$sudo make install
$sudo ldconfig
$make clean

でインストールができます

4. Luaを導入する

Luaを利用するためのライブラリを導入します。Lua はスクリプト言語で、実行中のC言語から呼び出して結果を得るといった使い方ができ、Zindaiji3のver0.88以降ではエクスプレッション機能を導入するために利用しています。

Synapticを用いてliblua5.2-devをインストールします。

5. HDF5を導入する

HDF5形式のファイルの読み込み(オプション機能)を有効にしてコンパイルするためには、HDF5ライブラリを導入します。HDFは 1.8.12 以上が必要です。ソースコードを入手して -enable-c++ オプション付でコンパイルし、LD_LIBRARY_PATHを変更するなどの対応が必要になります。Ubuntu 14.04ではSynapticによるインストールでは1.8.11になります。
※)動作を確認しているのは、1.8.12 になります。1.8系の最新1.8.16では、インストール先のファイル名が変わっていたりするなど少々環境の変化があるようです。1.8.16などでの対応はしばらくお待ちください。

6. Zindaiji3をコンパイルする

configure

Zindaij2/LINUX のディレクトリーに入って
$./configure

します。実行ファイルになっていない場合は chmod して実行ファイルに変更してください。
スクリプトがc++など必要なライブラリなどが入っているか確認します。問題が見つからなければmakefileが作成されます

コンパイルオプション

--with-hdf5 HDF5を利用する

--with-zlib .gz フィルを解凍するために zlib を利用する

コンパイル

$make -j 4 (数値はコア数)
でコンパイルが行われるはずです。

変なことがおきていなければ、
$./Zindaiji3GTK2.out
で実行ができるはず、ですが…

7. Ubuntu の アップグレード

どうも、アップグレードしたときに nVidia のドライバが不具合を起こして、にっちもさっちも行かなくなることが多いです。(少なくとも13.10まではそうでした。14.04へのアップグレードした際は、以下の方法はうまく働きませんでした。14.04はクリーンインストールをしています。14.10へのアップグレードではすんなりとアップグレードができました。)

Linux Kernel の更新でも起きる場合があります。

いくつかのPCで不具合がおきた経験から、おかしくなったら1. の手順で nVidiaのドライバーを再インストールする。ということが必要なようです。

それでもランチャーが出てこなければ、端末から再設定
$sudo apt-get install dconf-tools
$dconf reset -f /org/compiz/
$unity --reset-icons
$setsid unity

が必要になるようです。
参考にした投稿

なお、ランチャーが無くても右クリックメニューで端末を開ける nautilus-open-terminal を予め入れておかないと、入力すらできなくて途方にくれるので注意してください。


戻る
inserted by FC2 system