我在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位机器遇到这种困难。
更新我可以使用autoconf 2.67
,automake 1.11.1
,libtool 2.2.6b
和m4 1.4.14
在CentOS计算机上重现此问题。这只是32位机器的错误吗?
答案 0 :(得分:219)
我遇到了同样的问题,发现pkg-config
包丢失了。
安装软件包后,所有内容都正确生成。
答案 1 :(得分:31)
建议使用autoreconf -fi
而不是手动调用aclocal;autoconf;automake; #and whatever else
来正确填充aclocal.m4,依此类推。
如果你不使用任何自己的m4文件,添加ACLOCAL_AMFLAGS = -I m4
(到顶级Makefile.am)和AC_CONFIG_MACRO_DIR([m4])
目前仍然是可选的,但当然,这样做会使这个过程沉默:)< / p>
答案 2 :(得分:27)
我自己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
或特定软件包只是绕过问题,它实际上并没有修复它。
答案 3 :(得分:11)
我在CentOS 7下遇到过同样的问题
在可能的情况下,安装libcurl-devel
后问题仍然存在(此计算机上已安装libcurl
)
答案 4 :(得分:10)
我也有类似的问题..我的解决方案是
StateMilk_with_2_h <- StateMilk
StateMilk_with_2_h$State[StateMilk_with_2_h$State == "Chattisgarh"] <- "Chhattisgarh"
plot(gvisGeoChart(StateMilk_with_2_h, "State", "Total",
options=list(region="IN", displayMode="regions", resolution="provinces", width=600, height=400)))
(我已经安装了libcurl) 至少为我工作..
答案 5 :(得分:3)
您是否在设置本地“m4
”目录?如,
> aclocal -I m4 --install
某些软件包附带autogen.sh
或initgen.sh
shell脚本来运行glibtoolize,autoheader,autoconf,automake。这是我使用的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
。
答案 6 :(得分:3)
对于Debian。 必需的包是: m4 automake pkg-config libtool
答案 7 :(得分:2)
错误由autom4te生成。如果设置正确,那么产生该错误的代码部分永远不会看到'AC_MSG_ERROR',因为它应该在该点之前被m4扩展。你说错误只发生在“某些设置”中。我建议在这些设置中,你的autoconf安装是fubar。可能你安装了不兼容的m4版本。
答案 8 :(得分:2)
使用MacOS X
sudo port install pkgconfig
是解决方案!
答案 9 :(得分:2)
在使用brew的Mac OS X el队长上,尝试:
brew install pkgconfig
这对我有用。
答案 10 :(得分:2)
我在RHEL7.5上使用otto-de / libvmod-uuid遇到了同样的问题
已通过安装“ autoconf-archive”软件包对其进行了修复
答案 11 :(得分:1)
我在Mac上安装pkg-config(brew install pkg-config)
后解决了我的问题答案 12 :(得分:1)
我通过<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
答案 13 :(得分:1)
这个问题有两个可能的原因:
没有安装aclocal 解决方案:安装libtool
sudo apt-get install libtool
sudo yum install libtool
LIBTOOL.m4的路径是错误的 解决方案:
aclocal --print-ac-dir
检查aclocal的当前路径。(通常应该是&#34; / usr / share / aclocal&#34;或&#34; / usr / share / aclocal&# 34)cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/
或cp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/
)希望有所帮助
答案 14 :(得分:0)
当尝试使用jhbuild构建amtk和utthpmock时,我遇到了类似的问题。
我需要安装最新版本的autoconf-archive。指示位于https://github.com/autoconf-archive/autoconf-archive/blob/master/README-maint。最后,我又做了一个sudo make install
。
最后一步是更新我的ACLOCAL_PATH
:
echo 'export ACLOCAL_PATH=$ACLOCAL_PATH:/usr/local/share/aclocal' >> ~/.bashrc
source ~/.bashrc
之后,终于找到了所有宏,并且构建成功。
答案 15 :(得分:0)
我刚刚失去了在这一个几个小时。我的结论:
答案 16 :(得分:0)
我在Ubuntu上遇到了同样的问题(error: possibly undefined macro: AC_MSG_ERROR
),但上面的答案并不适用于我。我找到了解决方案here
这就是诀窍:
$ LANG=C LC_CTYPE=C ./autogen.sh
答案 17 :(得分:0)
当我忘记了一个本地定义的宏的参数时,这发生在我身上。花了几个小时试图解决它(几乎不熟悉autotools)......
AC_CHECK_MACRO([Foo]
AC_LOCAL_DO([......
应该是
AC_CHECK_MACRO([Foo], # <-- Notice comma, doh!
AC_LOCAL_DO([......
似乎它应该给我一个错误或类似的错误,但我认为它是一个宏处理器,它只能做它所说的。
答案 18 :(得分:-1)
我在Macports端口遇到了同样的问题&#34; openocd&#34; (在本地修改了Portfile以使用git存储库)在新安装的计算机上。
永久性修复很容易,在Portfile中定义对pkgconfig的依赖: depends_lib-append port:pkgconfig