Autoconf、Libtool 和未定义的 AC_PROG_LIBTOOL

Autoconf、Libtool 和未定义的 AC_PROG_LIBTOOL

我正在尝试构建一个库,README 说明是调用 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 的 rpms 以防万一)。

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

所有谷歌搜索结果都是“安装 libtool”类型,这对我一点帮助都没有。任何帮助或指导都将不胜感激。我不确定问题是否是 rpm -i 搞砸了获取 libtool,或者我是否需要将 /usr/share/libtool 链接到其他地方(这样 which 和其他一切都可以找到它)。

答案1

我对在互联网上各个论坛上找到的所有“只需重新安装”答案都不满意,因此我决心在不安装非发行版 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,请以 root 身份输入以下命令:

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目录,要修复此问题,请以 root 身份输入以下命令:

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

瞧——问题解决了。

答案2

你必须安装 libtool

在Ubuntu中:

sudo apt-get install libtool

在redhat基础上:

yum install libtool

答案3

我还将 libtool 和其他程序安装到了非标准目录中,这个错误实际上是 autoconf 无法找到 libtool 的 m4 宏。是的,这可能是由于未安装 libtool 导致的,也可能是由于 libtool 位于非标准安装目录中。以下是我的修复方法:

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

我把它放在我的.bash_profile

答案4

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 上安装。


以下是对包的搜索。

Fedora

$ 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
...

相关内容