« 2019年5月 | トップページ | 2021年7月 »

2021年6月

2021/06/14

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

これで完璧。

 

| | コメント (0)

« 2019年5月 | トップページ | 2021年7月 »