CentOS ソースコンパイル時のメモ

Linux

はじめに

最近何かとソースからコンパイルすることが多かったので、備忘録。

基本、ソースをインストールするときは以下のようなコマンドを打っているかと思います。

./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」ファイル | Linux技術者認定 LinuC | LPI-Japan
Linuxを学習する上で出てくる素朴な疑問や、便利なテクニックなどを紹介しています。

Makefileの生成方法のパターン

ソースファイル一式の中に、configureスクリプトが存在しない場合があります。
その場合、configureを生成するための設定ファイルが存在しているかと思います。
そういうパターンのときはautoreconfを使い、configureを生成します。

パターン1.configureスクリプトが準備されている場合

至れり尽くせりなパターン。
configureスクリプトにオプションをつけて実行するだけでMakefileが生成される。

パターン2.configureスクリプトが準備されていない場合

おそらくは、Makefile.amとconfigure.acが準備されているかと思います。
このパターンでは自動生成コマンドを使い、configureを作成する必要があります。

コマンド内容
automakeMakefile.am から Makefile.inを生成する
autoconfconfigure.ac から configureを生成する
autoreconfautomakeとautoconfとか、諸々必要なコマンドを呼び出して一括でやってくれる。
うまくいくとMakefile.inとconfigureの両方が生成される。
自動生成のコマンド

おおまかな流れは以下になります。

  1. automakeでMakefile.amからMakefile.inを生成する
  2. autoconfでconfigure.acからconfigureを生成する
  3. configureを実行するとMakefile.inを基にMakefileが生成される
  4. makeコマンドを使い、Makefileを基にコンパイルを行う。
  5. make installでインストールを行う。

autoreconfは1.と2.を一括でやってくれるコマンドになります。

コメント

タイトルとURLをコピーしました