例えば、
・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 件のコメント:
コメントを投稿