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.67
、automake 1.11.1
、libtool 2.2.6b
、およびm4 1.4.14
を使用して問題を再現できます。これは32ビットマシンの単なるバグですか?
これと同じ問題があり、pkg-config
パッケージが見つからないことがわかりました。
パッケージをインストールすると、すべてが正しく生成されました。
手動でautoreconf -fi
を呼び出す代わりに、aclocal;autoconf;automake; #and whatever else
を使用してaclocal.m4などを適切に設定することをお勧めします。
ACLOCAL_AMFLAGS = -I m4
(トップレベルのMakefile.amに)とAC_CONFIG_MACRO_DIR([m4])
を追加することは、独自のm4ファイルを使用しない場合、現在でもオプションです。
私は自分の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
または特定のパッケージをインストールすると、問題が回避されるだけで、実際には修正されません。
CentOS 7でこの同じ問題が発生しました
場合によっては、libcurl-devel
のインストール後に問題が発生しました(libcurl
はこのマシンに既にインストールされています)
私も同様の問題を抱えていました。私の解決策は
apt-get install libcurl4-openssl-dev
(私はすでにlibcurlがインストールされていました)少なくとも私のために働いた..
Debianの場合。必要なパッケージは次のとおりです。m4automake pkg-config libtool
ローカルの '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
に追加する必要がある場合があります。
Brewを使用したMac OS X elキャプテンでは、以下を試してください。
brew install pkgconfig
これは私のために働いた。
RHEL7.5でもotto-de/libvmod-uuidで同じ問題が発生しました
「autoconf-archive」パッケージをインストールすることで修正されました
MacOS Xを使用する
Sudo port install pkgconfig
解決策でした!
エラーはautom4teによって生成されます。正しく設定されていれば、そのエラーを生成するコードの部分には「AC_MSG_ERROR」が表示されません。これは、そのポイントの前にm4によって展開されている必要があるためです。エラーは「一部のセットアップ」でのみ発生すると言います。これらのセットアップでは、autoconfのインストールはfubarであることをお勧めします。互換性のないバージョンのm4がインストールされている可能性があります。
その問題には2つの理由が考えられます。
aclocalをインストールしませんでした。
解決策:libtoolをインストールします
Sudo apt-get install libtool
Sudo yum install libtool
lIBTOOL.m4へのパスはエラーです。
解決:
aclocal --print-ac-dir
を使用して、aclocalへの現在のパスを確認します(通常は「/ usr/share/aclocal」または「/ usr/share/aclocal」である必要があります)。cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/
またはcp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/
)それが役に立てば幸い
yum install libtool
でこれを解決しました
Macにpkg-configをインストールすると問題が解決します(brew install pkg-config)
これは、ローカルで定義されたマクロの引数でを忘れたときに起こりました。それを把握しようとして何時間も費やしました(オートツールをほとんど知らない)...
AC_CHECK_MACRO([Foo]
AC_LOCAL_DO([......
になるはずだった
AC_CHECK_MACRO([Foo], # <-- Notice comma, doh!
AC_LOCAL_DO([......
それは私にエラーなどを与えたはずのように見えますが、私はそれが言ったことだけを行うことができるマクロプロセッサであると思います。
Ubuntuでも同じ問題(error: possibly undefined macro: AC_MSG_ERROR
)がありましたが、上記の答えはうまくいきませんでした。私は解決策を見つけました ここ
それはトリックをしました:
$ LANG=C LC_CTYPE=C ./autogen.sh