Linuxのメイクファイルとは何ですか
Linux では、makefile はプロジェクト ファイルのコンパイル ルールであり、プロジェクト全体のコンパイルとリンクのルールを記述します。これには、どのファイルをコンパイルする必要があるか、どのファイルをコンパイルする必要がないのかが含まれます。どのファイルを最初にコンパイルする必要があるか、どのファイルをポストコンパイルする必要があるか、どのファイルを再構築する必要があるかなど。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
1. Makefile とは
Makefile は、単純にプロジェクト ファイルのコンパイル ルールと考えることができ、プロジェクト全体のコンパイルとリンクのルールを記述します。
エンタープライズレベルのプロジェクトには通常、多数のソースファイルが含まれており、機能、種類、モジュールごとに異なるディレクトリに分類されている場合もあれば、1つのディレクトリに複数のプログラムが格納されている場合もあります。
Makefle は、上記のコードの一部をコンパイルする方法の問題を解決するために生まれました。Makefle は、どのファイルを最初にコンパイルするか、どのファイルを後でコンパイルするか、どのファイルをコンパイルするかを決定する一連のルールを定義します。再コンパイルされました。
プロジェクト全体のコンパイルに必要なものはすべて Makefile に記述できます。言い換えれば、Makefile を使用すると、大量のソース ファイルやパラメーターを毎回手動で入力する必要がなく、プロジェクトのコンパイルを自動化できます。
Makefile の利点は、「自律コンパイル」を実現できることです。通常、プロジェクト全体でコンパイル、リンク、さらに複雑な機能を完了するには make コマンドが 1 つだけ必要です。すべての Linux ソース プログラムには Makefile が付属していると言えます。
2. Makefile の利点
コードのコンパイルを管理し、コンパイルするファイル、コンパイル順序、再コンパイルが必要かどうかを決定します;
コンパイル時間を節約します。ファイルが変更された場合、プロジェクト全体を再コンパイルする必要はなく、このファイルを再コンパイルするだけで済みます。
一度だけです。通常、Makefile は一度だけ書き込む必要があり、後で大幅に変更する必要はありません。
3. 命名規則
一般的に、Makefile の名前は Makefile または makefile として問題ありませんが、多くのソース ファイルの名前は小文字であるため、Makefile を最初に表示できるため、より多くのプログラマが Makefile の名前を使用します。
Makefile に別の名前 (Makefile_demo など) を付けることもできますが、次の方法で使用する必要があります:
make -f Makefile_demo
4. 基本ルール
Makefile の基本ルールは次のとおりです。
シリーズの目的: 依存関係
(TAB) ルール
## 目的 --> 生成する必要のあるターゲット ファイル依存関係 --> ターゲットの生成に必要なファイルルール --> 依存関係からターゲット ファイルを生成する手段filestab -->
各ルールはタブで始まる必要があります、スペースは許可されません
たとえば、よく gcc テストを作成します。 c -o test, Makefileを使うと次のように書けます:test: test.c gcc test.c -o test
最初の目標を最終目標として設定します。
5. 動作原理ターゲットの生成:
a. ルール内の依存ファイルが存在するかどうかを確認します; b . 依存ファイルが存在しない場合は、依存ファイルを生成するルールを探します。ターゲットの更新:
a. ターゲットのすべての依存関係を確認します。依存関係が更新されている場合は、ターゲットを再生成します。b . 対象ファイルが依存ファイルよりも新しい場合は、更新する必要があります。make:
このコマンドを使用して、所定の規則に従って対象ファイルを生成します。 Makefile ファイルの名前が Makefile または makefile ではない場合は、-f オプションを追加する必要があります (例:
make -f Makefile_demo##)
#きれいにする:コンパイル プロセス中に生成された中間ファイル (.o ファイル) と最終ターゲット ファイルをクリアします。 clean という名前のファイルが現在のディレクトリに存在する場合、このコマンドは実行されません。 -->解決策: 疑似ターゲット宣言: .PHONY:clean 特殊記号: -: を示しますこのコマンドの実行中にエラーが発生しても、後続のコマンドは引き続き実行されます。例: -rm a.o build/ @: コマンドがエコーなしでのみ実行されることを示します。一般ルールが実行されると、実行ルールが端末に出力されますが、この記号を追加するとコマンドのみが実行され、実行ルールはエコーされなくなります。例: @echo $(SOURCE) 変数の定義と割り当て: 変数は次のとおりです。直接使用 定義は、次のように値を割り当てることで完了できます。 INCLUDE = ./include/ 変数値: 囲みます。次のように括弧で囲み、ドル記号を追加します。 FOO = $(OBJ) システムには変数が付属しています。 は通常、CC などの大文字です。 、PWD、CFLAGなど。 デフォルト値があるものとないものがあります。たとえば、一般的なものは次のとおりです。 CPPFLAGS: プリプロセッサに必要なオプション (例: -I CFLAGS: コンパイル中に使用されるパラメータ –Wall –g -c LDFLAGS ):リンク ライブラリで使用されるオプション -L -l 変数のデフォルト値は変更できます。たとえば、CC のデフォルト値は cc ですが、gcc に変更できます: CC =gcc ##一般的に使用される自動変数:##Makefile には多くの自動変数が用意されていますが、一般的に使用されるのは次の 3 つです。使用済み。これらの自動変数はルール内のコマンドでのみ使用でき、他の場所では使用できません。 $@ -->ルールのターゲット $ルールの最初の依存関係条件 $^ -->ルールすべての依存関係 の条件 例: app: main.c func1.c fun2.c gcc $^ - o $@ ここで: $^ main.c func1.c fun2.c を表し、$ パターン ルールでは、ターゲットおよび依存関係の条件で % を使用して、ディレクトリ内の main.c、func1.c などの対応するファイルと一致します。 func2.c という 3 つのファイルがある場合、これら 3 つのファイルのコンパイルは 1 つのルールで完了できます: %.o:%.c $(CC) –c $ このパターン ルールの意味: main.o は main.c によって生成され、 func1.o は func1.c によって生成され、 func2 .o は func2.c によって生成されます。これはパターン ルールの役割であり、ディレクトリ内のすべてのファイルを一度に照合できます。 9. 関数 が必要であることに注意してください。次の例では、ディレクトリに main.c、func1.c、および func2.c という 3 つのファイルがあると仮定します。 は、指定されたディレクトリ内の指定されたタイプのファイルを検索するために使用されます。次のパラメータは、ディレクトリ ファイル タイプです。例: src = $ (wildcard ./src/*.c) この文の意味は次のとおりです。 ./src ディレクトリ内でサフィックス .c を持つすべてのファイルを検索し、それらを変数 src に割り当てます。 コマンドの実行が完了すると、src の値は main.c func1.c fun2.c になります。 次の例のような一致置換を使用して、src ディレクトリから .c で終わるすべてのファイルを検索し、それらを .o ファイルに置き換えます。 , そしてobjに代入します。 obj = $(patsubst %.c ,%.o ,$(src)) src 変数内の .c 接尾辞を持つすべてのファイルを .o に置き換えます。 コマンドの実行後、obj の値は main.o func1.o func2.o 特別に、すべての .o ファイルを obj ディレクトリに置きたい場合は、次のようにします。次の方法を使用します: ob = $(patsubst ./src/%.c, ./obj/%.o, $(src)) 関連する推奨事項: "7. 通常の変数
8. 自動変数
makefile には数多くの関数が用意されており、以下の 2 つの関数もよく使用されます。
makefile 内のすべての関数には戻り値
以上がLinuxのメイクファイルとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

VSコードワンステップ/次のステップショートカットキー使用法:ワンステップ(後方):Windows/Linux:Ctrl←; macOS:CMD←次のステップ(フォワード):Windows/Linux:Ctrl→; macOS:CMD→

gitリポジトリアドレスを表示するには、次の手順を実行します。1。コマンドラインを開き、リポジトリディレクトリに移動します。 2。「git remote -v」コマンドを実行します。 3.出力と対応するアドレスでリポジトリ名を表示します。

NotePadはJavaコードを直接実行することはできませんが、他のツールを使用することで実現できます。コマンドラインコンパイラ(Javac)を使用してByteCodeファイル(filename.class)を生成します。 Javaインタープリター(Java)を使用して、バイトコードを解釈し、コードを実行し、結果を出力します。

Sublimeでコードを実行するには6つの方法があります。ホットキー、メニュー、ビルドシステム、コマンドライン、デフォルトビルドシステムの設定、カスタムビルドコマンド、プロジェクト/ファイルを右クリックして個々のファイル/プロジェクトを実行します。ビルドシステムの可用性は、崇高なテキストのインストールに依存します。

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

GITソフトウェアのインストールには、次の手順が含まれています。インストールパッケージをダウンロードしてインストールパッケージを実行して、インストール構成gitインストールgitバッシュ(Windowsのみ)を確認します

Laravelをインストールするには、これらの手順を順番に進みます。コンポーザー(MacOS/LinuxとWindows用)インストールLaravelインストーラーをインストールします。
