Mac で Cコンパイラ 9cc の写経をしたい
言語プロセッサの勉強に、途切れ途切れではあるが Swift コンパイラにコントリビュートしてみたり、 Writing An Interpreter in Go を写経してみたりしていた。
そんな折、Rui Ueyama さんが 低レイヤを知りたい人のためのCコンパイラ作成入門 という平易な文章で1からCコンパイラの実装を解説したページと GitHub のリポジトリを公開してくださった。
取り組んでみたいが、読み進めるとLinux と macOS でアセンブリが完全互換ではないため、Mac ユーザは Linux 環境を用意した方が良いということが分かった。 そこで Docker を使って Mac で 9cc をビルドする環境を作ったのでメモを残しておく。 (なお筆者に Docker の実務経験はないのでもっと良い方法があるかもしれないとエクスキューズしておく。)
環境
- macOS Mojave 10.14.4
- Docker version 18.09.0, build 4d60db4
手順
Docker で Ubuntu のイメージを pull する
$ docker pull ubuntu:18.04
Docker の image が取得できていることを確認
$ docker images
前述の docker images
で取得した IMAGE ID を使ってコンテナを起動する
Ubuntu の root にログインできる
$ docker run -it {IMAGE ID}
必要なツールをインストールする
以下 Ubuntu のイメージで実行
$ apt-get update $ apt install sudo $ sudo apt install gcc make git binutils libc6-dev vim
GitHub にコードを push したいので ssh の鍵を登録する
この辺を参考に Dockerで作るGitHub環境 - Qiita
以上で 9cc を開発できる環境が一応整った。時間を見つけて少しずつ進めたい。