序文
常にこの時間とのOpenWrtのが、契約も前に、私はまだ少しシステムを期待して、少し少しずつ書きました。私はちょうど私が、Makefileのの実行全体から開始数時間を把握するために、ソースコードをコンパイルし、最後に何が起こったかの物語にしたい。私は開始できないと感じ、ソースコードを参照してください覚えています。
これは、このシリーズの最初の記事であります私たちのソースコードのディレクトリ構造全体の私の理解に関する主なOpenWrtの話公式ダウンロードディレクトリから元のディレクトリと呼ばれるには、二つの部分ごとのディレクトリに導入されたビルドディレクトリと呼ばれるディレクトリを、コンパイル後に生成されます。
元のディレクトリ
下記に示すように、ソース、ソースファイルをダウンロードした後、のすべてを説明しましょう。
1.スクリプト
bashのやPython、Perlや他のスクリプト言語。コンパイルプロセスを使用するいくつかのスクリプトを格納し、このディレクトリにサードパーティの文書管理ソフトウェアパッケージのフィードは、コンパイルプロセス中でもあり、スクリプトの使用も入れ団結このディレクトリにあります。
2.ツール
時間をコンパイルし、ホストは、いくつかのツールを使用する必要があるtools
これらのツールを入手してコンパイルするコマンドが含まれています。パッケージのMakefile内で、いくつかはまた、パッチが含まれている。それらは、それぞれのMakefileあり$(eval $(call HostBuild))
、このツールはコンパイルすることであることを示し、でホスト未使用。
3.設定
システム全体の構成ファイルを保管
4.ドキュメント
はじめに、ホストファイルの全体のソースコードが含まれているターゲット・システム用のMakefileジェネレータのドキュメントもあります。使用してmake -C docs/
ターゲット・システムのドキュメントを生成することができます。
5.ツールチェイン
:埋め込まれた子供用の靴は、そのクロスコンパイルチェーンを知っている必要があり、このファイルはクロスコンパイルチェーンのパッケージのコンパイルに含める保存されているbinutils,gcc,libc
ようにと。
6.ターゲット
OpenWrtのソースコードは、様々なプラットフォームに適したバイナリファイルをコンパイルすることができ、各プラットフォームは、このディレクトリにファームウェアおよびカーネルのコンパイルプロセスを定義します。
7.パッケージ
各パッケージのMakefileを含め、パッケージのOpenWrtのシステムが適用保存します。OpenWrtのMakefileは、テンプレートのセットを定義します。各テンプレートには、このソフトウェアは、このようなパッケージのバージョン、ダウンロード、コンパイル、インストールアドレスとして、その情報を参照して定義します。第2の現像プロセスでは、このフォルダには、私たちはしばしば対処します。
実際には、./scripts/feed update -a和./scripts/feed install -a
パッケージはこのディレクトリに保存されます。
8.は、
OpenWrtのMakefileはここに格納されています。ファイルの.mk *という名前。ここでのMakefileに含めるべきファイル、類似したライブラリファイルです。これらのファイルは、コンパイルプロセスを定義します。
9.その他
メインディレクトリは、前の8に記載されている、残りは単一のファイルです。
9.1のMakefile:
トップレベルのディレクトリで実行し
make
たエントリfileコマンド。
9.2 rules.mk
これはMakefileの中で使用されるいくつかの一般的な変数や関数を定義しています
9.3 Config.in
で
include/toplevel.mk
真ん中の私たちは見ることができ、これがされmake menuconfig
たファイルに関連付けられています。
9.4 feeds.conf.default
いくつかのアドレスが使用され、サードパーティ製のソフトウェアパッケージをダウンロードしています
9.5 LICENSE&README
すなわち、ソフトウェアライセンスとソフトウェアとの依存関係をコンパイルする基本的なプロセスを説明ソフトウェアの基本的な手順。README。
これまでのところ、我々は元のディレクトリは再びそれをすくい取る持っている、のは、ビルドディレクトリを見てみましょう。
ディレクトリを構築
私たちは、ソースコードファイルをダウンロードするにはほかにコンパイルされた後、コンパイル処理の余分な部分は、以下に示すように、新たに生成されたことは明らかです。
1.フィード
拡張パックインデックスディレクトリOpenWrtの追加のパッケージマネージャ。少し周り、それが管理ソフトウェアパッケージをダウンロードするだけです。デフォルトfeeds
がダウンロードpackages、management、luci、routing、telephony
。:、追加のパッケージをダウンロードし、ルートディレクトリ下のソースファイルfeeds.conf.defaultを開くには、パッケージには、対応する#番号とアップデート元のフロント削除するには ./scripts/feeds update -a
ダウンロードしたインストールパッケージを: ./scripts/feeds install -a
2. build_dir
元のディレクトリの前で、私たちはので、このファイルはフォルダ内の三つのサブフォルダが含まれてコンパイルされ、ホストツール、ツールチェーンツールとしてだけでなく、このディレクトリ内の各パッケージを拡大する.openwrt先のファイルに言及します:
2.1ホスト
ホストコンパイラによって使用されているフォルダのソフトウェアツールで
2.2ツールチェーン-XXX
このフォルダクロスコンパイラツールチェーンで
2.3ターゲット-XXX
このコンパイルでは、様々なパッケージとカーネルファイルを含むプラットフォームのオブジェクト・ファイルを、ターゲットにしています。
3.ビン
、ファイルのビンフルすべてのIPKファイルを:含む、コンパイルされたバイナリファイルを保存します。
4. DL
ソフトウェアの多くをコンパイルするプロセスで使用される、ソースコードをダウンロードして、含まれていません始めたが、別のサーバからのコンパイルダウンロード中に、ここでは統一されたディレクトリの保存で
5. staging_dir
保存するためのbuild_dir
ソフトウェアカタログをので、ここで。でコンパイルされ、build_dir
同じサブディレクトリ構造を持っている。
例えば、target-XXX
私たちは自分のIPKファイルを開発する場合。ライブラリファイル、フォルダ内のヘッダファイルをコンパイルしたターゲットプラットフォームを保存し、コンパイルプロセス、事前にヘッダファイル、ダイナミックリンクライブラリは、静的ライブラリは、このサブフォルダにあります。
6.tmp
ビューの名前から、それは一時的なフォルダです。コンパイル時には、中間の一時ファイルの数が多いが、保存する必要がここにあります。
7.logs
このフォルダには、あなたは、私たちは私たちのソフトウェアを分析するために、ここから情報を得ることができます。このフォルダが格納されているので、時々、間違った情報をコンパイルするプロセスは、間違って表示されるようにコンパイルこれはされていないときにのみ、時々見ることができますなぜコンパイルを完了しませんでした。
これまでは、一般的に、再びディレクトリ構造のOpenWrtのを参照します。
最後のレコード
- この記事の多くの内容を、インターネットから長い時間があり、私も、私はブログを書いた理由の一つであるソースを、見つけることができませんでしたが、私は今、インターネットから多くのことを学び、その後、戻ってネットワークにフィードバックさ。おかげですべては友人の精神を共有する自由を持っています。
- 知識は絶えず進歩的な学習プロセスである。それは私が現在、一般の知っている、十分に印象的ではない。より詳細な研究MakefileとOpenWrtの後、ゆっくりと更新されてくる知識の一部です。