autotools



autotoolsとは

autotoolsは、コンパイ実行環境(OS、コンパイラ、ライブラリなどの依存関係)を自動的に検出して、ソースコードのコンパイルからインストールまでの工程を自動化するツール群です。UNIX系OSにおいてオープンソースのソフトウェアパッケージの開発及び配布方法として用いられています。

autotoolsを利用して作成されたパッケージは、ソースコードを展開した後、以下のコマンドを実行することでコンパイルからインストールまで完了することができます。

# ./configure
# make
# make install

autotoolsの構成

autotoolsは主に「autoconf/automake/libtool」という3つのツールで構成されます。


autoconfとは

autoconfは、開発環境の定義を記述したファイル「configure.ac」から「configure」スクリプトを生成するためのツールです。

autoconf-2.13の頃では「configure.in」からconfigureスクリプトを作成していましたが、autoconf-2.57くらいから「configure.in」よりも「configure.ac」が推奨されています。


automakeとは

automakeは、「Makefile.am」ファイルからMakefileのテンプレートとなる「Makefile.in」ファイルを生成するツールです。

Makefile.amファイルには、プログラムとソースコードの関係などを記述します。


libtoolとは

libtoolは、システムに依存するライブラリを自動で構築するためのツールです。

各種ライブラリを生成する手順におけるプラットホームへの依存性を隠蔽することができます。


configureスクリプトについて

configureスクリプトは、テンプレートである「Makefile.in」ファイルを参照して、GNU Makefile標準に準拠したMakefileを作成します。


autotoolsによる環境構築

ページ下方の「autotools実行サンプル」で環境構築の実行サンプルを記述しています。

ここでは概要についての説明を記述します。


autotoolsによるプロジェクト作成作業の全体像は以下の通りです。

  1. makefile.amの作成/編集をする。
  2. configure.acを作成/編集をする。
  3. autoheaderコマンドを実行する。(プリプロセッサ用ヘッダファイル雛形の生成)
  4. aclocalコマンドを実行する。(automake用m4マクロの生成)
  5. automakeコマンドを実行する。(makefile.inの生成)
  6. autoconfコマンドを実行する。(configureスクリプトの生成)

Makefile.amを作成/編集する。

プロジェクトの対象ディレクトリ(サブディレクトリを含む)にMakefile.amを作成します。

詳細はMakefile.amの編集を参照してください。

なお、autoscanコマンドに先駆けてNakefile.amを作成することで、configure.scanファイルに生成するMakefileのパスなどが自動設定されます。


configure.acを作成/編集する。

autoscanコマンドを実行すると、「configure.scan」ファイルが生成されます。

「configure.scan」を「configure.ac」に名前を変更します。

configure.acにプロジェクト用の設定を記述します。詳細はconfigure.acの編集を参照してください。

$ autoscan
$ mv configure.scan configure.ac

autoheader

プリプロセッサマクロ用ヘッダファイルのテンプレート「config.h.in」を生成する。

$ autoheader

aclocal

automake用のマクロファイル「aclocal.m4」を生成します。

aclocalコマンドはacinclude.m4などの情報からaclocal.m4を生成します。

$ aclocal

automakeの実行

makefile.amを入力ファイルとしてmakefile.inの雛形を生成します

「--add-missing」オプションを指定すると、「install-sh」や「mkinstalldirs」など必要になるファイルをautomakeが自動で作成します。

また、「COPYING」などのautomakeが要求するファイル・ディレクトリを用意しておきます。

$ touch INSTALL NEWS README COPYING AUTHORS ChangeLog
$ automake --add-missing --copy

autoconfを実行する。

configure.inからconfigureスクリプトを生成します。

$ autoconf

libtoolの利用

libtoolを利用してライブラリを作成する場合のプロジェクト作成作業の全体像は以下の通りです。


  1. makefile.amの作成/編集をする。
  2. configure.acを作成/編集をする。
  3. autoheaderコマンドを実行する。(プリプロセッサ用ヘッダファイル雛形の生成)
  4. libtoolizeコマンドを実行する。
  5. aclocalコマンドを実行する。(automake用m4マクロの生成)
  6. automakeコマンドを実行する。(makefile.inの生成)
  7. autoconfコマンドを実行する。(configureスクリプトの生成)

libtool用の設定

configure.acに以下を追加します。

AM_PROG_LIBTOOL

libtoolコマンドの実行

config.guess,config.sub,ltconfig,ltmain.sh,ltcf-c.shなどのファイルが生成されます。

aclocalコマンド実行後にlibtoolizeコマンドを実行すると、再度aclocalコマンドを実行するように警告されます。

$ libtoolize --force

libtoolizeではなく「glibtoolize」を利用する場合には以下の通りです。

$ glibtoolize --force

autotoolsのmakeコマンド

autotoolsによって生成されたMakefileは以下のような使い方が標準でできます。


make clean ビルドしたファイルを削除する。
make install プログラム、ライブラリをインストールする。
make dist 配布ファイル (XXX.tar.gz) を作成する。
make distcheck 配布ファイルをテストする。


autotools実行サンプル

実行手順の例を記載します。



関連

C言語

gcc

Makefile

configure.acの編集

Makefile.amの編集




スポンサード リンク