
よし、coreutilsのコードでも読むか!
まぁとにかく、コードを読み始める前に手元にビルド環境を作らねばならないのですわ、面倒くさいと思っても…
とりあえずコードをGitからクローンしてくる。Githubのは公式ミラーなので、ほんとにコミットしたい人は本家のリポジトリで作業しないといかんのだと思うが(HACKINGファイルに書いてあるので要参照)
$ git clone https://github.com/coreutils/coreutils.git
$ git submodule init
$ git submodule updategnulibがGitサブモジュールとして含まれている。ちなみに git clone --recursive ならサブモジュールも一発で持ってくるらしい。
で試しに src/cat.c とかをVSCodeで開いてみると、ヘッダのincludeでエラーが出ている。gnulibの一部のヘッダファイルはmake時に作成されるので、まだ存在しないということのようだ。
まーどっちみちビルドまではするのだ。詳しい手順は gnulib/doc/INSTALL に書かれているが、次の順番で作業すればよさそう:
$ ./bootstrap
$ ./configure
$ makeしかし bootstrapした時点でコマンドがないないと出てくるので(ログを貼りたいんだが流れてしまったわ…)、出てきたやつを全部いれる(私はDebian on WSLです):
$ sudo apt install autoconf automake bison wget autopoint gettext gperf texinfotexinfoだけはパッケージ名を調べたが、ほかはエラーに出てきた名前そのままだった。Linuxヘッダーを入れてないひとは linux-headers-amd64 とかも入れないといけないと思うたぶん、私は入ってたが。
とりあえずこれで ./bootstrap して ./configure して make でよし、という感じだった。coreutilsなので、難しいこともしないのでサクッと入るということか?

しかしVSCodeで identifier is undefined みたいなエラーが消せないんだが… 分からない…

コメント