
よし、coreutilsのコードでも読むか!
まぁとにかく、コードを読み始める前に手元にビルド環境を作らねばならないのですわ、面倒くさいと思っても…
とりあえずコードをGitからクローンしてくる。Githubのは公式ミラーなので、ほんとにコミットしたい人は本家のリポジトリで作業しないといかんのだと思うが(HACKING
ファイルに書いてあるので要参照)
$ git clone https://github.com/coreutils/coreutils.git
$ git submodule init
$ git submodule update
gnulibが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 texinfo
texinfoだけはパッケージ名を調べたが、ほかはエラーに出てきた名前そのままだった。Linuxヘッダーを入れてないひとは linux-headers-amd64
とかも入れないといけないと思うたぶん、私は入ってたが。
とりあえずこれで ./bootstrap
して ./configure
して make
でよし、という感じだった。coreutilsなので、難しいこともしないのでサクッと入るということか?

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