見出し画像

SGDK学習メモ:No.4、WSL2+DockerでのSGDKコンパイル環境構築

SGDK学習の際のメモです。

SGDKの学習は、SGDKのとある疑問が解けず長らく放置していましたが
「ある程度調べても解決しない疑問、問題は一旦そこで止める」
「そもそも私はSGDKを含めてプログラミングに詳しいわけでないので、自分のできる範囲でやってみる」
ということにします。


今回はWindows Subsystem for Linux(WSL2)上のDockerでSGDKをコンパイルするための環境構築についてです。
内容的にはSGDKというよりDockerメインです。

以下は前提として
「WSL2はインストール済みであること」
とします。
WSL2のインストール方法についてはネット上に多数情報が存在するので
"wsl2 インストール"
等で検索してみてください。
Windowsの機能の有効化または無効化」での設定やBIOSの設定変更が必要な場合もあります。←これらはWSL2のインストール前に確認、設定しておいたほうが手戻りがなくてよいのではないでしょうか。

私はディストリビューションとしてUbuntu(デフォルト)、シェルとしてZ Shell(デフォルトはBash)を選択していますが、このへんはお好みで。
実行時にコマンドが見つからない場合は
"ディストリビューション名 コマンド名 インストール"
で検索するとインストール方法が見つかると思います。


WSL2環境へのDockerのインストール

私はDocker Desktopをインストールせず、WSL2にDockerをインストールしています。

手順は
Ubuntu on WSL2でのDocker Engineの最短インストール手順 #Docker - Qiita

がわかりやすくて丁寧です(見習いたいです)。

基本はDocker社が用意しているスクリプトを実行するだけなので、難しいことはないと思います。
*rootユーザー以外でのdockerコマンド実行も可能にしたほうがよいです、詳細は上記Qiita参照

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

一通り設定が完了したら

docker version

とタイプしてバージョン等の情報が表示されればとりあえずOKでしょう。


DockerによるSGDK  V1.65のビルド、サンプルソースのコンパイル実行

SGDKではV1.62からDockerfileが同梱されるようになりました(一つ前のタグのV1.60にはDockerfileが存在しない)。
V1.62だとコンパイルエラーになったので(詳細未確認)、V1.65でdocker build、SGDKサンプルソースをコンパイルしてみます。

ホームディレクトリに作業用のworkディレクトリ作成、workディレクトリに移動
(もしくは任意のディレクトリで実行する、その場合今後出てくるパスは適宜読み替える)

mkdir ~/work
cd  ~/work

GitHubからSGDK V1.65をclone(ダウンロード)、ディレクトリも指定する(sgdk165)

git clone https://github.com/Stephane-D/SGDK -b v1.65 sgdk165

docker build実施、build方法はSGDKのreadme.md記載に従うが複数バージョンのSGDKをbuildするためにイメージ名は変更(sgdk→sgdk165)する
*sgdkをcloneしたディレクトリ名とdocker build時のイメージ名が同じ(sgdk165)だが、同名である必要はない(今回は同名にしているだけ)
*ダウンロードが行われる場合は完了までには少し時間がかかる

cd ./sgdk165
docker build -t sgdk165 . 

docker imagesでsgdk165が作成されたことを確認

docker images
sgdk165が存在することを確認、
ここではテストで作成したsgdk162も存在している

SGDKに同梱されているサンプルソースのhello-worldをsgdk165を使用してコンパイル実施、確実にコンパイルが実行されたことを確認するためrom.binが入っているoutディレクトリを削除しておく
*"rm -rf ./out" でPermission deniedとなった場合は"sudo rm -rf ./out"を実施

cd ./sample/basics/hello-world
rm -rf ./out
docker run --rm -v "$PWD":/src -u $(id -u):$(id -g) sgdk165

コンパイルされたout/rom.binを任意のエミュレータで実行して動作確認

explorer.exe .  
explorer.exe . でエクスプローラーが開く、
outディレクトリに移動
(エクスプローラーが開かない場合は要設定らしいです)
rom.binを任意のエミュレータ実行し動作確認

DockerによるSGDK  V2.00のビルド、サンプルソースのコンパイル実行

記述時点(2024年4月)で最新版のV2.00でのdocker build、SGDKサンプルソースのコンパイルです。内容は基本上記V1.62と同じです。

cd  ~/work
git clone https://github.com/Stephane-D/SGDK -b v2.00 sgdk200
cd ./sgdk200
docker build -t sgdk200 . 
docker images
sgdk200確認
cd ./sample/basics/hello-world
rm -rf ./out
docker run --rm -v "$PWD":/src -u $(id -u):$(id -g) sgdk200
explorer.exe .  

out/rom.binの動作確認

【了】


この記事が気に入ったらサポートをしてみませんか?