![見出し画像](https://assets.st-note.com/production/uploads/images/140692841/rectangle_large_type_2_bba929e7942912680d6d69528eff36b9.png?width=1200)
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
![](https://assets.st-note.com/img/1712910743990-MDf38dlebT.png?width=1200)
ここではテストで作成した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 .
![](https://assets.st-note.com/img/1712912974320-He3BJnavaJ.png)
outディレクトリに移動
(エクスプローラーが開かない場合は要設定らしいです)
![](https://assets.st-note.com/img/1712913061328-mjqgJkjqu4.png)
![](https://assets.st-note.com/img/1712913153836-0amK30fJ92.png)
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
![](https://assets.st-note.com/img/1712914294687-76dcwYy4JR.png?width=1200)
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の動作確認
【了】