Autoconf,Libtool和未定义的AC_PROG_LIBTOOL


17

我正在尝试构建一个库,自述文件的说明是先调用configure.ac,然后进行make。

不幸的是,我遇到了一个错误:

configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token is legitimate please use m4_pattern_allow

现在,我知道我已经安装了libtool(我正在运行Scientific Linux 6.2(未升级),并且已经使用yum --downloadonly来获取automake,autoconf,libtool和libtool-devel的rpm,以防万一。

它们已安装,并且libtool当前位于/ usr / share / libtool中。但是,autoconf似乎找不到。

所有的google结果都是'install libtool'类型的,对我完全没有帮助。任何帮助或指导将不胜感激。我不确定问题是否在于rpm -i在这里弄错了libtool,还是我需要将/ usr / share / libtool链接到其他地方(以便其他所有东西都可以找到它)。

Answers:


11

我对在各种论坛上的Internet上找到的所有“仅重新安装”答案都不满意,因此必须并决心解决此问题而不安装非发行版libtool。(我在CentOS 7上运行。)

当我阅读https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html时,头顶的灯泡点亮。用于查找宏文件的搜索路径是定义的路径--prefix,默认情况下通常为/usr/local。所以对于AUTOCONF将被安装到一个包/usr/local的搜索/usr/local/share/aclocal-APIVERSION/usr/local/share/aclocal

在包括CentOS7在内的许多发行版中,的七个宏文件libtools都安装在下,/usr/share/aclocal而不是下/usr/local/share/aclocal。因此,当您要构建的软件包的前缀设置为时,找不到它们/usr/local

要解决此问题(如果您已经有/usr/local/share/aclocal目录),请以超级用户身份键入以下内容:

for file in argz libtool ltdl ltoptions ltsugar ltversion lt~obsolete
do
  ln -s /usr/share/aclocal/$file.m4 /usr/local/share/aclocal/$file.m4
done

要解决此问题(如果您没有/usr/local/share/aclocal目录),请以超级用户身份键入以下内容:

ln -s /usr/share/aclocal /usr/local/share/aclocal

Voilà-问题解决了。


很棒的建议,或多或少为我在CentOS 7集群上解决了这个问题(严重的问题,持续的)。如果项目附带,autogen.sh您还可以修改该exec autoreconf行以将-I /usr/share/alocal其与其他选项一起包括在内,这是我实际上所做的。然后调用生成configure脚本的实际命令autoreconf -v -f -i -I /usr/share/aclocal
TheDudeAbides

11

您必须安装libtool

在ubuntu中:

sudo apt-get install libtool

在基于redhat的情况下:

yum install libtool

5
问题说已经不是问题了。
凯文·潘科

9

我还将libtool和其他工具安装到了非标准目录中,该错误实际上是autoconf无法找到libtool的m4宏。是的,这可能是由于未安装libtool引起的,也可能是由于它位于非标准的安装目录中引起的。这是我的解决方法:

export ACLOCAL_PATH=$HOME/install/libtool/share/aclocal:$ACLOCAL_PATH

我放在我的 .bash_profile


2
另一种方法是:autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

您需要重新安装它才能修复错误,因此请按照以下步骤操作:

1]删除当前的libtool(如果已安装): sudo apt-get purge libtool

2]从官方网站https://www.gnu.org/software/libtool/下载

3]解压缩: tar -xzvf "name of the tar_file"

4]输入文件夹并键入: ./configure && make

5]安装: sudo make install

至此,错误应该得到解决!


0
configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token is legitimate please use m4_pattern_allow

现在,我知道我已经安装了libtool ...

我发现这通常表明您没有安装libtool开发工具(尽管您可能已经libtool安装了)。

您应该libltdl-dev在Debian和Ubuntu上安装;还有libtool-ltdl-develFedora。


这是对软件包的搜索。

软呢帽

$ yum search libtool
======================== Name Exactly Matched: libtool =========================
libtool.x86_64 : The GNU Portable Library Tool
======================= Summary & Name Matched: libtool ========================
libtool-ltdl.x86_64 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl.i686 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl-devel.x86_64 : Tools needed for development using the GNU Libtool
                          : Dynamic Module Loader
libtool-ltdl-devel.i686 : Tools needed for development using the GNU Libtool
                        : Dynamic Module Loader
=========================== Summary Matched: libtool ===========================
mingw32-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader
mingw64-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader

的Ubuntu

$ apt-cache search libtool
autotools-dev - Update infrastructure for config.{guess,sub} files
libltdl-dev - System independent dlopen wrapper for GNU libtool
libltdl7 - System independent dlopen wrapper for GNU libtool
libtool - Generic library support script
libtool-bin - Generic library support script (libtool binary)
libtool-doc - Generic library support script
...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.