我已下载了一个我想编译的程序,做了一些更改,需要分别运行autogen.sh和./configure并make install.
但是,当我尝试运行autogen.sh时,我收到以下错误;
configure.ac:225: error: possibly undefined macro: AM_PATH_GTK_2_0 If this token and others are legitimate,please use m4_pattern_allow. See the Autoconf documentation.
所以我继续,下载autoconf-2.68,automake-1.11,m4-1.4.16,并尝试了sudo apt-get install libgtk2.0-dev,其中没有一个改变了结果.当我尝试aclocal,我再次得到错误
configure.ac:225: warning: macro `AM_PATH_GTK_2_0' not found in library
我现在卡住了,无处可去.所以我很高兴有任何建议.
解决方法
1)“AM_”在automake的命名空间中,因此m4宏必须来自automake.
2)嗯,它不是在automake中.
3)它可能来自gtk,所以gtk开发人员在命名时出错了
他们的m4宏与automake发生冲突.这是gtk中的一个错误,但我可能需要
下载最新版本的gtk来获取宏.
问题是你没有gtk期望你拥有的m4宏.您可能需要安装libgtk-devel(或类似的东西).如果我是正确的并且libgtk确实正在安装名为AM _…的m4宏,请向开发人员报告这是一个错误.他们正在踩着automakes的命名空间(不幸的是,这是一个非常常见的错误.)
既然你提到下载automake,我认为问题是你运行的aclocal没有查看/usr/share / aclocal,而是在不同的位置(即你在/usr/local中安装了automake)当你安装了libgtk- dev,它可能在/usr/share / aclocal中安装了* .m4文件,但是你需要在/usr/local / share / aclocal(或$prefix / share / aclocal中的那个文件,其中前缀是你用来安装automake的那个.)最简单的解决方案是将该文件复制到$(aclocal –print)即运行“aclocal –print”以查看aclocal在哪里查找m4文件,然后找到libgtk-dev安装的文件,定义了不正确地命名m4宏并将该文件复制到适当的位置.或者(也许是一个更好的解决方案)你可以把一个名为dirlist的文件放在$(aclocal –print)中,其中包含单行“/usr/share / aclocal”,这样你手上安装的aclocal总会查找m4文件安装在/usr/share中.