可能未定义的宏:AC_PROG_LIBTOOL

时间:2018-12-05 15:56:35

标签: linux autotools libtool

我想构建protobuf,所以我只将软件包和cd克隆到目录中。 当我键入./autogen.sh时,发生了一些错误。 when I type ./autogen.sh 我收到回叫:

configure.ac:104: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /home/zhangxl/my/autoconf/bin/autoconf failed with exit status: 1

有人说我应该安装libtool,但是我已经安装了autoconf,automake,libtool和m4​​,但是它们都是从源代码构建的,因为我无法获得sudo密码。 enter image description here 这是我的.bashrc文件:

export PATH=$PATH:/home/zhangxl/my/libtool/bin
export CPLUS_INCLUDE_PATH=/hpme/zhangxl/my/libtool/include:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/home/zhangxl/my/libtool/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/home/zhangxl/my/libtool/lib:$LD_LIBRARY_PATH

我认为.bashrc文件可能不正确,所以我想寻求帮助,非常感谢您的回答。

3 个答案:

答案 0 :(得分:0)

  

当我键入./autogen.sh时,发生了一些错误。

它们不是普通版本的一部分 是Autotools的设计目标。 Autotools用于构建构建系统,这是软件包维护者的责任。仅仅想构建项目的人根本不应该(按照Autotools的哲学)调用Autotools,而是应该使用已经提供给他们的构建系统,该构建系统由configure脚本Makefile组成。和标头模板 etc ..

因此,首先要尝试的是始终解压缩发行版的干净副本,并且在不运行autogen.shautoreconf或类似的的情况下,执行标准configure; make; make install序列。在这种情况下,甚至不需要在构建主机上安装Autotools。仅当需要针对您的环境修改现有的构建系统,或者一开始没有提供任何内容时,才应考虑(重新)构建构建系统。

如果确实需要重建构建系统(这并不是GNU所希望的那样普遍),那么最顺畅的方法是使用软件包维护者使用的相同版本的Autotools。从某种意义上讲,较新的版本通常是可行的替代品,但有时它们需要对Autotools输入进行调整。较旧的版本可能会出现问题。但是,您必须始终清楚,这使您成为包维护者的角色,而不仅仅是包构建者。重建构建系统使您需要解决特定于此工作的问题。

有时候,可以通过指示自动工具替换它们安装到项目源代码树中的脚本和本地m4宏,部分或全部解决版本兼容性问题。如果项目提供了autogen.sh,则可能会或可能不会这样做。从源代码树的根目录运行的命令autoreconf --install --force将处理所有这些Autotools件,但可能不会执行autogen.sh做的其他事情。可能值得您花些时间检查一下特定的autogen.sh的功能,并且可能依次运行autoreconfautogen.sh可能会很有用。

  

我认为.bashrc文件可能不正确

您提供的特定错误消息不太可能反映您的环境配置有问题。它可能反映了您自己的DIY本地Autotools的问题-更有可能是Libtool-但是,它很有可能反映了软件包维护者使用的Autotools版本与您所构建的版本之间的不兼容性。

答案 1 :(得分:0)

libtool不仅仅是一个(一组)二进制文件。它还包括几个m4宏(供自动工具使用),其中包括AC_PROG_LIBTOOL宏。

由于您没有正确安装libtool,因此autoconf找不到这些其他宏。

查找诸如libtool.m4ltoptions.m4 ...之类的文件(可能在/home/zhangxl/my/libtool/share/aclocal/中的某个位置,然后将路径添加到autoreconf调用中。类似:

autoreconf  -f -i -Wall,no-obsolete -I/home/zhangxl/my/libtool/share/aclocal/

(如果您想知道:autoreconf在该脚本的结尾附近正在调用autogen.sh;那么当您调用autogen.sh时,大多数事情已经成功了,只有调用autoreconf失败,这就是上面的行所解决的问题。如果您想再次调用autogen.sh,则必须使用 autoreconf 更改行,如上所示)

答案 2 :(得分:0)

确保您已安装 if (document.getElementById("frequency").value>=75 && document.getElementById("notaFinal").value>=7){ //change background to green }如果 libtool 在您的系统上找不到 autoconf,则可能会产生此错误消息。就我而言,错误看起来有点像这样:

libtool

我通过使用 apt 安装 autoreconf: configure.ac: not using Libtool autoreconf: running: /usr/bin/autoconf ... configure.ac:41: error: possibly undefined macro: AC_PROG_LIBTOOL If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. 解决了这个问题。

libtool