ファイヤープロジェクト
Automake,Autoconf,Libtoolってなんだ?
2003-08-01T05:58+09:00   matsu
Automake,Autoconf,Libtool(Autoheader,AutoscanなどとあわせてGNU Autotoolsというらしい.聖なる3文字を冠している)の目的の紹介.
Automake,Autoconf,Libtoolに代表されるツール郡をGNU Autotoolsと呼ぶ.GNU Autotoolsの目的は「どこでもビルド,実行できるパッケージ作成を支援すること」である.このために,ビルド,インストール環境にあわせたMakefileを生成するconfigureスクリプトを生成したり,インストール環境の仕様やポリシーにあわせたライブラリ管理を行なうlibtoolスクリプトを生成したりする.だが,あくまで「支援」なので,どこでもビルド,実行できるパッケージを作成するには,それなりにコーディングする必要がある.
info automakeによると,Automakeの目的は「Makefile.amからMakefile.inを自動生成すること」らしい.自動生成,非常に魅力的な言葉である.人は何もしなくていい世界を目指して数々の難題と格闘をするものだ(本当か?).その成果物がもうあるだと?ありがとうございます.で,Makefile.amとは基本的にはmakeのマクロ定義の集合で,それらのマクロはMakefile.inを生成するのに使用される.また,生成されるMakefile.inはGNU standardに準拠するらしい(これは結構重要らしい).その他Automakeの重要な特徴を以下に示す.
  • AutomakeはそのプロジェクトでAutoconfを使用することを前提とする(このFeatureでもAutomakeと一緒にAutoconfについて調査する).
  • configure.inにおいていくつかの制限条件を強いる(詳細は以降で明らかになるのだろうか).
  • perlを使用する.
Automakeの目的でAutoconfが出てきたので,ここで一旦Autoconfの目的について記述する.info autoconfによると,その目的とは「ソースをシステムに適合させるシェルスクリプトconfigureを自動生成する」ことらしい.自動生成,非常に魅力的な言葉である(以下略).以下Autoconfの重要な特徴を以下に示す.
  • configureスクリプトはAutoconfから独立しているので,configureを実行するシステムにautoconfがインストールされている必要はない.
  • Autoconfだけではポータブルなパッケージを作成するための諸々の問題は解決しきれないので,AutomakeやLibtoolと組み合わせて使うとよいらしい.
  • configureスクリプトを作成するためにAutoconfはGNU M4というマクロプロセッサに依存する.
多くのパッケージは独自のライブラリを有している.厄介なことに,ライブラリの構築方法の互換性はシステム間で保証されていない.また,ライブラリのパスを変更すると,再ビルドする必要が生じたりする.ビルドディレクトリからインストールディレクトリへ移動するだけでも面倒くさいことになっている.このような,構築まわりの手順が面倒なライブラリを自動生成したい.自動生成,(以下略).Libtoolはこのようにシステムに依存するライブラリの構築を自動で構築することを目的とする.
tarボールを落して./configure,make,make installとしているが,あれは大抵Autoconf,Automakeで生成されたconfigureスクリプトとMakefile.inがいろいろやってくれているらしい.tarボールからビルド,インストールしてみると,Autoconf,Automakeで何ができるようになるか,その雰囲気がわかる.
matsu(C)
Since 2002
Mail to matsu