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衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

Centosは、上流の分布であるRhel 8が閉鎖されたため、2024年に閉鎖されます。このシャットダウンはCentos 8システムに影響を与え、更新を継続し続けることができません。ユーザーは移行を計画する必要があり、提案されたオプションには、Centos Stream、Almalinux、およびRocky Linuxが含まれ、システムを安全で安定させます。

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。

CentOSが停止した後、ユーザーは次の手段を採用して対処できます。Almalinux、Rocky Linux、Centosストリームなどの互換性のある分布を選択します。商業分布に移行する:Red Hat Enterprise Linux、Oracle Linuxなど。 Centos 9ストリームへのアップグレード:ローリングディストリビューション、最新のテクノロジーを提供します。 Ubuntu、Debianなど、他のLinuxディストリビューションを選択します。コンテナ、仮想マシン、クラウドプラットフォームなどの他のオプションを評価します。

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)
