web-dev-qa-db-ja.com

未定義のマクロ:AC_MSG_ERROR

Configure.acには次のものがあります。

AC_CHECK_PROGS(MAKE,$MAKE make gmake,error)
if test "x$MAKE" = "xerror" ;then
  AC_MSG_ERROR([cannot find a make command])
fi

これは私たちのプロジェクトに長い間ありましたが、いくつかのセットアップでは、このエラーが発生します:

configure.ac:45: error: possibly undefined macro: AC_MSG_ERROR
  If this token and others are legitimate, please use m4_pattern_allow.
  See the Autoconf documentation.

この上に最近追加された行:

AC_CONFIG_MACRO_DIR([m4])
LT_INIT

誰でもこのエラーの原因と問題の追跡方法を説明できますか?

編集:相違点に関する詳細を追加します。

動作するボックス:

uname -a Linux Host1 2.6.38-13-generic #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

automake: 1.11.1
autoconf: 2.67
m4: 1.4.14
libtoolize: 2.2.6b

動作しないボックス:

Linux Host2 2.6.32-35-generic-pae #78-Ubuntu SMP Tue Oct 11 17:01:12 UTC 2011 i686 GNU/Linux

automake: 1.11.1
autoconf: 2.65
m4: 1.4.13
libtoolize: 2.2.6b

新しい編集: 32ビットマシンのみがこの問題を経験します。

更新 CentOSマシンでautoconf 2.67automake 1.11.1libtool 2.2.6b、およびm4 1.4.14を使用して問題を再現できます。これは32ビットマシンの単なるバグですか?

106
dbeer

これと同じ問題があり、pkg-configパッケージが見つからないことがわかりました。

パッケージをインストールすると、すべてが正しく生成されました。

228
mutsu

手動でautoreconf -fiを呼び出す代わりに、aclocal;autoconf;automake; #and whatever elseを使用してaclocal.m4などを適切に設定することをお勧めします。

ACLOCAL_AMFLAGS = -I m4(トップレベルのMakefile.amに)とAC_CONFIG_MACRO_DIR([m4])を追加することは、独自のm4ファイルを使用しない場合、現在でもオプションです。

31
jørgensen

私は自分のconfigure.acでこの問題を抱えていましたが、この場合(そしてGoogleの誰かのために)誤ってAC_MSG_ERRORを引用していたため、文字列として扱われていました。

AX_BOOST_BASE([1.42], [], [AC_MSG_ERROR([Could not find Boost])])

AC_MSG_ERRORマクロを囲む角かっこを削除すると、動作しました:

AX_BOOST_BASE([1.42], [], AC_MSG_ERROR([Could not find Boost]))

pkg-configをインストールする必要があるというコメントや、一部のパッケージにはポイントがありません。 AC_MSG_ERRORは動作するはずで、「パッケージXYZをインストールする必要があります」などの役立つメッセージが表示されますが、何らかの問題のためAC_MSG_ERRORは動作しません。パッケージXYZをインストールすると、間違いなくエラーが消えますが、それはパッケージが存在する場合にのみ、エラーメッセージを出力する必要がないためです!

したがって、pkg-configまたは特定のパッケージをインストールすると、問題が回避されるだけで、実際には修正されません。

27
Malvineous

CentOS 7でこの同じ問題が発生しました

場合によっては、libcurl-develのインストール後に問題が発生しました(libcurlはこのマシンに既にインストールされています)

11
jap1968

私も同様の問題を抱えていました。私の解決策は

apt-get install libcurl4-openssl-dev

(私はすでにlibcurlがインストールされていました)少なくとも私のために働いた..

11
BeatingBytes

Debianの場合。必要なパッケージは次のとおりです。m4automake pkg-config libtool

3
ETech

ローカルの 'm4'ディレクトリを設定していますか?例えば。、

> aclocal -I m4 --install

一部のパッケージには、glibtoolize、autoheader、autoconf、automakeを実行するautogen.shまたはinitgen.shシェルスクリプトが付属しています。私が使用するautogen.shスクリプトは次のとおりです。

#! /bin/sh

case `uname` in Darwin*) glibtoolize --copy ;;
  *) libtoolize --copy ;; esac

autoheader
aclocal -I m4 --install
autoconf

automake --foreign --add-missing --force-missing --copy

編集

ACLOCAL_AMFLAGS = -I m4をトップレベルMakefile.amに追加する必要がある場合があります。

3
Brett Hale

Brewを使用したMac OS X elキャプテンでは、以下を試してください。
brew install pkgconfig

これは私のために働いた。

2
us_david

RHEL7.5でもotto-de/libvmod-uuidで同じ問題が発生しました

「autoconf-archive」パッケージをインストールすることで修正されました

2

MacOS Xを使用する

Sudo port install pkgconfig

解決策でした!

2
Johann Horvat

エラーはautom4teによって生成されます。正しく設定されていれば、そのエラーを生成するコードの部分には「AC_MSG_ERROR」が表示されません。これは、そのポイントの前にm4によって展開されている必要があるためです。エラーは「一部のセットアップ」でのみ発生すると言います。これらのセットアップでは、autoconfのインストールはfubarであることをお勧めします。互換性のないバージョンのm4がインストールされている可能性があります。

2
William Pursell

その問題には2つの理由が考えられます。

  1. aclocalをインストールしませんでした。
    解決策:libtoolをインストールします

    • Ubuntuの場合:Sudo apt-get install libtool
    • Centosの場合:Sudo yum install libtool
  2. lIBTOOL.m4へのパスはエラーです。
    解決:

    1. aclocal --print-ac-dirを使用して、aclocalへの現在のパスを確認します(通常は「/ usr/share/aclocal」または「/ usr/share/aclocal」である必要があります)。
    2. 次に、*。m4ファイルがあるかどうかを確認します。
    3. そうでない場合は、このパスに対応する* .m4ファイルをcpします。(多分cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/またはcp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/

それが役に立てば幸い

1
Cifang

yum install libtoolでこれを解決しました

1
VictorV

Macにpkg-configをインストールすると問題が解決します(brew install pkg-config)

1
Pavan Challa

これは、ローカルで定義されたマクロの引数でを忘れたときに起こりました。それを把握しようとして何時間も費やしました(オートツールをほとんど知らない)...

AC_CHECK_MACRO([Foo]
    AC_LOCAL_DO([......

になるはずだった

AC_CHECK_MACRO([Foo],      # <-- Notice comma, doh!
    AC_LOCAL_DO([......

それは私にエラーなどを与えたはずのように見えますが、私はそれが言ったことだけを行うことができるマクロプロセッサであると思います。

0
squeegee

Ubuntuでも同じ問題(error: possibly undefined macro: AC_MSG_ERROR)がありましたが、上記の答えはうまくいきませんでした。私は解決策を見つけました ここ

それはトリックをしました:

$ LANG=C LC_CTYPE=C ./autogen.sh
0
mschoenebeck