make-コンパイル-リンクあれらの事
1559 ワード
今日qtのqmake manualをめくって、makeのブログを探してみました.
Makefileクラシックチュートリアル(これらを把握するのに十分)とLIBとDLLの違いとこの2つのブログを使うことに重点を置いて、この2つのブログを書くのが素晴らしいと感じて、今日の収穫を以下にまとめます.
Qtのqmakeは根拠があります.Proファイルは自動的にMakefileを生成します.Makefileでは、どのファイルを先にコンパイルする必要があるのか、どのファイルを後でコンパイルする必要があるのか、どのファイルを再コンパイルする必要があるのかを規定する一連のルールが定義されており、自動コンパイル機能が実現されています.
Makefileがあれば簡単に使えます
コマンドを使用して、実行可能なファイルをコンパイルするプロセスを完了します.もちろん実行も可能です
クリアして再コンパイルします.
makeプロセス
1.makeはまずMakefileを探します.
2.MakefileでTARGETを探し、このTARGETを最終的なターゲットファイルとします.
3.TARGETの依存を探す.oファイル、また探します.oファイルの依存項目....
4.葉のノードに着いたら、見つけることに相当する.c和.hファイルコンパイル生成.oファイル、...、最後に実行可能ファイルを生成します.
まず、コンパイルはソースコードを中間コードにコンパイルすることであることを明らかにする.oファイルは、リンクライブラリに必要なコードと.oファイルがリンクされ、実行可能ファイルが生成される.実行可能ファイルに実際のコードが含まれているか、関数コードのみが含まれているエントリアドレスによって、静的コンパイルと動的コンパイルの2種類に分けられます.静的リンクライブラリと動的リンクライブラリの2種類もあります.
静的リンクライブラリ
LIBには関数コード自体が含まれており,リンク時に直接実行可能ファイルにコードを追加することを静的リンクライブラリと呼ぶ.
ダイナミックリンクライブラリ
LIBには、関数が存在するDLLファイルとファイル内の関数の位置の情報が含まれており、コードには、実行時にプロセス空間にロードされるDLLが提供され、ダイナミックリンクライブラリと呼ばれています.
静的リンク
静的リンクは静的リンクライブラリを使用し、コネクタは静的リンクライブラリから適用される関数コードを見つけ、ライブラリをコードとともに実行可能ファイルに挿入します.
ダイナミックリンク
ダイナミックリンクダイナミックリンクライブラリを使用すると、実行可能ファイルには、実行時にダイナミックリンクライブラリDLLを配置するために必要な関数の位置情報のみが含まれます.
makeプロシージャとリンクライブラリを結合して見る:もし.c,.hが修正すると、その修正時間は、生成された実行可能ファイルの時間よりも必ず新しくなるので、これらに依存する.c,.hファイルのoファイルは再コンパイルされ、TARGETに遡り、最後に動的コンパイルか静的コンパイルかによって実行可能ファイルが異なる方法で生成されます.
Makefileクラシックチュートリアル(これらを把握するのに十分)とLIBとDLLの違いとこの2つのブログを使うことに重点を置いて、この2つのブログを書くのが素晴らしいと感じて、今日の収穫を以下にまとめます.
make
Qtのqmakeは根拠があります.Proファイルは自動的にMakefileを生成します.Makefileでは、どのファイルを先にコンパイルする必要があるのか、どのファイルを後でコンパイルする必要があるのか、どのファイルを再コンパイルする必要があるのかを規定する一連のルールが定義されており、自動コンパイル機能が実現されています.
Makefileがあれば簡単に使えます
make makeDemo
コマンドを使用して、実行可能なファイルをコンパイルするプロセスを完了します.もちろん実行も可能です
make clean
クリアして再コンパイルします.
makeプロセス
1.makeはまずMakefileを探します.
2.MakefileでTARGETを探し、このTARGETを最終的なターゲットファイルとします.
3.TARGETの依存を探す.oファイル、また探します.oファイルの依存項目....
4.葉のノードに着いたら、見つけることに相当する.c和.hファイルコンパイル生成.oファイル、...、最後に実行可能ファイルを生成します.
リンクライブラリ
まず、コンパイルはソースコードを中間コードにコンパイルすることであることを明らかにする.oファイルは、リンクライブラリに必要なコードと.oファイルがリンクされ、実行可能ファイルが生成される.実行可能ファイルに実際のコードが含まれているか、関数コードのみが含まれているエントリアドレスによって、静的コンパイルと動的コンパイルの2種類に分けられます.静的リンクライブラリと動的リンクライブラリの2種類もあります.
静的リンクライブラリ
LIBには関数コード自体が含まれており,リンク時に直接実行可能ファイルにコードを追加することを静的リンクライブラリと呼ぶ.
ダイナミックリンクライブラリ
LIBには、関数が存在するDLLファイルとファイル内の関数の位置の情報が含まれており、コードには、実行時にプロセス空間にロードされるDLLが提供され、ダイナミックリンクライブラリと呼ばれています.
静的リンク
静的リンクは静的リンクライブラリを使用し、コネクタは静的リンクライブラリから適用される関数コードを見つけ、ライブラリをコードとともに実行可能ファイルに挿入します.
ダイナミックリンク
ダイナミックリンクダイナミックリンクライブラリを使用すると、実行可能ファイルには、実行時にダイナミックリンクライブラリDLLを配置するために必要な関数の位置情報のみが含まれます.
まとめ
makeプロシージャとリンクライブラリを結合して見る:もし.c,.hが修正すると、その修正時間は、生成された実行可能ファイルの時間よりも必ず新しくなるので、これらに依存する.c,.hファイルのoファイルは再コンパイルされ、TARGETに遡り、最後に動的コンパイルか静的コンパイルかによって実行可能ファイルが異なる方法で生成されます.