Trimuiの開発環境の構築
2021/08/07
Windows版のツールチェインの名称とパス及びライブラリのインストール先を修正しました。
導入済みの方はtoolchainのインストールとライブラリの再セットアップをお願いします。
In English is here
Trimuiとは
http://trimui.com/
クレジットカードサイズの携帯ゲーム機で、Allwinner F1C200sというSocが使われています。
このSocはゲームギアミクロ等にも使われているようです。
CPUはARM926EJ-Sでかなり古い世代のものが使われています(NintendoDSのCPUと同等の世代?)
海外ではdiscordで主に情報交換がされており、homebrewのソフトウェアもリリースされています。日本でもフォーラムがあり日本人のソフトウェア製作者の方も情報発信をされています。
海外の有志の方々のおかげでLinux用のtoolchainは用意されていますが、
Windows用のtoolchainがなかったため、自力で構築することにしてみました。
Linux(おすすめ)
buildrootというtoolchain作成用の環境を使用しています。
sudo apt install docker docker-compose
sudo apt install git
sudo apt install make
git clone https://git.crowdedwood.com/trimui-toolchain
make shell
Windows
開発環境の作成の準備
※全行程で少なくとも数時間はかかります。
必要なもの
Ubuntu20.04LTS
Linaro Toolchain
msys2
SDL
※以下のビルド済みのToolchainを使用する場合はWindowsでの作業から始めて下さい。
以下の手順で作成したビルド済みWindows用Toolchain
Ubuntu20.04LTS上での作業
要点
- Linaro Toolchainの使い方について
- abeフォルダとは別にworkspaceフォルダを作成しworkspaceからスクリプトを呼び出す必要がある。
- 今回はARM926EJ-S専用ですが、別のCPU用にビルドする場合はCPUの指定を変えれば良いです。
- Windows向けのビルド
- Linuxの用のarmコンパイラを作成してから、それを一部利用しWindowsのarmコンパイラを作成する。
パッケージのインストール
- abeフォルダとは別にworkspaceフォルダを作成しworkspaceからスクリプトを呼び出す必要がある。
- 今回はARM926EJ-S専用ですが、別のCPU用にビルドする場合はCPUの指定を変えれば良いです。
- Linuxの用のarmコンパイラを作成してから、それを一部利用しWindowsのarmコンパイラを作成する。
VMWarePlayerを使用します。WSL2とかでもおそらく可能です。
ターミナルを起動します。
sudo apt update
#必須では無いが入れておくと便利
sudo apt install open-vm-tools
sudo apt install open-vm-tools-desktop
sudo apt install cifs-utils
#開発環境ビルド用
sudo apt install build-essential
sudo apt install mingw-w64
sudo apt install python
sudo apt install flex bison autogen automake autoconf libtool texinfo gawk libncurses5-dev libpython2.7-dev gcc-multilib g++-multilib dejagnu lsb zlib1g-dev
git-new-workdirのインストール
Linaro Toolchainのビルドに使用するABEというスクリプトの内部で必要になります。
sudo apt install git
sudo chmod 777 /usr/local/share
mkdir -p /usr/local/share/git-core/contrib/workdir
cd /usr/local/share/git-core/contrib/workdir
wget https://raw.githubusercontent.com/git/git/master/contrib/workdir/git-new-workdir
chmod +x git-new-workdir
ln -s /usr/local/share/git-core/contrib/workdir/git-new-workdir /usr/local/bin/git-new-workdir
Linaro Toolchainの取得
Trimuiの公式のアプリはこのバージョンを使用しているようです。
gcc-linaro-6.4.1-2017.11-linux-manifest.txt
gcc-linaro-6.4.1-2017.11-win32-manifest.txt
これらのファイルをダウンロードします。
2つのファイルの
gcc_stage1_flags
gcc_stage2_flags
を以下のように書き換えます。(--with-tune=cortex-a9 --with-arch=armv7-aを削除して--with-cpu=arm926ej-sを追加する)
書き換え後の状態
gcc_stage1_flags="--with-mpc=${local_builds}/destdir/${host} --with-mpfr=${local_builds}/destdir/${host} --with-gmp=${local_builds}/destdir/${host} --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib--disable-libquadmath --enable-tls --disable-libmudflap --enable-threads --without-isl --without-cloog --with-float=soft --disable-decimal-float --with-abi=aapcs-linux --with-cpu=arm926ej-s --with-float=soft --with-mode=arm --disable-libgomp --disable-libssp --disable-libquadmath --disable-threads --without-headers --with-newlib --disable-libmudflap --disable-bootstrap --disable-decimal-float --disable-libgomp --disable-libatomic --disable-libsanitizer --disable-plugins --disable-libitm --enable-languages=c --with-sysroot=${local_builds}/sysroot-arm-linux-gnueabi --disable-shared --with-glibc-version=2.18"
gcc_stage2_flags="--with-mpc=${local_builds}/destdir/${host} --with-mpfr=${local_builds}/destdir/${host} --with-gmp=${local_builds}/destdir/${host} --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib--disable-libquadmath --enable-tls --disable-libmudflap --enable-threads --without-isl --without-cloog --with-float=soft --disable-decimal-float --with-abi=aapcs-linux --with-cpu=arm926ej-s --with-float=soft --with-mode=arm --enable-languages=c,c++ --enable-shared --disable-libgomp --with-build-sysroot=${sysroots} --with-sysroot=${local_builds}/destdir/${host}/arm-linux-gnueabi/libc"
ABE(ビルドスクリプト)の取得
git clone https://git.linaro.org/toolchain/abe.git
cd abe/
git checkout 333add3ae07b35815672a8a1d03eb443e5ea87fe
ディレクトリの準備
abeと同じ階層にworkspaceを作成する(以降はこのworkspaceフォルダで作業を行います)
mkdir workspace
cd workspace/
Linux用のビルド
LinuxでWindows用のビルド環境を作成するには
- Linux用のtoolchain(GCC+ライブラリ)を作成(build=x86_64-linux target=arm-linux-gnueabi)
- Linux用のtoolchainにパスを通す
- Windows用のtoolchainを作成(build=x86_64-linux host=i686-w64-mingw32 target=arm-linux-gnueabi)
の手順を踏む必要があります。(カナディアンクロスビルド)
Windows用のビルドに使用するglibcに1.で作成したコンパイラが必要なためこのような手順になります。
#configure
../abe/configure --with-git-reference-dir=/home/tcwg-buildslave/snapshots-ref
#ビルド実行(かなり時間がかかります)
../abe/abe.sh --manifest gcc-linaro-6.4.1-2017.11-linux-manifest.txt --release 2017.11 --tarball --build all
Windows用のビルド
パスの追加
export PATH=$PATH:/home/user/workspace/builds/destdir/x86_64-unknown-linux-gnu/bin
host.confの編集(workspaceにあります)
host=i686-w64-mingw32
を追加
mingw32のバグの修正
そのままビルドするとビルド途中で以下のエラーが発生します。
'::hypot' has not been declared
以下のように修正する
sudo gedit /usr/lib/gcc/i686-w64-mingw32/9.3-win32/include/cmath
1121: using ::hypot; → using ::_hypot;
configureはせずにbuildのみ行います。
#ビルド実行(かなり時間がかかります)
../abe/abe.sh --manifest gcc-linaro-6.4.1-2017.11-win32-manifest.txt --release 2017.11 --tarball --build all
workspace/snapshotsに以下のファイルが出来れば完了です。
gcc-linaro-6.4.1-2017.11-i686-mingw32_arm-buildroot-linux-gnueabi.tar.xz
このファイルをWindows上にコピーすれば、Linuxでの作業は終了です。
Windowsでの作業
msys2のインストール
インストーラの指示にしたがってインストールを行います。
C:\msys64 にインストールします。
msys2.iniの設定
HOME=home/trimui
PATH=/opt/trimui-toolchain/bin
パッケージのインストール
msys2.exeを起動します。
pacman -S make
pacman -S libtool
toolchainのインストール
ビルド済みWindows用Toolchain : trimui-toolchain.tar.xz
を展開します。(c:\trimui-toolchain.tar.xzに予めコピーした場合)
cd /opt
#ファイルパスは適宜変えて下さい
tar xvf /c/trimui-toolchain.tar.xz
/opt/trimui-toolchain
が作成されます。
コンパイラの確認
arm-buildroot-linux-gnueabi-gcc -v
コンパイラの情報が表示されればOKです。
ライブラリのインストール
gitからセットアップ用のスクリプトを取得して実行します。
pacman -S git
pacman -S pkg-config
git clone https://github.com/bluexe203/trimui-toolchain_for_windows.git
cd trimui-toolchain_for_windows
bash Msys2_LibrarySetup.sh
以下のライブラリがインストールされます
zlib-1.2.8 | sdl-1.2.15 |
bzip2-1.0.6 | sdl_gfx-2.0.23 |
libjpeg-9b | sdl_image-1.2.12 |
libpng-1.2.56 | sdl_mixer-1.2.12 |
freetype-2.6.3 | sdl_net-1.2.8 |
boost1.76.0 | sdl_sound-1.0.3 |
alsa-lib-1.1.1 | sdl_ttf-2.0.11 |
これで基本的な環境の設定は終了です。
追加でライブラリ等が必要な場合は適宜インストールを行う必要があります。
Tips
主にデバッグや環境の確認用の手順です。環境構築には直接関係ない内容になります。
Linuxのコンテナの中身の確認
コンテナを起動しない方法
#!/bin/sh
CONTAINERNAME=trimui-toolchain
DOCKERHOST=unix:///var/run/docker.sock
LOWERDIR=`docker -H ${DOCKERHOST} inspect --format='{{ .GraphDriver.Data.LowerDir }}' ${CONTAINERNAME}`
UPPERDIR=`docker -H ${DOCKERHOST} inspect --format='{{ .GraphDriver.Data.UpperDir}}' ${CONTAINERNAME}`
WORKDIR=`docker -H ${DOCKERHOST} inspect --format='{{ .GraphDriver.Data.WorkDir}}' ${CONTAINERNAME}`
#事前にsudo mkdir /mnt/test を実行しておく
MOUNTPOINT=/mnt/test
sudo mount -t overlay -o lowerdir=${LOWERDIR},upperdir=${UPPERDIR},workdir=${WORKDIR} overlay ${MOUNTPOINT}
コンテナを起動した場合
docker起動後
sudo nautilus
/var/lib/docker/overlay2/更新日付が最新のサブディレクトリmergedのあるフォルダ
Author And Source
この問題について(Trimuiの開発環境の構築), 我々は、より多くの情報をここで見つけました https://qiita.com/bluexe203/items/ddb972896ce3acc41d1d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .