【问题标题】:autoconf error on ubuntu 11.04ubuntu 11.04 上的 autoconf 错误
【发布时间】:2011-12-09 23:41:04
【问题描述】:

我一直在谷歌搜索和安装库,但我无法用 autoconf 完全解决这个问题。

我已经下载了一个我想编译的程序,做了一些修改,需要分别运行 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

我现在被困住了,无处可去。所以我很高兴有任何建议。

【问题讨论】:

    标签: linux compilation gtk autoconf automake


    【解决方案1】:

    给定名称 AM_PATH_GTK_2_0,可以进行以下一系列观察: 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 的文件放入包含单行“/usr/share/aclocal”的 $(aclocal --print) 中,这样您手动安装的 aclocal 将始终查找 m4 文件安装在 /usr/share 中。

    【讨论】:

    • 但我确实安装了 libgtk2.0-dev。所以你确实相信这个错误来自我正在尝试编译的程序的开发人员?
    • 就是这样! 'sudo cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal-1.11/' 解决了这个问题。谢谢你的帮助:)
    • @fizboz:使用sudo cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal-1.11/,您的安装处于危险之中。下次您升级任何将某些宏放入 /usr/share/aclocal/ 的软件包时,您仍将使用您放入其他目录的该宏的过时版本。此外,/usr/local/share/aclocal-1.11/ 目录应该只包含 Automake 宏。正如 William 所建议的,更好的解决方法是 echo /usr/share/aclocal > /usr/local/share/aclocal/dirlist
    • @adl -- 我认为“将您的安装置于危险之中”太强大了。没错,任何时候 /usr/local/bin/aclocal 运行,安装的宏都会丢失,但我认为正确的解决方案是从系统中卸载 automake!
    • @WilliamPursell:对我来说,这类似于将一些头文件复制到/usr/lib/i386-linux-gnu/gcc/i486-linux-gnu/4.6.1/include,因为gcc 没有找到它们:没有人会这样做。 .../share/aclocal-1.11/ 是一个不应被篡改的私有目录。不过,我同意你的观点,卸载所有手动安装的软件包会更干净。
    【解决方案2】:

    我知道有点晚了,但你只需要安装库libgtk2.0-dev

    sudo apt-get install libgtk2.0-dev
    

    如果您遇到与 GLIB 相关的错误,请同时安装 libglib2.0-dev

    sudo apt-get install libglib2.0-dev
    

    【讨论】:

    • 谢谢!非常快速和简单的解决方案。
    【解决方案3】:

    如果在 CenOS/RedHat 上遇到同样的问题:

    sudo yum install gtk2-devel
    

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2012-02-06
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多