web-dev-qa-db-ja.com

Automakeエラー './ltmain.sh'が見つかりません

mingw-get-setup.exeを使用してmingwとmsysをインストールしました。 Autotools(autoconf、automake、m4、libtool)もC:\/opt/autotoolsにインストールしました。

Automakeを実行すると、常に次のエラーが発生します。

configure.ac:11: error: required file './ltmain.sh' not found

Libtoolのインストール済みツリーからltmain.shをコピーすると、実行は正常に終了します。

コピーせずにltmain.shを見つけるようにautomakeを構成するにはどうすればよいですか?

23
user1345414

autoconf/automake/libtoolプロジェクトでは、呼び出す必要があります。

  • libtoolize:これは、_ltmain.sh_(libtoolの主要コンポーネント)を含むいくつかのサポートスクリプトをコピー/リンクします。
  • aclocal:configureスクリプトが必要とするすべてのm4マクロを検索し、アクセスを容易にするためにローカルコピーを作成します。
  • autoheader:_config.h_/_AC_CONFIG_HEADERS_を使用する場合はオプション、それ以外の場合は、コンパイラーを呼び出すときにすべてのテスト結果マクロがインライン化されます。
  • autoconf:_configure.ac_で使用されるすべてのマクロをconfigureスクリプトに展開します。
  • automake:すべての_Makefile.am_を_Makefile.in_テンプレートに変換します。これを_--add-missing_で呼び出すと、追加のサポートスクリプトをプロジェクトにリンク/コピーできるようになります(compilemissingdepcomp、_test-driver_など)。

ほとんどの場合、bootstrapスクリプトを各プロジェクトに追加して、これらのツールをすべてこの順序で呼び出すことができます。または、怠惰で_autoreconf -i_を呼び出して、それがプロジェクトで機能するかどうかを確認することもできます。

Configureスクリプトによって生成されたMakefilesを処理した後(およびしばらく)、autotoolsが自動的に処理します。つまり、_configure.ac_または_Makefile.am_を編集すると、上記の正しいツールが再度呼び出され、makeを実行するだけですべてが更新されます。 _Makefile.am_ファイルで構文エラーが発生しないように注意してください。そうしないと、Makefilesが壊れ、makeが実行を拒否される可能性があります。その場合は、 bootstrapスクリプト(またはautoreconf)を手動で実行します。

編集:

automake manual はaclocalについてこれを言っています:

aclocalはなくなると予想されます。

さらに下に:

ユーザーの観点からは、aclocalの削除は苦痛であることが判明する可能性があります。そのスイッチをよりシームレスにするために取ることができる簡単な予防策があります:aclocalを自分で呼び出さないでください。この人をautoreconfとAutomakeの再構築ルールの排他的な制御下に置いてください。

つまり、ツールを直接使用する十分な理由がない限り、_autoreconf -i_を使用して将来を保証します。

55
DanielKO