目次
1. make と Makefile の役割
2. make と Makefile の使用法
クリーニング
ホームページ 運用・保守 Linuxの運用と保守 Linux 自動ビルド ツール make および Makefile の使用方法

Linux 自動ビルド ツール make および Makefile の使用方法

May 14, 2023 pm 04:22 PM
linux make makefile

1. make と Makefile の役割

プロジェクト内のソース ファイルはカウントされません。ソース ファイルはタイプ、関数、モジュールに応じていくつかのディレクトリに配置されます。makefile は一連のルールを定義します。を指定し、どのファイルを最初にコンパイルする必要があるか、どのファイルを後でコンパイルする必要があるか、どのファイルを再コンパイルする必要があるか、さらに複雑な関数操作を実行することもできます。

つまり、makefile によってもたらされる利点は、「自動コンパイル」です。一度作成すると、必要な make コマンドは 1 つだけで、プロジェクト全体が完全に自動的にコンパイルされるため、効率が大幅に向上します。 . ソフトウェア開発の効率化。

make は、makefile 内の命令を解釈するコマンド ツールです。一般に、Delphi の make、Visual C の nmake、Linux 上の GNU など、ほとんどの IDE にこのコマンドがあります。 Makefile がエンジニアリングにおけるコンパイル方法になっていることがわかります。 make はコマンド、makefile はファイルです。両方を一緒に使用すると、プロジェクトの自動構築が完了します。

2. make と Makefile の使用法

依存関係と依存関係メソッドを理解する前に、C 言語で小さなプログラムを書いてみましょう。

Linux 自動ビルド ツール make および Makefile の使用方法

make.c ファイルを作成し、hello make コードを書きました。

次に、別の Makefile を作成しましょう (Makefile も可能ですが、推奨されません)。

次に、Makefile を編集して次のコードを記述します。

Linux 自動ビルド ツール make および Makefile の使用方法

次に、保存して終了します。

これで、make コマンドを実行できます。 make が存在しないというメッセージが表示された場合は、インストールされていないため、root でのインストールに切り替えることができます。インストール コード: yum install make または sudo install make

通常通りmakeを実行すると以下の画面が表示されます。

Linux 自動ビルド ツール make および Makefile の使用方法

次に、現在のディレクトリ内のファイルを表示します。

追加の実行可能プログラム make があることがわかります。それでは、./make を実行してみましょう。

Linux 自動ビルド ツール make および Makefile の使用方法

この実行可能プログラムの出力が make であることがわかります。

これは自動ビルド ツールであり、Makefile で構成するだけで済みます。次に、「make」と直接入力してコードをコンパイルします。次に、もう一度 make と入力してみましょう。

Linux 自動ビルド ツール make および Makefile の使用方法

は、make プログラムが最新であることを示すメッセージを表示します。つまり、プログラムを変更または更新していない場合です。この場合、プログラムは何も変更されていないため、コンパイルされません。なぜコンパイルするのでしょうか?

それでは、Makefile に書かれたコードを分析してみましょう。

Linux 自動ビルド ツール make および Makefile の使用方法

最初に 3 つの部分に分割します

make

make.c

gcc make.c -o make -std=c99

3 つの関係は、makemake .c# に依存することです。 ## が生成されました。この 2 つは 依存関係 を持ち、gcc make.c -o make -std=c99 は make が make.c に依存するメソッドであり、dependency メソッドと呼ばれます。 ###。

依存関係と依存関係メソッドとは何ですか?

例え話です。

月末になり、生活費がなくなりました。この時点で、あなたはお父さんに電話して、「お父さん、もう月末です。お金がありません。」と伝えます。この時点であなたのお父さんは知っていて、あなたに生活費を与えるでしょう。ここで、あなたとあなたの父親は父子関係にあるため、あなたは父親に依存しており、あなたとの間には

依存関係

があります。そして、お父さんが生活費をくれるということは、お父さんを頼ることになるので、これが依存法です。この時にルームメイトの父親に電話して生活費を頼むと、出て行けと言われるでしょう。依存関係がまったくないので、依存関係がなければ依存メソッドも存在しません。

Linux 自動ビルド ツール make および Makefile の使用方法つまり、私のプログラムは同じです。 make は生成された実行可能プログラムです。また、make.c からコンパイルされるため、make.c に依存します。依存する方法は、コマンド

gcc make.c -o make -std=c99

を実行することです。

依存関係の原則

    make は、現在のディレクトリで「Makefile」または「makefile」という名前のファイルを検索します。
  • 見つかった場合は、ファイル内の最初のターゲット ファイル (ターゲット) が見つかります。上記の例では、ファイル "hello" が見つかり、このファイルが最終ターゲット ドキュメントとして使用されます。

  • hello ファイルが存在しない場合、または hello が依存する後続の test.o ファイルのファイル変更時刻がテスト ファイルよりも新しい場合 (タッチを使用してテストできます) , すると、彼 後ほど定義したコマンドが実行され、テストファイルが生成されます。

  • テストが依存する test.o ファイルが存在しない場合、make は現在のファイル内でターゲットの test.o ファイルの依存関係を探します。見つかった場合は、 test.o ファイルを生成します。 (これはスタック プロセスに少し似ています)

  • もちろん、C ファイルと H ファイルは存在するため、make は test.o ファイルを生成し、test.o を使用します。 file は、ファイルのテストを実行するという make の最終的なタスクを宣言します。

  • これは make 全体の依存関係です。Make は、最初のターゲット ファイルが最終的にコンパイルされるまで、ファイルの依存関係をレイヤーごとに検索します。

  • 検索プロセス中に、最後の依存ファイルが見つからないなどのエラーが発生した場合、make は直接終了してエラーを報告します。また、定義されたファイルのエラーについては、 command 、またはコンパイルが失敗した場合、make は単にそれを無視します。

  • make はファイルの依存関係のみを考慮します。つまり、依存関係を見つけた後もコロンの後のファイルが存在しない場合は、申し訳ありませんが、動作しません。

クリーニング

通常、コードを記述するときは、コードを繰り返しコンパイルして実行する必要があります。

次回再コンパイルする前に、前回生成された実行可能プログラムをクリーンアップする必要があります。ただし、クリーニング中に間違ってソース ファイルを削除してしまい、再び問題が発生する可能性があります。

それでは、解決策はあるのでしょうか?答えはもちろんです。

Makefile の編集を続けます。

Linux 自動ビルド ツール make および Makefile の使用方法

.PHONY:clean

clean:

	rm -f make
ログイン後にコピー

は元々のベースで追加したものですが、PHONY の役割は何でしょうか?

.PHONY は擬似ターゲットで変更され、擬似ターゲットは常に実行されます。 clean は自作の make コマンドです 使用方法は make clean

では、このコマンドを試してみましょう

Linux 自動ビルド ツール make および Makefile の使用方法

クリーンアップされたということですが、なぜ疑似ターゲットが常に実行されるのでしょうか?何度か実行して確認してみましょう。

Linux 自動ビルド ツール make および Makefile の使用方法

いつでも実行できるので、make を複数回実行するとどうなるでしょうか?

Linux 自動ビルド ツール make および Makefile の使用方法

make を一度実行すると、.PHONY によって変更されていないため、実行できないことがわかります。次に、.PHONY で変更して、再試行します。

Linux 自動ビルド ツール make および Makefile の使用方法

次に保存して終了し、make

Linux 自動ビルド ツール make および Makefile の使用方法

# を実行すると、次のことがわかります。何度も演奏した。ただし、ファイルは変更されていないため、これは必要ないと思います。再コンパイルは意味がないため、自動コンパイルに .PHONY

を追加することはお勧めできません。保存して終了し、make

を実行します。 Linux 自動ビルド ツール make および Makefile の使用方法# 複数回.

##複数回実行されていることがわかります。ただし、ファイルは変更されていないため、これは必要ないと思います。再コンパイルは意味がないため、自動コンパイルに

.PHONY を追加することはお勧めできません。

以上がLinux 自動ビルド ツール make および Makefile の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

DebianのNginx SSLパフォーマンスを監視する方法 DebianのNginx SSLパフォーマンスを監視する方法 Apr 12, 2025 pm 10:18 PM

この記事では、Debianシステム上のNginxサーバーのSSLパフォーマンスを効果的に監視する方法について説明します。 Nginxexporterを使用して、NginxステータスデータをPrometheusにエクスポートし、Grafanaを介して視覚的に表示します。ステップ1:NGINXの構成最初に、NGINX構成ファイルのSTUB_STATUSモジュールを有効にして、NGINXのステータス情報を取得する必要があります。 NGINX構成ファイルに次のスニペットを追加します(通常は/etc/nginx/nginx.confにあるか、そのインクルードファイルにあります):location/nginx_status {stub_status

Debianシステムでリサイクルビンをセットアップする方法 Debianシステムでリサイクルビンをセットアップする方法 Apr 12, 2025 pm 10:51 PM

この記事では、デビアンシステムでリサイクルビンを構成する2つの方法を紹介します:グラフィカルインターフェイスとコマンドライン。方法1:Nautilusグラフィカルインターフェイスを使用して、ファイルマネージャーを開きます。デスクトップまたはアプリケーションメニューでNautilusファイルマネージャー(通常は「ファイル」と呼ばれる)を見つけて起動します。リサイクルビンを見つけてください:左ナビゲーションバーのリサイクルビンフォルダーを探してください。見つからない場合は、「他の場所」または「コンピューター」をクリックして検索してみてください。リサイクルビンプロパティの構成:「リサイクルビン」を右クリックし、「プロパティ」を選択します。プロパティウィンドウで、次の設定を調整できます。最大サイズ:リサイクルビンで使用可能なディスクスペースを制限します。保持時間:リサイクルビンでファイルが自動的に削除される前に保存を設定します

Apacheサーバーを再起動する方法 Apacheサーバーを再起動する方法 Apr 13, 2025 pm 01:12 PM

Apacheサーバーを再起動するには、次の手順に従ってください。Linux/MacOS:sudo systemctl restart apache2を実行します。 Windows:Net Stop apache2.4を実行し、ネット開始apache2.4を実行します。 Netstat -A |を実行しますサーバーのステータスを確認するには、STR 80を見つけます。

Debian Readdirのパフォーマンスを最適化する方法 Debian Readdirのパフォーマンスを最適化する方法 Apr 13, 2025 am 08:48 AM

Debian Systemsでは、Directoryコンテンツを読み取るためにReadDirシステム呼び出しが使用されます。パフォーマンスが良くない場合は、次の最適化戦略を試してください。ディレクトリファイルの数を簡素化します。大きなディレクトリをできる限り複数の小さなディレクトリに分割し、Readdirコールごとに処理されたアイテムの数を減らします。ディレクトリコンテンツのキャッシュを有効にする:キャッシュメカニズムを構築し、定期的にキャッシュを更新するか、ディレクトリコンテンツが変更されたときに、頻繁な呼び出しをreaddirに削減します。メモリキャッシュ(memcachedやredisなど)またはローカルキャッシュ(ファイルやデータベースなど)を考慮することができます。効率的なデータ構造を採用する:ディレクトリトラバーサルを自分で実装する場合、より効率的なデータ構造(線形検索の代わりにハッシュテーブルなど)を選択してディレクトリ情報を保存およびアクセスする

Debian syslogを学ぶ方法 Debian syslogを学ぶ方法 Apr 13, 2025 am 11:51 AM

このガイドでは、Debian SystemsでSyslogの使用方法を学ぶように導きます。 Syslogは、ロギングシステムとアプリケーションログメッセージのLinuxシステムの重要なサービスです。管理者がシステムアクティビティを監視および分析して、問題を迅速に特定および解決するのに役立ちます。 1. syslogの基本的な知識Syslogのコア関数には以下が含まれます。複数のログ出力形式とターゲットの場所(ファイルやネットワークなど)をサポートします。リアルタイムのログ表示およびフィルタリング機能を提供します。 2。syslog(rsyslogを使用)をインストールして構成するDebianシステムは、デフォルトでrsyslogを使用します。次のコマンドでインストールできます:sudoaptupdatesud

Apacheを開始できない問題を解決する方法 Apacheを開始できない問題を解決する方法 Apr 13, 2025 pm 01:21 PM

Apacheは、次の理由で起動できません。構成ファイル構文エラー。他のアプリケーションポートとの競合。権限の問題。メモリから。デッドロックを処理します。デーモン障害。 Selinux許可の問題。ファイアウォールの問題。ソフトウェアの競合。

See all articles