「組み込みOS自作入門」ツール構築の記録

坂井弘亮著「組み込みOS自作入門」 1st step

本が10年くらい前のものなので、binutils,gccで最新のものを使おうとすると記載通りにうまく行かない箇所が出てくる。

binutilsのインストール

# checkinstall利用の場合
sudo apt install checkinstall

# Documentの生成のためか、以下がないとエラー発生した
sudo apt install texinfo

# binutils-2.34.tar.xzとしてカレント以下にDLされていると仮定
# xzアーカイブの場合tarにJを指定
tar xJvf binutils-2.34.tar.xz 
cd binutils-2.34/
./configure --target=h8300-elf --disable-nls
make

# checkinstallでインストールする場合
# パッケージ名をbinutils-h8300など別にしないと
# システムのbinutilsと衝突してそちらが使えなくなった
sudo checkinstall

# 通常のインストールを行う場合
sudo make install

gccのインストール

# カレント以下にgcc-9.2.0.tar.gzとしてDLされていることを想定
tar xzvf gcc-9.2.0.tar.gz
cd gcc-9.2.0/

# 依存ソースをDLする必要がある
# 以下の付属スクリプトで自動的にやってくれる
./contrib/download_prerequisites

# ビルドは別ディレクトリでやらないとエラー発生する
mkdir build 
cd build/

# 本にはなかったが、SSPを無効化しないとinstallでエラー発生する
../configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c --disable-libssp

# Build
make

# checkinstallでインストールする場合
# ただし、上記binutilsと一部衝突が起き、debによるインストールは失敗する
# この時点で通常のインストールは行われており、
# debは生成されるので、アンインストール時はそれを使うことにして無視
sudo checkinstall

# 通常のインストールを行う場合
sudo make install

2021/03/08追記 M1 macOS(11.2.2)でコンパイルできました。

binutilsは上記の通りでインストールできる。2.36にて確認。Linuxではないので、checkinstallは使えない。

gccは、10.2.0で試したがmakeでhosthooksがうんたらというエラーが発生する。 この意味するところはわかっていないのだが、以下の方が書いてくれている対応でコンパイルは通るようになる。

https://zenn.dev/tunefs/articles/80aa34dcce386e

シリアル通信関連 on M1 Mac

MacだとTeratermのような優秀なシリアル端末アプリがない。

GUIのCoolTermは、コマンドのやり取りだけなら可能だが、xmodem転送はうまく行かなかった。(kozosの受取時にサイズがffffffffなどになる)

ほかはCUIとなるが、個人的にminicomは使いにくかったので、標準のcuとmacports/homebrewで入れられるlrzszを使うのが良さそう。

ただし、本に書いてあるFreeBSD用のcuとは微妙にコマンドが違っている。 以下のサイトに対応方法が記載されている。 http://blog.livedoor.jp/noanoa07/archives/1994090.html

Parallels上でUbuntuを使用する方法でもうまくできた。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です