GNU/Linux >> Linux の 問題 >  >> Linux

Linux の Makefile はなぜ便利なのですか?

normal way Linux の場合は、make ファイルを使用します。

これは、ますます複雑なアプリケーションを手動で、または自家製のスクリプトでコンパイルすることによって人々が犯したすべての過ちから生まれました。複雑なプロジェクトのビルドの依存関係を表すことは自明ではありません。 Make は、そのような依存関係を指定する標準化された方法と、依存関係を解析して関連するビルド アクションを実行するツールを提供するだけです。

ビルド プロセスを簡素化/自動化する UI でさえ、舞台裏でメイク ファイルまたは類似のものを使用します。

更新

automake のコメントについて疑問に思っている方のために、このトピックに関する 2 つの異なる見解を示します

http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool

http://www.scurrilous.com/blog/archives/2005/08/23/i-hate-automake/


Makefile は非常に多くの作業を行い、多くの場合、人々が認識しているよりも強力です。次の簡単なメイクファイルを使用してください

 all: helloworld

それは 1 行で、(少なくとも gnu make は) cc -o helloworld helloworld.c を実行することを認識します。 次に、プロジェクトが大きくなるにつれて、もう 1 つのルールを追加します。

helloworld: ui.o xml.o mailcomponent.o
   $(CC) $(CFLAGS) -o [email protected] [email protected] $^

実行することを知らせます

cc -c ui.c
cc -c xml.c
cc -c mailcomponent.c
cc -o helloworld helloworld.c ui.o xml.o mailcomponent.o

次に、すべてを最適化したいと言います。

CFLAGS=-O2

ファイルの先頭にある

プロジェクトが大きくなると、make は変更されたファイルと変更されていないファイルを追跡し、関係のない、時間のかかる再コンパイルを防ぎます。

Makefile は時間の節約に非常に役立ちます。より高度なレシピについては触れていません。


Linux
  1. Linuxがエッジコンピューティングにとって重要である理由

  2. 古いコンピュータを再び便利にする方法

  3. Linuxでの12の便利なWgetコマンドの例

  1. xtermを使い続ける理由

  2. Unix / linuxでディレクトリへのハードリンクが許可されていないのはなぜですか?

  3. setsid() が役立つのはいつですか? Linux でプロセスをグループ化する必要があるのはなぜですか?

  1. Linux –異なるLinux / UNIXカーネルは交換可能ですか?

  2. Linux に /dev/tty がたくさんあるのはなぜですか?

  3. Linux の共有ライブラリが実行可能であるのはなぜですか?