OpenMSX を ビルドする。
WindowsXP 時代の小型ノートPC libretto U100 に Xubuntu 18.04 と OpenMSX を入れて MSX環境として使用しています。
が、Xubuntu 18.04 の OpenMSX 0.14.0 には バグがあって、ステートセーブができないのです。これは ビルド時のTCLと環境が異なっているのが問題だそうで、ソースからビルドすると解消するとのことです。よって、最新のUbuntuでは解消しているそうです。
が、Xubuntu の 32bit サポートが 18.04 までなので、なんとかこれを使うしか無い、でもステートセーブを使いたい。
そんなわけで、Xubuntu 18.04(32bit版)で OpenMSX をビルドしてみました。
まず、ビルドに必要なパッケージを入れます。
Synaptic を使ってパッケージ build-essential を入れました。
最新のソースからビルドしようと思って git も入れたのですが、後述しますが最新版で問題が発生しました。結局、GITから旧バージョンのソースのtarを取得してビルドしました。
OpenMSXは英語のマニュアルが充実しており、コンパイル方法についても openMSX Compilation Guide に詳しく記載されています。
ソースは GitHubのリリースページ にあります。
最初は、openMSX Compilation Guide に記載されている、Git Clone を作る方法で行いました
ソースを持ってきて「4.1 Compilation」の記載どおりに
$ ./configure
とすると、依存関係のチェックをやってくれます。ここで no と出力されたライブラリを入れます。
マニュアルを見ると解りにくいのですが、ビルドをするので、devパッケージが必要です。
私の環境だと、
libasound2-dev
zlib1g-dev
libglew-dev
libogg-dev
libpng-dev
libtheora-dev
libvorbis-div
libsdl2-ttf-dev
tcl-dev
を入れる必要がありました。
しかし、この状態でも SDL_ttf が no になります。パッケージは入っているのになあ。
問題がある場合は derived/x86-linux-i686/config/probe.log を見るようにと出ているのでこのログを見てみると、SDL_ttf がインクルードできていないようです。
ネットで調べると、SDL_ttf のヘッダーファイルは /usr/include/SDL2/ 配下にあるにもかかわらず、パスは /usr/include/ を見ているからだそうです。
仕方が無いので、/usr/include/SDL2/ にあるヘッダーファイルのリンクを /usr/include/ に作成しました。
$ cd /usr/include
$ sudo ln -s ./SDL2/SDL*.h ./
$ sudo ln -s ./SDL2/begin_code/h ./
$ sudo ln -s ./SDL2/close_code/h ./
ようやく、
$ ./configure
で全て yes になりました!これで make できるはず!
$ make
で make すると、今度は
#include <charconv>
が include
できずにエラーになりました。
configure 通ったのになんでじゃあ!?
と思って調べてみると、charconv
は gcc Version 8 から使えるらしい。
Version 7でコンパイルできないことがバグ報告されており、マニュアルに記載しました!と回答されていたので確認したら、確かに
The GNU C++ compiler. Version 8 or later is required to build openMSX.
と記載されていました。
$ gcc --version
とすると、7.5.0 って出てきました。
だめじゃん・・・。
Xubuntu 18.04 の OpenMSX は 0.14.0 なので、GitHubのリリースページ から最新版ではなく、0.14.0 のソースを持ってきて
$ ./configure
とすると、今度は、SDL、SDL_ttf のリンクでエラーになりました。ライブラリの問題なんだろうか???
今度は 0.15.0 のソースを持ってきましたが、結果は 0.14.0 と同様。
最後の頼みの 16.0(このバージョンから先頭の0が無くなる)を持ってきた所、
$ ./configure
が通りました!
$ make
とすると、コンパイルが始まりました!どうやらうまくいったようです。ふ~。助かった。依存関係ってむっちゃ怖いなあ。
超非力マシンなんで、2時間ぐらいかけてコンパイルが完了。長い!って思うけど、その裏にはそれだけ分のコードを書いた人がいるってことだよね。
$ sudo make install
とすると、 /opt/openMSX にインストールされました。
さて、動作確認です。
Xubuntu 18.04 で普通にインストールできる openMSX Catapult を起動して、設定で /opt/openMSX/bin/openmsx を選択した所、エラーが!
どうやら、0.14.0用のカタパルトで16.0を動かしたからっぽいです。
がーん、カタパルトもコンパイルする必要があるのか!
とりあえず、ターミナルから openmsx を単体で動かして(C-BIOSで起動しますが)、ステートセーブができることは確認できました。いちおう目的は達成できそうだ。
さて、カタパルトもコンパイルしなくては・・・。
カタパルトについてもマニュアルがちゃんとあって、コンパイルは Catapult Compilation Guide に記載されています。
カタパルトは http://openmsx.org/ から 17.0 のものを持ってきました。
カタパルトは新しいものからは古いopenMSXを起動できるのは経験上知っているので、問題無いだろうと。
不足しているパッケージ
libwxgtk3.0-dev
ibxml2-dev
を Synaptic でインストールし、config・・ っていきなり make でいいのか!?
$ make
すると、無事コンパイルされました。こちらは簡単でした。
$ sudo make install
とすると、/opt/openMSX-Catapult にインストールされます。
ターミナルから /opt/openMSX-Catapult/bin/catapult を起動すると、カタパルトが起動します。
カタパルトの setting → Edit Configuration で、/opt/openMSX/bin/openmsx を選択すると 起動しました! ステートセーブもきちんとできます!
これで libretto U100 は MSXエミュマシンとして活躍できます!
うまく動いたのを確認した所で、さきほどやむなく作った余計なリンクを削除します。
$ cd /usr/include
$ sudo rm ./SDL*.h
$ sudo rm ./begin_code/h
$ sudo rm ./close_code/h
これで完璧。
最近のコメント