Linuxシステムのコンパイルコマンドは「Make」です。 Linux システムでは、make は非常に重要なコンパイル コマンドです。管理者はコマンド ラインから多くのオープン ソース ツールをコンパイルおよびインストールするためにこれを使用し、プログラマは大規模で複雑なプロジェクトのコンパイルの問題を管理するためにこれを使用します。 make は、大規模なプログラムの自動コンパイル タスクを管理し、プログラムの特定の部分を再コンパイルする必要があることを自動的に判断し、コンパイル指示を発行するために使用されます。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
Linux の make コマンドは、システム管理者やプログラマーが最も頻繁に使用するコマンドの 1 つです。管理者はこれを使用して、コマンド ラインを介して多くのオープン ソース ツールをコンパイルおよびインストールし、プログラマーは大規模で複雑なプロジェクトのコンパイルの問題を管理するために使用します。この記事では、いくつかの例を使用して、make コマンドの背後にある動作メカニズムについて説明します。
make は、Linux システム用のユーティリティ プログラムです。これは、大規模なプログラムの自動コンパイル タスクを管理し、プログラムの特定の部分を再コンパイルする必要があることを自動的に判断し、コンパイル指示を発行するために使用されます。ただし、最も一般的には C 言語プログラムのコンパイルで使用されます。ただし、make は特定の言語に限定されるわけではなく、シェル コマンドを通じてコンパイラを実行できるあらゆる言語で使用できます。さらに、make を使用して、依存するファイルが変更された後にファイルを自動的に更新する必要があるビルド タスクを記述することもできます。
Make の仕組みを知らない人のために説明すると、make コマンドはコマンド ライン引数と同じようにターゲットを受け取ります。これらの目標は通常、「Makefile」という名前の特別なファイルに保存され、ファイルには目標に対応する操作も含まれています。詳細については、Makefile の仕組みに関するこの一連の記事を参照してください。
make コマンドが初めて実行されるとき、Makefile をスキャンしてターゲットとその依存関係を見つけます。これらの依存関係自体がターゲットである場合は、引き続き Makefile でこれらの依存関係をスキャンして依存関係を確立し、コンパイルします。主要な依存関係がコンパイルされると、次にメイン ターゲットがコンパイルされます (これは make コマンドを通じて渡されます)。
ここで、あるソース ファイルを変更した後、再度 make コマンドを実行すると、そのソース ファイルに関連するターゲット ファイルのみがコンパイルされるため、最終的な実行可能ファイルをコンパイルすると大幅なコストが節約されます。時間。
この記事で使用したテスト環境は次のとおりです:
OS —— Ubunut 13.04 Shell —— Bash 4.2.45 Application —— GNU Make 3.81
プロジェクトの内容は次のとおりです。
$ ls anotherTest.c Makefile test.c test.h
all: test test: test.o anotherTest.o gcc -Wall test.o anotherTest.o -o testtest.o: test.c gcc -c -Wall test.c anotherTest.o: anotherTest.c gcc -c -Wall anotherTest.c clean: rm -rf *.o test
を使用するか、ターゲット all を指定して make コマンドの後に続けることができます。
。
$ make gcc -c -Wall test.c gcc -c -Wall anotherTest.c gcc -Wall test.o anotherTest.o -o test
ディレクトリの内容を再度表示すると、さらに .o ファイルと実行可能ファイルがいくつかあります。
$ ls anotherTest.c anotherTest.o Makefile test test.c test.h test.o
$ make gcc -c -Wall test.c gcc -Wall test.o anotherTest.o -o test
すべてのターゲット ファイルと実行可能ファイル テストをクリーンアップすると、ターゲットを使用できるようになります
clean:
$ make clean rm -rf *.o test$ ls anotherTest.c Makefile test.c test.h
これは例です:
$ make make: Nothing to be done for `all’.$ make -B gcc -c -Wall test.c gcc -c -Wall anotherTest.c gcc -Wall test.o anotherTest.o -o test
はファイルを強制的にコンパイルすることがわかります。すべてのファイル ターゲット ファイルと最終的な実行可能ファイル。
これは例です:
$ make -d | more GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program built for x86_64-pc-linux-gnu Reading makefiles… Reading makefile `Makefile’… Updating makefiles…. Considering target file `Makefile’. Looking for an implicit rule for `Makefile’. Trying pattern rule with stem `Makefile’. Trying implicit prerequisite `Makefile.o’. Trying pattern rule with stem `Makefile’. Trying implicit prerequisite `Makefile.c’. Trying pattern rule with stem `Makefile’. Trying implicit prerequisite `Makefile.cc’. Trying pattern rule with stem `Makefile’. Trying implicit prerequisite `Makefile.C’. Trying pattern rule with stem `Makefile’. Trying implicit prerequisite `Makefile.cpp’. Trying pattern rule with stem `Makefile’. --More--
コマンドを使用していることもわかりました。ページ表示出力。
これは、現在のディレクトリにいると仮定した場合のディレクトリです:
$ ls file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt
ただし、実行する make コマンドの Makefile は ../make-dir/ ディレクトリに保存されます。これを行うことができます:
$ make -C ../make-dir/ make: Entering directory `/home/himanshu/practice/make-dir’ make: Nothing to be done for `all’. make: Leaving directory `/home/himanshu/practice/make-dir
你能看到 make 命令首先切到特定的目录下,在那执行,然后再切换回来。
如果你想将重命名 Makefile 文件,比如取名为 my_makefile 或者其它的名字,我们想让 make 将它也当成 Makefile,可以使用 -f 选项。
make -f my_makefile
通过这种方法,make 命令会选择扫描 my_makefile 来代替 Makefile。
相关推荐:《Linux视频教程》
以上がLinuxシステムのコンパイルコマンドとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。