Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Linuxどのようにmakeコマンドを使用するか

Linuxどのようにmakeコマンドを使用するか

  

Linuxシステム、makeコマンドは通常Makefileと共に使用されます、それからmakeコマンドの使用は何ですか?次の小シリーズでは、Linuxでmakeコマンドを使用する方法を紹介しています。
ログイン

システムの開発において、システムは、典型的にはそのように、起因する様々なモジュールとの間の相関の必然的な存在のために、これは、システムの保守性を向上させるいくつかのモジュールに分割されるが、場合、モジュールの変更もちろん、小規模なシステムでは接続の手動によるコンパイルは問題ありませんが、大規模なシステムであれば、モジュールが多数あるため、手動によるコンパイル方法は適用できません。このため、Linuxシステムでは、ターゲットファイルを自動的に管理するためのmakeコマンドが提供されています手動コンパイルおよび接続と比較して、makeコマンドの利点は変更されたファイルのみが更新されることです。更新後には最終更新時刻がありますmakeコマンドはこの最終更新時刻を使用してファイルが変更されたかどうかを判断しますが、変更されていないファイルは無視され、makeコマンドは更新が必要なファイルを見逃しません。

ファイル間やモジュール間の依存関係があるかもしれませんmakeコマンドもこの依存関係に基づいて管理されているので、依存関係を理解する必要があります; makeコマンドは確かにそれ自体を知らない。これらの依存関係では、プログラマーはこれらの依存関係をmakefileというファイルに書き込む必要があります。 Makefileにはいくつかのターゲットが含まれています通常、ターゲットはファイル名です各ターゲットごとに、この目的を達成するための一連のコマンドと、このターゲットに依存する他のターゲットまたはファイル名が用意されています。例:

#a単純なMakefile

prog:prog1.o prog2.o

gcc prog1.o prog2.o -o prog

prog1 .o:prog1.c lib.h

gcc -c -I。-o prog1.o prog1.c

prog2.o:prog2.c

gcc - c prog2.c

上記のMamefileはprog、prog1、prog2の3つのターゲットを定義していますコロンの後には依存ファイルのリストがあります;

最初のターゲットファイルprogについては、 2つの依存ファイル:prog1.oとprog2.o、いずれか1つの依存ファイルの更新、progも更新する必要があります。コマンドgcc prog1.o prog2.o -o progはprogを生成するためのコマンドです。ターゲットを再帰的な方法で更新する必要があるかどうかを確認する再帰は、廃止されたターゲットをボトムアップで更新し、ターゲットが依存しているすべてのターゲットが最新の場合にのみ更新されます。上記のMakefileを例にとり、prog2.cを変更しましたmakeを実行するとき、ターゲットprogはprog1.oとprog2.oに依存しているので、まずprog1.oとprog2.oが古くなっているかどうかをチェックし、ターゲットprog1.oはprog1に依存します。 .cとlib.h、これら2つのファイルは変更していないので期限切れにならず、ターゲットprog2.oをチェックします。prog2.cを変更したので、prog2.cを使用します。つまりprog2.cです。ターゲットファイルprog2.oよりも新しい、つまりprog2.oが期限切れになり、prog2.oに依存するすべてのターゲットが期限切れになるため、makeは最初にprog2.oを更新してからprogを更新します。

行が長すぎてテキストエディタの右端に達している場合は、円記号()を改行文字として使用できます円記号で接続されているすべての行は1行として扱われます。ファイル名にはワイルドカード(?または*)を使用できます。

コマンドの記述を簡単にするために、いくつかのマクロを定義してMakefileで省略形を使用することができます。

$ @はターゲットのフルネームを表します。

$ *は、接尾辞が削除されたターゲット名を表します。

$ "ターゲットを表す最初の関連ターゲット名

これで、上記のMakefileをそれに応じて変更することができます。

#省略形のMakefileを使用します。

prog:prog1.o prog2.o

gcc prog1.o prog2.o -o $ @

prog1。 o:prog1.c lib.h

gcc -c -I。-o $ @ $ "

prog2.o:prog2.c

gcc -c $ * .c

プロジェクトでは、複数のターゲットで同じファイルacを使用することができますが、後でそのファイルを変更する場合は、Makefile内のすべてのacを変更する必要があります。この問題では、マクロによってMakefileをより明確にすることができます。

#略語とマクロを使用したMakefile

MARCO = prog1.o prog2.o

prog:$(MARCO)

Gcc prog1.o prog2.o -o $ @

prog1.o:prog1.c lib.h

gcc -c -I。-o $ @ $ "

prog2.o:prog2.c

gcc -c $ *。c

大規模なプロジェクトでは、Makefileを手書きするのはとても面倒で、標準的なGNUソフトウェア(Apacleのように) configureスクリプトファイルを実行してMakefileを生成します; GNUソフトウェアのautomakeとautoconfは自動的にconfigureを生成するためのツールです。自動作成処理の後、Makefine.inがautoconf用に生成され、次にconfigureがautoconfで生成されます。 automakeとautoconfを使用するには、GNU Automake、GNU Autoconf、GNU m4、perl、およびGNU Libtoolをインストールする必要があります。

以上がLinuxでのmakeコマンドの使用方法ですMakefileの使用例について説明してくださいmakeコマンドを使用してターゲットファイルを実行することもできます。

Copyright © Windowsの知識 All Rights Reserved