LoginSignup
339

More than 5 years have passed since last update.

configure, make, make install とは何か

Posted at

Linux環境で何かをインストールするときに、configuremakemake installという言葉がよく出てきます。
configure、make、make installという言葉はよく見るものの、アプリによって微妙に違ったりすることに疑問を感じていました。
今回じっくり調べてみてとてもすっきりしましたのでまとめます。

これらは何者なのか

アプリをソースコードからインストールする時に使用します。

Linux環境にアプリをインストールしようとすると、大きく分けて2つの方法があります。
一つは、rpmやyumなどのコマンドを使用してパッケージとしてインストールする方法です。
もう一つがソースコードからインストールする方法です。
この後者の方法を使う際にconfigure、make、make installを使用します。

また、ソースコードからインストールするときに、必ずこのconfigure、make、make installを使用するということでもありません。
インストールするときには、README等から手順を確認する必要があります。
慣習的にこれらの方法がとられていることが多い、ということです。

configure

$ ./configure

configureというスクリプトファイルを実行しています(configureというコマンドがあるわけではありません)。
ソースコード中にこのスクリプトファイルが含まれているので、パスに注意して実行します。

実行することで、インストールに必要な環境変数やライブラリが正しく設定、設置されているか等がチェックされます。チェックした結果、MakeFileが作られます。
アプリケーションをインストールする環境は様々存在するため、単一のMakeFileを準備するだけだと、環境の差異に対応するのが難しくなります。
configureを使えば、アプリがインストールされる環境を自動的に調べ、その環境に合わせたMakeFileを自動的に作ることができます。

多くの場合は慣例に伴い「configure」という名前がつかれていますが、別の名前で定義されている場合もあります。
README等から手順を確認しましょう。

make

$ make

configureで作成されたMakeFileに基づいて、アプリのコンパイルが行われます。
makeコマンドは(こちらはコマンドです)オプションなし、引数なしで実行することで、MakeFileを参照し、MakeFile内のデフォルトの処理を行います(大抵の場合はビルド処理です)。
MakeFileが作成されたパスに気を付けて実行します。

make install

$ make install

makeコマンドによってコンパイルされたアプリをインストールします。
(結局のところは、makeしたファイル群をディレクトリにコピーしています)

make installというコマンドは、「MakeFile」に記述された「install」というラベルから処理を実行する、という動作になります。
configure同様、多くの場合は慣例に伴い「install」と定義されていますが、別の名前で定義されている場合もあります。

makeコマンド

$make [オプション] [ターゲット]

makeコマンドはMakeFileをもとにして実行されます。
オプションを使うことで(-f)、Makefileとして別のファイルを参照することもできます。

Makefile内の処理は、ターゲット単位で区分されています。
ターゲットを指定して実行することで、ターゲットに定義された内容のみが実際に実行されます。
ターゲットを指定しない場合は、一番上に定義されたターゲットの内容が実行されます。
代表的なターゲットがinstallやcleanとなります。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
339