GNU coreutils のビルド

よし、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 みたいなエラーが消せないんだが… 分からない…

コメント

タイトルとURLをコピーしました