OpenWrt Makefileをより速くコンパイルする方法は?

OpenWrt Makefileをより速くコンパイルする方法は?

すべての必須パッケージが渡されたと仮定して、sudo apt-get installMy BuildRootはopenwrt

その後、私はフォルダの上のディレクトリの名前を変更し、次のopenwrtようにファイルを少し変更したときに見つけました。wifi.lua作る(フォルダ内openwrt)正常にコンパイルするのに21分かかります。

ただし、フォルダの上のディレクトリの名前を変更せずにopenwrt同じファイルで同様のマイナーな変更を行うと、V=99にする正常にコンパイルするのに3分しかかかりません。

さて、上記のディレクトリの名前を変更し、上記と同じことをやり直すと作る正常にコンパイルするには21分かかります。そしてV=99にする、最上位ディレクトリの名前を変更しなかった場合よりも多くのコンパイル手順が実行されることがわかります。

トップレベルディレクトリの名前を変更しないと、Makefileがはるかに高速にコンパイルされることがわかります。

これにより関連する質問が生じます。 Linuxでディレクトリの名前を変更したり、ディレクトリを移動したりすると、サブディレクトリのファイル時間が変わりますか?

修正時間がすべての依存関係より新しい場合、Makefileはターゲットを再構築しないことを知っています。

私もGNU Makefileに関するいくつかの質問を読んだ。 http://www.conifersystems.com/whitepapers/gnu-make/

OpenWrt MakefileはもともとLinux Makefileよりもはるかに進化していると予想されます。これらの問題のいくつかまたはすべてを解決しますか?

(Makefileをより迅速にコンパイルするために、openwrt/dlホームディレクトリ内のフォルダへのシンボリックリンクも使用してユーザースペースtarballを再ダウンロードする必要はありませんでした。)

ベストアンサー1

いいえ、含まれているファイルとディレクトリのタイムスタンプは変更されず、ディレクトリ自体のタイムスタンプのみが変更されます。ただし、Makefileに絶対パスを使用するターゲットまたは依存関係が含まれている場合、または$(src_dir)それを再生成する場合は、別の/新しいターゲットになります。バラよりGNU make ドキュメント「標準」ターゲットと変数に関する規則と推奨事項。

ただし、Makefileはコンパイルされず、元のLinux Makefileは存在しません。 BuildRootなどの環境を作成/維持することは複雑であるため、メンテナンス者は効率的に構築する前にまず正しく構築することに集中できます。単純なパッチ(シンボリックリンクの追加など)がプロセスを高速化するのに役立つ場合は、改善提案として上流に送信する必要があります。

おすすめ記事