FreeBSD の差分 make のやり方 ― 2009年08月27日 00時57分14秒
その時間を短縮するために、変わった部分だけをコンパイルすれば大分時間を短縮することが出来る。world の場合は、-DNO_CLEAN
を kernel の場合は、-DNO_KERNELCLEAN
を付けることにより、変わっていない部分を無視させることが出来る。
しかし、これも時折失敗することがある。その原因は
make: don't know how to make /usr/src/xxx. Stop
が全てだと思う。make が作成した .depend ファイルに削除されたファイルの記述があり、make がそれを探すのでエラーになる。また、一部でアセンブラコードを生成する場所もあり、そこで削除されたファイルにより同じようなエラーになる。
そのような時は、
% find /usr/obj -name '.depend' -or -name '*.S' | xargs rm
で依存関係のみを削除する。大体、一つこのエラーが出ると、他でも大体起きているので、一気に全て削除した方が手間が少ない。
% cd /usr/src && make cleandepend
でも出来ると聞いたこともあるが、自動生成のアセンブラプログラムで問題が起きそうなので自分では試したことはない。
なお、この方法は CVS でファイルを取得するのなら、過去のソースコードに遡ったときでも使える。CVS が古いリビジョンを取得し、ローカルのファイルの更新時刻を更新するためだ。Subversion ではブランチが違うと同じことは出来ない。また、他の更新時刻を更新しない方法で古いファイルに戻した時も正しく動作しない。
.depend ファイルは全て作り直すが、オブジェクトはそのまま再利用可能なので、新しく buildworld や buildkernel を行なうよりも早い。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/08/27/4541648/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。