はじめに
最近何かとソースからコンパイルすることが多かったので、備忘録。
基本、ソースをインストールするときは以下のようなコマンドを打っているかと思います。
./configure
make
make install
ここではおおまかに以下のことをまとめています。
- 各コマンドで何をしているのか
- configureが存在しない場合はどうしたらよいのか
- RPMパッケージを作る時のSPECファイルとは何者なのか
configure
configureはMakefileを生成するためのスクリプトファイルです。
ソースをインストールする環境というのはユーザによって異なります。
OSの種類によってフォルダ構成が異なったり、インストール先が異なったり、バラバラです。
configureはそういった細かな環境依存の設定を吸収し、Makefileというインストール設定ファイルに落とし込んでくれる働きをします。
そのため、インストール時の細かな設定というのはconfigureを実行する段階で行います。
以下はPHP7.4のconfigure例
# ./configure --prefix=/usr/local/php-7.4/ --enable-mbstring --with-mysqli
Makefileとは
configureを実行することで生成される、インストールの定義ファイルになります。
makeはMakefileをもとに、ソースからコンパイル処理を行います。

Makefileの生成方法のパターン
ソースファイル一式の中に、configureスクリプトが存在しない場合があります。
その場合、configureを生成するための設定ファイルが存在しているかと思います。
そういうパターンのときはautoreconfを使い、configureを生成します。
パターン1.configureスクリプトが準備されている場合
至れり尽くせりなパターン。
configureスクリプトにオプションをつけて実行するだけでMakefileが生成される。
パターン2.configureスクリプトが準備されていない場合
おそらくは、Makefile.amとconfigure.acが準備されているかと思います。
このパターンでは自動生成コマンドを使い、configureを作成する必要があります。
コマンド | 内容 |
automake | Makefile.am から Makefile.inを生成する |
autoconf | configure.ac から configureを生成する |
autoreconf | automakeとautoconfとか、諸々必要なコマンドを呼び出して一括でやってくれる。 うまくいくとMakefile.inとconfigureの両方が生成される。 |
おおまかな流れは以下になります。
- automakeでMakefile.amからMakefile.inを生成する
- autoconfでconfigure.acからconfigureを生成する
- configureを実行するとMakefile.inを基にMakefileが生成される
- makeコマンドを使い、Makefileを基にコンパイルを行う。
- make installでインストールを行う。
autoreconfは1.と2.を一括でやってくれるコマンドになります。
コメント