google-code-prettify

2008-05-02

NetBSDのcrunchgenで、SMALLPROGを0にしてビルドする方法

NetBSDのユーザーランドのいくつかのプログラムは、SMALLPROGをdefineしてビルドすると、小さいバイナリを作る事ができる。

例えば、
・initは、single user modeのみ
・ddは、ASCIIとEBDICの変換なし
・shは、printfコマンド無し
など。

NetBSDのcommon/Makefile.crunchには、小さいプログラムを作るためのオプションが用意されていて、
・SMALLPROGを0にすると、各プログラムのmake時にそのままビルドする。
・SMALLPROGを1にすると、各プログラムのmake時にSMALLPROG=1にしてビルドする
という機能がある。SMALLPROGが設定されていないと、SMALLPROG=1となる。

Makefile.crunch経由で、通常の大きなプログラムを作ろうと思った場合、
$ make SMALLPROG=0
や、
$ SMALLPROG=0 make
としても、小さいinit/dd/shプログラムを作る事ができない。

なぜなら、
・SMALLPROGが0にdefineされている。
・init/dd/shのMakefileは、SMALLPROGがdefineされていた場合、小さなプログラムを作る(値が0か1か、ではない)。
となっているため。

Makefile.crunchgen経由で小さいプログラムを作るには、makeの引数にSMALLPROG=0 と書くのではなく、Makefile.crunchgenを.includeするMakefileに、
SMALLPROG=0
と書く必要がある。

0 件のコメント: