2013-10-09 5 views
12

私はAutotoolsの初心者です。私の理解からは、一つはAutotool群使用してソフトウェアを構築するために、以下の基本的な手順を使用します。なぜ "autoreconf"が頻繁に使用されていないのですか?

  1. autoreconf --install
  2. ./configure
  3. make

をしかし、私は上の(ほとんどのオープンソース・ソフトウェア・パッケージのことに気づきましたLinux)はステップ1を必要としません。ほとんどの場合、ビルドにはステップ2と3が必要です。彼らはすでにMakefile.inとパッケージされているようです。なぜ私は不思議に思っていますか? Makefile.inを手動でコーディングするか、ソフトウェアパッケージを作成する前にソフトウェア開発者autoreconfを使用してMakefile.inを生成しますか?

ありがとうございました。

+5

OK。私は自分自身で答えが得られたと思う:「autoreconf」を実行するユーザを必要としないため、ソフトウェアパッケージはエンドユーザのシステムに対する要求が少なくなる。私。エンドユーザがAutotoolsをインストールする必要はありません。私はこれが実際にはかなり大きい理由だと思います。 – user1783732

+1

これは正しいです。 'configure'が動くとき、すべてのユーザニーズは、スクリプトインタプリタ(Bourneシェル、sed、多分perl)とコンパイラツールチェーンのカップルです。すべてのライブラリの依存関係がなくても、 'configure'スクリプトは問題を実行して診断したり、問題を回避することができます。 'make dist-gzip'を実行すると、' configure'スクリプトとすべての '* .in'テンプレートファイルでtarballを取得します。これにより、ユーザはautotoolsを必要とする前の手順を行う必要がなくなります。 – DanielKO

答えて

6

tarballを作成する(またはバージョン管理システムからソースをチェックアウト)は、通常、他のものを行うことができるbootstrap.sh又はautogen.shというスクリプトからautoreconfを呼び出すソフトウェア開発者。 autoreconfMakefileによって呼び出されることもあります(configure.acが変更された場合など)。

ソース(パッチなど)を一部変更している人でも、を実行する必要がありません。パッケージ自体を変更する(configure.acおよび/またはMakefile.amに変更する)必要がある人だけがautoreconfを必要とします。

2

autoreconfを実行するには、正しいバージョンのautotoolsが既にインストールされている必要があります。これは鶏と卵の問題につながります。最初にオートツールをインストールするにはどうしたらいいですか?また、ほとんどのエンドユーザーが本当に必要としない余分な依存関係も追加されます。

結果として、ほとんどのパッケージャは、配布するソースtarballを生成する前にautoreconfを実行します。これは、もしあなたがそのようなtarballをダウンロードすれば、autotoolsを最初にインストールする必要なしにそれを設定し構築することができることを意味します。

関連する問題