daemontools-0.76 から tai64nlocal を static build する
Void Linux や runit を利用している、もしくは tai64 形式のタイムスタンプを含むログファイルを扱うような場合に、 tai64nlocal
コマンドが必要になることが多い。
dameontools の他のバイナリは必要ないが、 tai64nlocal
コマンドだけを様々な環境で雑に利用したい。
そういうわけで、ここでは tai64nlocal
をソースから静的ビルドする。というか daemontools を静的ビルドして tai64nlocal
を取り出す。
method
- djb の公式サイトから daemontools-0.76.tar.gz を取得する。 なお daemontools-0.76 は Public Domain であることが宣言されている
- 適当なディレクトリに展開し
cd
する% tar zxf daemonotools-0.76.tar.gz && cd admin/daemontools-0.76
- とりあえず一回コンパイルさせる
% package/compile
- 生成されたファイルのうち、以下のように
compile/conf-cc
の先頭行に--include /usr/include/errno.h
を追加する。これにより 一部のコンパイルエラー を修正する% head -n1 compile/conf-cc gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings --include /usr/include/errno.h
- 生成されたファイルのうち、以下のように
compile/conf-ld
の先頭行に-static
を追加する% head -n1 compile/conf-ld gcc -s -static
- 再度コンパイルする
% package/compile
- statically linked された tai64nlocal バイナリが
command/tai64nlocal
に生成される% file command/tai64nlocal command/tai64nlocal: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=8849d667717f9a97ac688be502de1c941b1d9e4e, for GNU/Linux 3.2.0, stripped
なお compile/conf-cc
compile/conf-ld
については、Makefile 中で先頭行のみを取り出して利用しているため、それぞれの先頭行を直接修正する必要がある。
先頭行をコメントアウトしてその下に修正内容を追加する、という編集では正しくコンパイルできない。
以上。